ETag使用效果对比及ETag配置图文教程

 更新时间:2016年05月13日 18:42:55   投稿:mdxy-dxy  
强烈建议大家设置sitemap的ETag,简简单单的一个小动作就能看到相对明显的效果还是很不错的,需要的朋友可以参考下

ETag使用效果对比及ETag配置教程 脚本之家

提起向百度提交数据,大家基本都会想到sitemap,最近又推出的etag是什么东东?真的能有效果吗?

sitemap是解决网站收录至关重要的途径之一,而通常sitemap的更新都不是很及时,并且体量都相对较大,此时也消耗了相应的网站流量及带宽。而ETag可以用来标示网页是否发生了变化,如果没有变化返回304状态码,就不用再重新传输整个网页了。

在我们的sitemap配置了ETag之后,对日志一段时间的监测发现,其sitemap响应时间以及耗时的平均时间均大幅度下降,爬虫访问 sitemap文件的次数有所增加,对于收录而言,通过图表也能看出相对的增长曲线,我们的整体收录率大致提升范围在2% – 5%左右。所以在此,强烈建议大家设置sitemap的ETag,简简单单的一个小动作就能看到相对明显的效果还是很不错的。

ETag全称EntityTags,HTTP协议规格说明中定义“ETag”为“被请求变量的实体值”。我们也可以把ETag理解为是一个客户端与 服务器关联的记号。这个记号告诉客户端,当前网页在上次请求之后是否有发生变化,当发生变化时,ETag的值重新计算,并返回200状态码。如果没有变 化,返回304状态码。从而不会重新加载整个页面信息。

如下,是我司站点的sitemap文件的头信息:

ETag是什么 ETag标准 ETag响应头 httpETag

我们看到,ETag中包含了一连串的数据,这就是计算出来的一个值,如果它发生变化,说明其页面内容一定发生了变化。如果页面没有发生变化时,头信息应该如下: 

ETag是什么 ETag标准 ETag响应头 httpETag

在我们与技术沟通配置ETag时,需要通过此种方式进行验证。第一次访问200状态码,有ETag的一行文本,再次访问该页面时,状态码为304,ETag的值不变。至此,我们就可以确定ETag配置成功。

另外,sitemap启用Etag后:

1、百度可以更及时地响应sitemap的更新;

2、页面没有更新的情况下,对流量的消耗极小;

3、百度更加及时的抓取sitemap,便于更好的收录;

但多数情况下,ETag会与Last-Modified一起使用,这样可利用客户端(例如浏览器)的缓存。因为服务器首先产生Last- Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓 存。

站点服务器如何配置ETag?

最好是对全站进行配置ETag,这样对于站点而言,在带宽消耗、爬虫抓取上的提升还是会有很大收益的。

一、Apache  

Apache根据配置文件中的配置来设置Etag值,默认的Apache的FileEtag设置为:

FileEtagINode Mtime Size

也就是根据这三个属性来生成Etag值,他们之间通过一些算法来实现,并输出成hex的格式,相邻属性之间用-分隔,比如:"2e681a- 6-5d044840",这里面的三个段,分别代表了INode,MTime,Size根据算法算出的值的Hex格式,可以改变Apache的 FileEtag设置,比如设置成FileEtagSize,那么得到的Etag可能为:"6",设置了几个段,Etag值就有几个段。

详细配置:

步骤1

在要启用ETag的目录下增加.htaccess文件并在其中增加一行,如图:FileETagMTime Size

ETag是什么 ETag标准 ETag响应头 httpETag

以覆盖默认的Innode MTime Size的ETag,因为默认的ETag使用到的Innode会导致相同的文件在分布式服务器上产生的ETag不同。

步骤2

如果.htacces文件已经存在,请确保要启用ETag的目录/.htacces文件中没有FileETagNone。如果存在FileETag None,请删去该行。

检查没有用mod_headers将ETag除去,即httpd.conf文件中没有出现下面的语句,

LoadModuleheaders_module modules/mod_headers.so 

Headerunset ETag

ETag是什么 ETag标准 ETag响应头 httpETag

如果出现如图情况,请删除Headerunset ETag这一行。

步骤3

重新启动httpd,就启用ETag了。

二、Nginx

步骤1

确认Nginx版本,命令:Nginx安装目录/sbin/nginx–v,

ETag是什么 ETag标准 ETag响应头 httpETag

版本为1.7.3及更高,继续步骤2;版本为1.7.3以下,1.3.3及以上,进行步骤3;版本为1.3.3以下,不支持ETag,请升级您的Nginx。

步骤2

确认没有关闭ETag:打开Nginx的配置文件nginx.conf(默认位置Nginx安装目录/conf/),确保其中没有出现etagoff;,下图为出现的情况,请将此行删除。

ETag是什么 ETag标准 ETag响应头 httpETag

确认没有使用ngx_headers_more清除ETag头:同样在配置文件中不能出现如下语句的任意一句,如果出现请将其删除。

ETag是什么 ETag标准 ETag响应头 httpETag

重新启动Nginx,就启用ETag功能了。

步骤3

查看是否开启了gzip,且是否和etag出现冲突,出现冲突去步骤4,没有去步骤2。

打开Nginx的配置文件nginx.conf(默认位置Nginx安装目录/conf/),其中出现gzip on;语句证明开启了gzip,如图

