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