程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> squid對於php的浏覽器端緩存的處理

squid對於php的浏覽器端緩存的處理

編輯:PHP綜合

相關:什麼是squid及其配置介紹

主要包括 expires last-modifIEd cache-control
現在線上前面一個硬件的分發服務器,後面兩台nginx服務器,在expires last-modifIEd cache-control 等都設置無誤的情況下 ,對於php文件還有rewrite後的Html文件,還是每次都200,沒有出現304

然後上了一台squid,在同樣設置的情況下,對於rewrite後的Html有效,對於php的緩存仍然無效

附PHP代碼

$sec=1200;

$last_modifIEd_time = intval(time() / $sec) * $sec;
$etag = md5($last_modifIEd_time);
header(“Cache-Control: max-age=$sec”);
header(“Expires: $sec”);
header(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”, $last_modifIEd_time) . ” GMT”);
header(“Expires:” . gmdate(“D, d M Y H:i:s”, $last_modifIEd_time + $sec) . ” GMT”);
這種是通過nginx或者squid實現的,設置expires是通過php但是再次請求的時候通過nginx和squid等就可以實現304了,無需再次運行PHP文件

另一種通過php實現的方法如下,設置周期內同意etag,PHP通過etag來判斷是否需要304然後中斷
$last_modifIEd_time = intval(time() / $sec) * $sec;
$etag = md5($last_modifIEd_time);
header(“Cache-Control: maxage=$sec”);
header(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”, $last_modifIEd_time) . ” GMT”);
header(“Etag: $etag”);

if (@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $last_modifIEd_time ||
trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) {
header(“HTTP/1.1 304 Not ModifIEd”);
exit;
}

 

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