apache启用ETag

2017-01-06 15:40 阅读 () 评论 () 喜欢 () etag
Apache如何启用ETag,提高访问速度ETag全称EntityTags,HTTP协议规格说明中定义“ETag”为“被请求变量的实体值”。我们也可以把ETag理解为是一个客户端与服务器关联的记号。这个记号告诉客户端,当前网页在上次请求之后是否有发生变化,当发生变化时,ETag的

Apache如何启用ETag,提高访问速度


ETag全称EntityTags,HTTP协议规格说明中定义“ETag”为“被请求变量的实体值”。

我们也可以把ETag理解为是一个客户端与服务器关联的记号。

这个记号告诉客户端,当前网页在上次请求之后是否有发生变化,当发生变化时,ETag的值重新计算,并返回200状态码。

如果没有变化,返回304状态码。从而不会重新加载整个页面信息。

以下会告诉你,Apache如何开启ETag。


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

以覆盖默认的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 
       Header unset ETag


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

步骤3      重新启动httpd,就启用ETag了。