?v=time()
已經算是蠻常見的做法
你不想每次都重新下載
可以改用固定字串配合 http header(e.g. Cache-Control: max-age)
e.g.
20191020 更新 css
就可以設為
?v=20191020
再配合 http 的 header
Cache-Control: max-age=31536000
如此一來
在 20191020 之前的 css 都會重新下載
下載後在一年以內都不會再次下載
其實這些東西,
Google就可以找到了.
我問古哥他說 ?v=time() 已經是很好的作法了
TO ccutmis 真假的可以給我網址嗎 我看看
那這樣與其「http header(e.g. Cache-Control: max-age)」還不如我直接設定一個變數就行了⋯
我的手法是在設定檔或是init檔,給個常數定義。
如以下的寫法
$setVer = time();//先依時間值,後續再改固定值
define('JS_VERSION', $setVer); //js版本
define('CSS_VERSION', $setVer); //css版本
define('IMG_VERSION', $setVer); //img版本
在對應的js、css跟圖片就用 xxx.js?{JS_VERSION}
的方式來處理。
這邊你可以看到我先暫時用time()。這是因為我正在開發期間。很常變動js跟css。
所以先用time()來讓它每次重讀。
等到正式版上線時,就會將其改成固定的值處理。
我是利用這些來處理緩存的問題的。給你參考。
因為看到你說要清cache的時候都是git有變動才清
所以我是推薦用ENV環境變數處理
?v=$_ENV['version'];
這樣的優點就是我版本有變動的時候就會重新讀取cache,
但如果沒有更新的話,就不會每次都重新存取,保留瀏覽器cache的效能。
這環境變數需要安裝嗎?
崔斯
你教他用env的方式,對他來說會有難度的。
我想你從他的回答因該就知道了。
對他來說,其實我倒是不建議他使用env。因為這樣子的話,他要了解的東西又要多很多。
ENV環境變數 怎麼用呀?