HTTP之Expires和Last-Modified

原理:

  • 第一次訪問,通過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 />';
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章