• <center id="4ttjq"><small id="4ttjq"><p id="4ttjq"></p></small></center>
    <code id="4ttjq"><small id="4ttjq"></small></code>
  • <big id="4ttjq"><nobr id="4ttjq"></nobr></big>

    1. <object id="4ttjq"></object><object id="4ttjq"></object><th id="4ttjq"><sup id="4ttjq"></sup></th>
    2. 歡迎訪問山東奧訊物聯網科技股份有限公司官方網站!服務熱線電話:400-631-5587 | 0631-5961319 | 18660385587

      新聞中心

      news center

      網站開發中如何保證HTML頁面后退不會被緩存


      微信的登錄,掃二維碼碼之后,可以通過微信給的code去獲取用戶的微信信息,顯示出對應的帳號列表(列表頁),選擇登錄之后跳轉至相應的頁面。

      18.jpg

      測試的時候發現,如果在跳轉后的頁面,點擊瀏覽器返回,還是會顯示登錄帳號列表。這時候登錄是會失敗的,因為已經登錄過,沒有了半登錄態,應該需要重新掃碼登錄才行。

      所以列表頁是完全不能被緩存的,而瀏覽器的前進后退,默認會從緩存里讀取,完全不發請求。

      打開Chrome的開發者工具調試的時候發現,如果勾選Network的Disable cache,瀏覽器后退的時候,結果頁不會被緩存。如果不勾選則緩存頁面。用戶是不會主動開啟這個選項的,所以需要通過Headers控制頁面的緩存。

      Request

      勾選與不勾選Disable cache的差別在于

      Request Headers的Cache是否會被設置為Cache-Control: no-cache、Pragma: no-cache

      Response

      有設置Cache為Cache-Control: no-cache, must-revalidate。但是為什么頁面還是會緩存了呢?

      而Request為瀏覽器發送,不能進行設置,只能從Response著手。

      解決方案為設置Cache為Cache-Control: no-store, no-cache, must-revalidate

      no-cache與no-store

      “no-cache”表示必須先與服務器確認返回的響應是否發生了變化,然后才能使用該響應來滿足后續對同一網址的請求。因此,如果存在合適的驗證令牌 (ETag),no-cache 會發起往返通信來驗證緩存的響應,但如果資源未發生變化,則可避免下載。

      相比之下,“no-store”則要簡單得多。它直接禁止瀏覽器以及所有中間緩存存儲任何版本的返回響應,例如,包含個人隱私數據或銀行業務數據的響應。每次用戶請求該資產時,都會向服務器發送請求,并下載完整的響應。

      再次觀察頁面的請求,發現雖然設置了no-cache,但是沒有設置ETag可以進行校驗,最終還是從緩存里讀取。

      關于HTTP,還是需要不斷的學習,才能深入理解并使用。



      掃碼關注奧訊

      COPYRIGHT ? 2019 - 山東奧訊物聯網科技股份有限公司 | ALL RIGHTS RESERVED 魯ICP備18031712號-1 網站地圖
      AV无码精品一区二区三区,亚洲人成网亚洲欧洲无码,日本一区二区三区高清,成人免费A片爱网址