我想出兩種方案,
1、伺服器端返回檔案的時候,設定響應頭,
cache-control:no-cache
貌似是這樣,告訴瀏覽器不要快取;
2、前端控制,核心是,如何區分**裡修改 url 導致的重新整理和使用者的重新整理,**:
原理:**修改 url 的重新整理,不能繼續重新整理,否則陷入死迴圈;
使用者的重新整理要修改 url,返回新的頁面;
所以,onbeforeunload,onunload 都無法來區分,我想到的可以區分的就是,使用者的操作
滑鼠事件: 右鍵重新整理
頁面每次載入,都去 localstorage 裡獲取上次載入的時間 previousaccesstime,和當前時間一減,得出 interval ,假設跟 3秒 比較;
3秒內,就判斷是 **修改 url 導致的,所以不再去修改 url,避免了迴圈;
如果把時間改成譬如 10 秒,減少迴圈的可能,那麼使用者在 10秒內的重新整理,就不會重新整理。
後兩點是缺點,當然可以通過其他方式去優化,比如,
調整這個 interval
把這個指令碼放在最前面執行,減小網速慢的影響;
參考:
強制瀏覽器不再快取Web頁面
你那句話是客戶端的指令碼。伺服器端 response.buffer true response.expiresabsolute now 1 response.expires 0 response.cachecontrol no cache 客戶端 用客戶端 使瀏覽器不再快取web頁面 如果使用上面的...
瀏覽器的 強制快取 協商快取
強制快取 1 expires http 1.0 中可以使用響應頭部字段 expires 來設定快取時間,它對應乙個未來的時間戳。客戶端第一次請求時,服務端會在響應頭部新增 expires 字段。當瀏覽器再次傳送請求時,先會對比當前時間和 expires 對應的時間,如果當前時間早於 expires ...
瀏覽器快取 強制快取和協商快取
瀏覽器快取是瀏覽器在本地磁碟對使用者最近請求過的文件進行儲存,當訪問者再次訪問同一頁面時,瀏覽器就可以直接從本地磁碟載入文件 瀏覽器快取主要指http的快取 即協議層,協議層快取可以被分為強制快取和協商快取。兩種情況,一種是需要傳送http請求,一種是不需要傳送。協議中可以造成強制快取的字段有 ht...