ETag是什么 ETag标准 ETag响应头 httpETag

开启gzip时,可能与etag出现冲突,用浏览器多次请求此网站的静态元素,如果只返回200,不返回304,证明存在冲突,请去步骤4;没有冲突去步骤2。

 

步骤4

请关闭gzip,即将上一步中的gzipon;改为gzip off;然后去步骤2。

若不想关闭gzip,并要开启ETag,同时仍要坚持使用当前的Nginx版本,只能修改源码并重新编译。

下载此版本安装包并解压,将其目录下/src/http/modules/ngx_http_gzip_filter_module.c

文件中约309行左右的ngx_http_clear_etag(r);一行注释掉或删掉。如下图

ETag是什么 ETag标准 ETag响应头 httpETag

如果没有找到ngx_http_clear_etag(r);而是发现ngx_http_weak_etag(r);如下图,证明此Nginx

没有gzip和etag冲突的问题,不必进行任何修改。

ETag是什么 ETag标准 ETag响应头 httpETag

重新编译源码安装Nginx,解决这个冲突,然后去步骤2。

三、IIS

IIS7是默认开启ETag的,如果没有ETag,请按以下步骤设置。

打开Internet Information Services (IIS) Manager,如图双击HTTP响应头部(HTTPResponse Headers),

ETag是什么 ETag标准 ETag响应头 httpETag

选择No Grouping标签,在空白处右键选择Add。

ETag是什么 ETag标准 ETag响应头 httpETag

设置Name为ETag,Value为双引号

ETag是什么 ETag标准 ETag响应头 httpETag

配置web.config:­

<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="ETag"value="&quot;&quot;" />
</customHeaders>
</httpProtocol>
...
</system.webServer>

完成。

ETag是什么 ETag标准 ETag响应头 httpETag

相关文章

  • 生产服务器突然本机无法访问本机IP的端口的问题及解决方法

    生产服务器突然本机无法访问本机IP的端口的问题及解决方法

    生产服务器突然无法访问自己本机IP地址的端口,通过localhost或者127.0.0.1都可以正常访问,本文给大家分享生产服务器突然本机无法访问本机IP的端口的问题及解决方法,感兴趣的朋友一起看看吧
    2023-11-11
  • 运维管理器Fabric使用方法

    运维管理器Fabric使用方法

    Fabric是基于Python2.5版本以上实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能
    2016-08-08
  • 阿里龙蜥操作系统(Anolis OS)的虚拟机安装

    阿里龙蜥操作系统(Anolis OS)的虚拟机安装

    本文主要介绍了阿里龙蜥操作系统(Anolis OS)的虚拟机安装,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • 服务器ssh实现钉钉机器人告警

    服务器ssh实现钉钉机器人告警

    钉钉开放平台机器人可应用消息推送、监控报警等多种场景中,这篇文章主要介绍了服务器ssh实现钉钉机器人告警方法,需要的朋友可以参考下
    2024-07-07
  • Web服务器和应用服务器之间的区别详解

    Web服务器和应用服务器之间的区别详解

    这篇文章主要介绍了Web服务器和应用服务器之间的区别详解,应用服务器是为客户端提供对业务逻辑的访问这种服务器,根据客户端的请求会将数据转化为动态内容,一般还需要数据库的支持,应用服务器的搭建很多时候依赖于应用程序的开发语言,需要的朋友可以参考下
    2023-07-07
  • 七牛云对象存储”get from image source failed: E502“报错解决

    七牛云对象存储”get from image source failed:&nb

    今天发现cdn无法从源站获取图片了,经过排查是七牛云的云存储没有正确设置,更改的域名没有将下面的回源host设置好,就出现了问题,下面的具体的设置步骤
    2025-02-02
  • Red Hat 8.0 使用yum报错的解决方法:This system is not registered to Red Hat Subscription Management

    Red Hat 8.0 使用yum报错的解决方法:This system&nbs

    红帽使用yum源时提示报错,因为yum源需要付费注册,解决方法包括查看已安装的yum包,删除所有yum包并检查,查看系统版本及内核信息,下载适合的新的镜像源,配置依赖源,备份原始repo文件并下载阿里云的repo文件,清除原始配置并使其生效,感兴趣的朋友一起看看吧
    2024-11-11
  • LVS(Linux Virtual Server)Linux 虚拟服务器介绍及配置(负载均衡系统)

    LVS(Linux Virtual Server)Linux 虚拟服务器介绍及配置(负载均衡系统)

    LVS(Linux Virtual Server) 是Unix-like系统中的一个虚拟服务器,是国内贡献给开源组织的一个最优秀的项目之一
    2012-05-05
  • CentOS 7.0下SVN服务器图文搭建教程

    CentOS 7.0下SVN服务器图文搭建教程

    这篇文章主要介绍了CentOS 7.0下SVN服务器的图文搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Ubuntu服务器中Swapper与虚拟内存配合的方法

    Ubuntu服务器中Swapper与虚拟内存配合的方法

    当物理内存不足时,Swapper会帮助系统将不活跃的数据从内存转移到磁盘上的交换空间(Swap),以释放内存给需要更多资源的进程,下面将详细说明Swapper和虚拟内存如何协作工作,并阐述它们在系统性能中的作用,感兴趣的朋友一起看看吧
    2025-03-03

最新评论