之前一直沒注意過這問題。一開始自己手按 Ctrl + F5 就好了。後來會在後面加上時間戳當做版號 abc.js?ver=123456。
但還是想請問,如果單純的呼叫,像下面
<script src="/scripts/jquery.min.js"></script>
<script src="/scripts/foo.js"></script>
<script src="/scripts/woo.js"></script>
使用者端會保存多久?
已問過 google,幾乎都是在說如何更新。但我想知道預設會保存多久。按瀏覽器的 F12, 也沒看出什麼。
stackoverflow 也有一篇在問,但有回跟沒回一樣。
https://stackoverflow.com/questions/54358357/how-long-will-cached-css-file-get-updated-in-browserBrowsers ... vary if the content being served doesn't use an HTTP Cache-Control header.
大概是說,如果沒有用 meta 標籤(Cache-Control header),那各家瀏覽器的保留時間不一樣(vary)。
有沒有人知道,Chrome 多久?Firefox多久?
答案:由伺服器端控制,某些瀏覽器會在30天清除。
可以由 get http-headers 的工具取得 伺服器端 的設定。
狀態設定:
*public:公開的資源,可以被所有節點暫存
*private:私有的資源,只被允許儲存成使用者的本地快取
*no-cache:本地暫存,但使用前會先詢問過期沒
*no-store:不開快取
不管對方的瀏覽器內要存多久,要控制版本更新才是你的主要問題吧?
在後方增加一個自己可以更動的參數,可以強迫對方更新瀏覽器內的版本,剛剛打完也發現這部分你也已經有提及了。
<script src="/scripts/jquery.min.js?id=123"></script>
<script src="/scripts/foo.js?id=123"></script>
<script src="/scripts/woo.js?id=123"></script>
不知道這兩個部分的回答有沒有切中你想解決的問題?
SERVER標頭宣告->瀏覽器的預設宣告->暫存區的時限
一般得要看這三個。
原則上是伺服器端送過來的最優先。
當然這也不是絕對性。因為基於「本機安全性原則」
本機的瀏覽器一般有最大的優先權限。但大多數是不會去設定的。
一律依照伺服器端為主。
基於上面的說明,我只會告訴你要如何的清除。
這點是不變的。因為緩存的時間因素太多了。
如果你真的有柯南精神可以去查瀏覽器的標頭相關值。及各大瀏覽器的設定。
包含了保存週期、暫存週期...等等等。
所以你問「Chrome 多久?Firefox多久?」
這是沒意義的問題。因為沒有絕對答案。