如果我設置爲我的網站上高速緩存控制:緩存控制問題
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