原理:
- 第一次訪問,通過expires設置緩存有效期,通過Last-Modified設置上次修改時間爲當前時間
- 然後每次訪問的時候通過$_SERVER的HTTP_IF_MODIFIED_SINCE變量判斷是否過期,如果未過期,返回304表示扔在緩存有效期內,則不需要重複請求資源,簡單的一個小方法可以有效節省帶寬。
- 瀏覽器command+shift+R(Ctrl+F5)則瀏覽器不會攜帶HTTP_IF_MODIFIED_SINCE參數,即強制刷新資源
$interval=10; //緩存10秒
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
// HTTP_IF_MODIFIED_SINCE即下面的: Last-Modified,文檔緩存時間.
// 緩存時間+時長.
$c_time = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])+$interval;
// 當大於當前時間時, 表示還在緩存中... 釋放304
if($c_time > time()){
header('HTTP/1.1 304 Not Modified');
exit();
}
}
header('Cache-Control:max-age='.$interval);
header("Expires: " . gmdate("D, d M Y H:i:s",time()+$interval)." GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
echo ' - <a href="">點擊重新載入本頁面</a><br />';