首頁  >  文章  >  後端開發  >  出現http 200 from cache的詭異問題

出現http 200 from cache的詭異問題

WBOY
WBOY原創
2016-09-05 08:59:541163瀏覽

所用瀏覽器:Pc端chrome、手機裡的各種瀏覽器
訪問同一個這樣的url位址:http://xxx.aaa.bbb.com/ship.html

在測試環境中:有的同學訪問了這個地址,再次訪問時,頁面仍然顯示的是上次訪問該頁面時的數據,並不是最新數據。查看其http,有幾個重要的參數如下:200、from cache。而有的同學每次造訪這個地址,頁面都是最新數據,查看其http的重要幾個參數,沒有出現from cache。

from cache 懂些,搞不懂的是訪問同一台伺服器為什麼有的同學訪問時出現from cache,而有的同學訪問時都是從伺服器加載最新的頁面資料。這跟什麼有關,什麼影響了它?

註:

  • 在正式的線上環境,不存在此問題,存取正常,每次都是從伺服器載入最新的頁面資料。

  • ship.html並不是直正的靜態頁面,是偽靜態。

  • 已經設定過如下頭:
    <meta http-equiv="Expires" content="-1">
    <meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="Cache-Control" content="no-cache">

回覆內容:


所用瀏覽器:Pc端chrome、手機裡的各種瀏覽器

訪問同一個這樣的url位址:http://xxx.aaa.bbb.com/ship.html

在測試環境中:有的同學訪問了這個地址,再次訪問時,頁面仍然顯示的是上次訪問該頁面時的數據,並不是最新數據。查看其http,有幾個重要的參數如下:200、from cache。而有的同學每次造訪這個地址,頁面都是最新數據,查看其http的重要幾個參數,沒有出現from cache。

from cache

懂些,搞不懂的是訪問同一台伺服器為什麼有的同學訪問時出現from cache,而有的同學訪問時都是從伺服器加載最新的頁面資料。這跟什麼有關,什麼影響了它?

註:
  • 在正式的線上環境,不存在此問題,存取正常,每次都是從伺服器載入最新的頁面資料。
  • ship.html並不是直正的靜態頁面,是偽靜態。

  • 已經設定過如下頭:<meta http-equiv="Expires" content="-1">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Cache-Control" content="no-cache">


如果伺服器沒有明確定義快取控制,不同的客戶端可能會有不同的快取機制。

如果你希望使用者每次取得最新資料可以這樣設定 meta tag :

<code class="html"><meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" /></code>

設定meta tag只對html頁面有效,更好的方法是在 http 回應頭中設定快取控制:

<code class="http">Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0</code>

php設定 http 回應頭的程式碼:

<code class="php">header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.</code>

使用快取有利於加快頁面載入速度和減少資源消耗,你應該根據具體情況調整快取策略。

參考


http://stackoverflow.com/ques...
http://stackoverflow.com/ques...🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn