所用瀏覽器: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">
訪問同一個這樣的url位址:http://xxx.aaa.bbb.com/ship.html
所用瀏覽器:Pc端chrome、手機裡的各種瀏覽器
在測試環境中:有的同學訪問了這個地址,再次訪問時,頁面仍然顯示的是上次訪問該頁面時的數據,並不是最新數據。查看其http,有幾個重要的參數如下:200、from cache。而有的同學每次造訪這個地址,頁面都是最新數據,查看其http的重要幾個參數,沒有出現from cache。
from cache
懂些,搞不懂的是訪問同一台伺服器為什麼有的同學訪問時出現from cache,而有的同學訪問時都是從伺服器加載最新的頁面資料。這跟什麼有關,什麼影響了它?註:
已經設定過如下頭:<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...