程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP操作Last-Modified與etag以實現進一步的偽靜態與304

PHP操作Last-Modified與etag以實現進一步的偽靜態與304

編輯:關於PHP編程

 做了比較久的偽靜態方面的探索,最後發現,用以下方法可以實現針對SEO的偽靜態,同時也有減少服務器壓力的效果.
>> 訪問PHP頁面

>> 根據內容更新時間生成Last-Modified,根據文件名與內容更新時間生成etag

>> 對客戶端的數據做對比,如查看客戶端浏覽器的Last-Modified,對比etag等,如果相等,輸出304,停止輸出最新數據

>> 如果不相等,照常輸出最新數據,並返回Last-Modified和etag給客戶端

 /**
 * 輸出head  Last-Modified 並判斷是否輸出304
 */
protected function _echo_last_etag($tmp_time){
    $now_url =get_absolute_url();
    $md5 = md5($now_url.$tmp_time);
    $etag = '"' . $md5 . '"';
    header('Last-Modified: '.gmdate('D, d M Y H:i:s',$tmp_time ).' GMT');
    header("ETag: $etag");
    if((isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $tmp_time) || (isset($_SERVER['HTTP_IF_UNMODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_UNMODIFIED_SINCE']) < $tmp_time) || (isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag)){
        header("HTTP/1.1 304 Not Modified"); 
        exit(0);
    }  

}


摘自 小強的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved