[龍巖網(wǎng)站建設(shè)公司]怎樣設(shè)置網(wǎng)站頁面前進(jìn)后退不會被緩存

閱讀 ?·? 發(fā)布日期 2019-06-12 13:25 ?·? admin

測試的時候發(fā)現(xiàn),如果在跳轉(zhuǎn)后的頁面,點(diǎn)擊瀏覽器返回,還是會顯示登錄帳號列表。這時候登錄是會失敗的,因?yàn)橐呀?jīng)登錄過,沒有了半登錄態(tài),應(yīng)該需要重新掃碼登錄才行。所以列表頁是完全不能被緩存的,而瀏覽器的前進(jìn)后退,默認(rèn)會從緩存里讀取,完全不發(fā)請求。  [龍巖網(wǎng)站建設(shè)公司]

打開Chrome的開發(fā)者工具調(diào)試的時候發(fā)現(xiàn),如果勾選Network的Disable cache,瀏覽器后退的時候,結(jié)果頁不會被緩存。如果不勾選則緩存頁面。用戶是不會主動開啟這個選項的,所以需要通過Headers控制頁面的緩存。 [龍巖網(wǎng)站建設(shè)公司]

勾選與不勾選Disable cache的差別在于Request Headers的Cache是否會被設(shè)置為Cache-Control: no-cache、Pragma: no-cache、Response  [龍巖網(wǎng)站建設(shè)公司]

 

有設(shè)置Cache為Cache-Control: no-cache, must-revalidate。但是為什么頁面還是會緩存了呢?而Request為瀏覽器發(fā)送,不能進(jìn)行設(shè)置,只能從Response著手。  [龍巖網(wǎng)站建設(shè)公司]

解決方案為設(shè)置Cache為Cache-Control: no-store, no-cache, must-revalidate,no-cache與no-store。“no-cache”表示必須先與服務(wù)器確認(rèn)返回的響應(yīng)是否發(fā)生了變化,然后才能使用該響應(yīng)來滿足后續(xù)對同一網(wǎng)址的請求。因此,如果存在合適的驗(yàn)證令牌 (ETag),no-cache 會發(fā)起往返通信來驗(yàn)證緩存的響應(yīng),但如果資源未發(fā)生變化,則可避免下載。 [龍巖網(wǎng)站建設(shè)公司]

相比之下,“no-store”則要簡單得多。它直接禁止瀏覽器以及所有中間緩存存儲任何版本的返回響應(yīng),例如,包含個人隱私數(shù)據(jù)或銀行業(yè)務(wù)數(shù)據(jù)的響應(yīng)。每次用戶請求該資產(chǎn)時,都會向服務(wù)器發(fā)送請求,并下載完整的響應(yīng)。再次觀察頁面的請求,發(fā)現(xiàn)雖然設(shè)置了no-cache,但是沒有設(shè)置ETag可以進(jìn)行校驗(yàn),最終還是從緩存里讀取。[龍巖網(wǎng)站建設(shè)公司]