通过利用.htaccess可以很方便的控制浏览器的缓存,从而达到提高访问体验。一般用到的都是两个模块mod_headers或mod_expires。不知到这两个哪个效率高,也没人比一下,我觉得mod_header,用起来比较方便,而且功能也多。使用的时候,你需要知道Last-Modified,expire,etag,Cache-Control大概都是什么意思,这个网上很多很好搜。
方法主要参考的是这篇文章,both mod_expires 和mod_headers两种方法它都提供了很详细的例子。我们可以参考这些例子,根据自己的空间的具体情况来设置。
我的设置是用mod_headers,因为mod_header能做mod_expires可以做的,感觉没必要用两个。首先是html和php页面的缓存,这类页面需要动态效果,要不然更新或者留言了,在文件过期前浏览器不会更新,而是从缓存里读取旧的页面。一般apath都会为html文件自动加上Last-Modified和etag,所以我们通过设置Cache-Control,来达到服务端的html文件更新了,浏览器才下载。代码如下:
#确定文件类型 <FilesMatch ".(html|php)$"> Header set Cache-Control "max-age=0, private, no-cache, must-revalidate" ExpiresActive Off#html设置有expire的需要关掉,否则ie6下首页可能不实时更新 </FilesMatch> #这样每次当浏览器访问页面时,会首先确定页面是否有更新,更新了才下载
其次就是其他文件类型,如图片,css,js之类,我把他们都放在一起了,反正如果我改css了就换个css文件名,代码如下:
<FilesMatch ".(ico|jpg|jpeg|png|gif|js|css)$"> Header unset Last-Modified #这类文件取消last-modified,节省资源 FileETag None#取消etag Header set Cache-Control "max-age=2592000" Header set Expires "Thu, 01 Dec 2013 16:00:00 GMT" </FilesMatch>
用mod_headers来设置缓存很方便,也很灵活,关于缓存更全面的介绍和设置,请参看这篇文章,很全。
如何知道自己的设置是否成功了呢,可以用firefox的firebug插件,在网络选项里,每个文件的头信息都很详细。