在apache服务器端控制文件缓存的设置

By SuperTaoer | 五月 21, 2009
Under: 程序 技术 周边
Views: 16,944 views

网站必不可少的得有图片,css,js等文件。
而这些文件通常是会被浏览器缓存的,但是当你修改(更新)了这些文件,如果告诉浏览器去从服务器上重新下载呢?
下面提供几种方法:

1.通常写css的或者js的方式都是

1
2
3
<script type="text/javascript" src="http://xxx.com/js/xxx.js">
</script>
<link href="http://xxx.com/style/xxx.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />

这个你每次修改的话,可以在后面加不同的参数,浏览器会认为是不同的文件,会从服务器上重新下载。
例如:

1
2
3
<script type="text/javascript" src="http://xxx.com/js/xxx.js?v=1">
</script>
<link href="http://xxx.com/style/xxx.css?v=1" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />

如此这般,当然参数的名字和值你可以随便瞎胡写,只要是修改前后不一样就可以,比如修改前是?v=1,那么修改后写成?v=2,浏览器就会重新从服务器上下载文件而不会读取文件缓存。

2.通过apache设置FileETag
具体的文档请参考:

lamp.linux.gov.cn/Apache/ApacheMenu/mod/core.html#fileetag

这个是怎么说呢?
FileTag是放在apache的httpd.conf或者.htaccess等apache的配置文件中的。
FileETag INode MTime Size
的意识是说放文件的索引节点,修改时间,文件大小发生改变时,要求浏览器从服务器重新下载文件。
你也可以使用
FileETag MTime
来告诉apache,当文件修改时间发生改变时,通知浏览器从服务器重新下载文件。
个人还是认为使用Mtime比较靠谱儿。。。

3.这个功能就很NB啦。。。
这个功能可以根据不同的文件扩展名,按照时间等方式来设置,但是这种方式也是比较麻烦的,需要apache服务器加载mod_headers和mod_expires模块来配合使用。

这个方法我还没有使用过,所以也不敢误人子弟,如果有需要的朋友可以参考下面的两篇文档:

lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_headers.html

lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_expires.html

差..好文!! (还没评价)
Loading ... Loading ...

Leave a Message

No Messages

No Messages

RSS feed for comments on this post. TrackBack URI

Leave a Message