{
    分享网正式开通,我们为大家提供免费资源,欢迎大家踊跃投稿!

Apache配置Etag详解

Etag主要为了解决Last-Modified无法解决的一些问题.他能比Last_Modified更加精确的知道文件是否被修改过.如果有个 文件修改非常频繁,比如在秒以下的时间内进行修改,比如1秒内修改了10次,If-Modified-Since能检查只能秒级的修改,所以这种修改无法判断。原因是UNIX记录MTIME只能精确到秒.所以我们选择生成Etag,因为Etag可以综合Inode,MTime和Size,可以避免这个问题。

在Apache中设置Etag的支持比较简单,只需要在apache的 .htaccess文件配置中加入下面的内容就可以了:


FileEtagINode Mtime Size
 

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

注解:

Etag根据这三个属性来生成值,他们之间通过一些算法来实现,并输出成hex的格式,相邻属性之间用-分隔,比如:"2e681a-6-5d044840",这里面的三个段,分别代表了INode,MTime,Size根据算法算出的值的Hex格式,可以改变Apache的FileEtag设置,比如设置成FileEtagSize,那么得到的Etag可能为:"6",设置了几个段,Etag值就有几个段。FileETag指令配置了当文档是基于一个文件时用以创建ETag(实体标签)应答头的文件的属性(ETag的值用于进行缓冲管理以节约网 络带宽)。ETag的值由文件的inode(索引节点)、大小、最后修改时间决定。FileETag指令可以让您选择(如果您想进行选择)这其中哪些要素将被使用。主要关键字如下:

INode:文件的索引节点(inode)数

MTime:文件的最后修改日期及时间

Size:文件的字节数

All:所有存在的域,等价于:FileETag INode MTime Size

None:如果一个文档是基于文件的,则不在应答中包含任何ETag头

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

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


  LoadModuleheaders_module modules/mod_headers.so
  Headerunset ETag
 

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

在大型多WEB集群时,使用ETag时有问题,所以有人建议使用WEB集群时不要使用ETag,其实很好解决,因为多服务器时,INode不一样,所以不同的服务器生成的ETag不一样,所以用户有可能重复下载(这时ETag就会不准),明白了上面的原理和设置后,解决方法也很容易,让ETag后面 二个参数,MTime和Size就好了。只要ETag的计算没有INode参于计算,就会很准了。


资源均来自第三方,谨慎下载,前往第三方网站下载


米微资源分享网 , 版权所有丨本站资源仅限于学习研究,严禁从事商业或者非法活动!丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Apache配置Etag详解
喜欢 ()分享 (0)