創(chuàng)新互聯(lián)告訴您如何保證HTML頁面后退不會被緩存

2018-01-02    分類: 網(wǎng)站建設

微信的登錄,掃二維碼碼之后,可以通過微信給的code去獲取用戶的微信信息,顯示出對應的帳號列表(列表頁),選擇登錄之后跳轉(zhuǎn)至相應的頁面。
測試的時候發(fā)現(xiàn),如果在跳轉(zhuǎn)后的頁面,點擊瀏覽器返回,還是會顯示登錄帳號列表。這時候登錄是會失敗的,因為已經(jīng)登錄過,沒有了半登錄態(tài),應該需要重新掃碼登錄才行。
所以列表頁是完全不能被緩存的,而瀏覽器的前進后退,默認會從緩存里讀取,完全不發(fā)請求。
打開Chrome的開發(fā)者工具調(diào)試的時候發(fā)現(xiàn),如果勾選Network的Disable cache,瀏覽器后退的時候,結(jié)果頁不會被緩存。如果不勾選則緩存頁面。用戶是不會主動開啟這個選項的,所以需要通過Headers控制頁面的緩存。
Request
勾選與不勾選Disable cache的差別在于
Request Headers的Cache是否會被設置為Cache-Control: no-cache、Pragma: no-cache
Response
有設置Cache為Cache-Control: no-cache, must-revalidate。但是為什么頁面還是會緩存了呢?
而Request為瀏覽器發(fā)送,不能進行設置,只能從Response著手。
解決方案為設置Cache為Cache-Control: no-store, no-cache, must-revalidate
no-cache與no-store
“no-cache”表示必須先與服務器確認返回的響應是否發(fā)生了變化,然后才能使用該響應來滿足后續(xù)對同一網(wǎng)址的請求。因此,如果存在合適的驗證令牌 (ETag),no-cache 會發(fā)起往返通信來驗證緩存的響應,但如果資源未發(fā)生變化,則可避免下載。
相比之下,“no-store”則要簡單得多。它直接禁止瀏覽器以及所有中間緩存存儲任何版本的返回響應,例如,包含個人隱私數(shù)據(jù)或銀行業(yè)務數(shù)據(jù)的響應。每次用戶請求該資產(chǎn)時,都會向服務器發(fā)送請求,并下載完整的響應。
再次觀察頁面的請求,發(fā)現(xiàn)雖然設置了no-cache,但是沒有設置ETag可以進行校驗,最終還是從緩存里讀取。
關于HTTP,還是需要不斷的學習,才能深入理解并使用。

當前標題:創(chuàng)新互聯(lián)告訴您如何保證HTML頁面后退不會被緩存
本文鏈接:http://www.muchs.cn/news48/76748.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、外貿(mào)建站、用戶體驗、電子商務、小程序開發(fā)動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司