Etag和Expire

Etag和Expire

作者:admin |  时间:2014-03-03 |  浏览:557 |  0 条评论

Etag

在 HTTP1.1中有介绍,主要的作用就是在(css file, image, javascript file)文件后面添加一个唯一的参数(相当于查询参数字符串),Etag有服务器端生成,并且随着文件的改变而改变,这样浏览器端就会只重新请求获取 Etag发生变化的文件,减少浏览器端数据的流量,加快浏览器的反应速度,重要的是减轻服务器端的压力,所以服务器端Etag的实现就比较重要了。

下面分别说下在Apache和Lighttpd中怎样配置Etag

Apache Etag

在Apache中设置Etag的支持比较简单,只用在含有静态文件的目录中建立一个文件.htaccess, 里面加入:

FileETag MTime Size

这样就行了,详细的可以参考Apache的文档页:Documentation

Lighttpd Etag

在Lighttpd中设置Etag支持:

etag.use-inode: 是否使用inode作为Etag

etag.use-mtime: 是否使用文件修改时间作为Etag

etag.use-size: 是否使用文件大小作为Etag

static-file.etags: 是否启用Etag的功能

第四个参数肯定是要enable的, 前面三个就看实际的需要来选吧,推荐使用修改时间

Expires

过 期时间是HTTP响应(response)的头部控制信息,浏览器会在指定过期时间内使用本地缓存,不用重新加载,对应的缓存对象主要是静态文件,如 css,image, javascript; 可以在服务器端进行全局设置,也可以应用端进行设置,这里我会说下服务器端的设置

Apache

首先要确定Apache是否支持了mod_expired模块

然后在Apache的配置文件中加入:

ExpiresActive on ExpiresDefault "access plus 1 year"

可以看出,配置时可以指定设置Expire对象的文件类型,以及过期时间,这里是一年后

Lighttpd

Lighttpd设置expire也要先查看是否支持了mod_expire模块,查看vlighttpd.conf文件中 是否开启了该模块

然后就可以设置了:

下面的设置是让URI中所有images目录下的文件1小时后过期;
expire.url = ( "/images/" => "access 1 hours" )
下面是让作用于images目录及其子目录的文件;

$HTTP["url"] =~ "^/images/" { expire.url = ( "" => "access 1 hours" ) }

也可以指定文件的类型;

$HTTP["url"] =~ "/.(jpg|gif|png|css|js)$" { expire.url = ( "" => "access 1 hours" ) }

其他

设置较长的过期时间后如果想要客户端重新下载文件怎么办呢,比如当你修改了javascript或者

是css文件后,这时可以改变文件的文件名,最合适的做法是给文件加上一个版本号,

比如main_1.0.1.js, 这也是yahoo的做法。

当服务器的环境是cluster时,Etag的使用可能就要考虑的更多了,因为每个服务器生成的Etag

不一样,所以最终的浏览器每次都检测到文件的Etag不一样而去重新请求,这里就不多说了。

转载:http://blog.csdn.net/gx101495/article/details/4542648

本文标签:

相关推荐

Mysql临时文件存放空间不足问题解决
Posted on 04月13日
Hadoop集群配置
Posted on 03月16日
什么是“长连接”和“短连接”?
Posted on 02月18日
云主机基本常识
Posted on 02月22日

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>