如果我设置为我的网站上高速缓存控制:缓存控制问题
Header unset Pragma
FileETag None
Header unset ETag
# 1 YEAR
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|mp3|mp4)$">
Header set Cache-Control "public"
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
Header unset Last-Modified
</FilesMatch>
# 2 HOURS
<FilesMatch "\.(html|htm|xml|txt|xsl)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
# CACHED FOREVER
# MOD_REWRITE TO RENAME EVERY CHANGE
<FilesMatch "\.(js|css)$">
Header set Cache-Control "public"
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
Header unset Last-Modified
</FilesMatch>
...那么如果我更新任何CSS或图片或其他文件,将用户的浏览器仍然使用缓存版本,直到它会过期(一年后)?
由于
啊哈,所以如果我设置过期到一年或'远期未来',并incase我不得不改变一些缓存的文件,我只会添加像'style.css?ver = 031010'的属性,它会抓住这个新文件?此操作是否跨浏览兼容? – 3zzy 2010-10-03 04:35:48
它完全跨浏览器兼容。请记住,对于所有的浏览器都知道,服务器使用该查询字符串 - 因此它不能假定style.css?ver = 020123与style.css?ver = 031010相同,必须重新获取文件。服务器正在使用相同的文件(只有更新版本的课程)并忽略查询字符串,但它可能会做其他事情。只有重击“库”文件才值得。 – 2010-10-03 12:02:04
太棒了,就是我想知道的。谢谢!另外,我的静态文件(CSS,图像)与HTML所在的域不在同一个域中,因此htaccess的位置在哪里? – 3zzy 2010-10-04 05:12:42