最近研究了一下利用http的Last-Modified快取機制,可以讓瀏覽器讀取快取文件,
$num = 4; //模擬伺服器資料變化,判斷瀏覽器是否需要讀取快取文件
if($num==4) {
if( isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ){
$browserCachedCopyTimestamp = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
if ( ( $browserCachedCopyTimestamp + 3600 ) > time() ) {
header("HTTP/1.1 304");
exit(1);
}
}
}else{
header('Last-Modified: '.gmdate('D, d M Y H:i:s',time())." GMT");
header('Expires: '.gmdate('D, d M Y H:i:s', time() + 3600)." GMT");
header("Cache-Control:max-age=3600");
for( $i=1; $i < 10 ; $i++ ){
echo "$i|";
}
}
上面我測試了可以讀取快取檔案但是剛剛在網路上看了一下說是
【Last-Modified和ETags請求的http標頭一起使用,伺服器首先產生Last-Modified/Etag標記,伺服器可在稍後使用它來判斷頁面是否已被修改,來決定檔案是否繼續快取】
為什麼要Last-Modified和ETags一起使用啊。搞不懂。
引用別人的一篇回答連結描述