我跟着這(http://www.electrictoolbox.com/force-reload-css-javascript-unique-filenames/)教程強制更新的緩存動態命名我的CSS和JavaScript文件通過添加修改時間到文件名。這是爲了在開發過程中使用,因爲我在託管緩存文件服務器端時遇到了問題。我已經確認mod_rewrite已打開,正在讀取htaccess,我確定在apache服務器上。我在腳本中沒有遇到任何錯誤,但是當我用開發人員工具檢查源時,文件名沒有改變。測試頁面是www.diysoakwells.com.au/cart2.php。添加時間修改爲文件名與PHP和.htaccess強制新鮮緩存
的.htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^diysoakwells.com.au$
RewriteRule (.*) http://www.diysoakwells.com.au/$1 [R=301,L]
RewriteRule ^(css|js)/(.*)\.[0-9]+\.(.*)$ /$1/$2.$3 [L]
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
# Don’t compress
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
#Dealing with proxy servers
<IfModule mod_headers.c>
Header append Vary User-Agent
</IfModule>
</IfModule>
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
PHP
<link rel="stylesheet" type="text/css" href="/css/styles2.1<?php echo filemtime('/css/styles2.1.css'); ?>.css" />
<script language="javascript" src="/js/simpleCart_verify<?php echo filemtime('/js/simpleCart_verify.js'); ?>.js"></script>
我曾嘗試在評論中解決,但是這一切看起來好像沒什麼問題,沒有任何人有什麼建議?謝謝。
這很有趣,那麼教程中該方法的好處是什麼,還是隻是過時?編輯: – JPB
@JPB我能想到的唯一的事情是瀏覽器真的拒絕用查詢變量重新加載文件/堅持要緩存它。但我從來沒有遇到過,因爲我擔心它是不必要的複雜。這個技巧也很古老,所以與此無關。 – jeroen
哇,這很好,很簡單。謝謝。 – JPB