// $_SERVER['HTTP_IF_MODIFIED_SINCE'] (If-Modified-Since)瀏覽器對cache的詢問
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $last_modified <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$this->set_status_header(304);
exit;
}
// 編輯提示
header('Pragma: public|no-cache');
// http1.1的 cahe control
header('Cache-Control: max-age=' . $max_age . ', public');
// 過期時間
header('Expires: ' . gmdate('D, d M Y H:i:s', $expiration) . ' GMT');
// 最後修改時間(若最後編輯時間比cache更接近,就停用 cache)
header('Last-modified: ' . gmdate('D, d M Y H:i:s', $last_modified) . ' GMT');
Expires
跟Cache-Control: max-age
決定這份快取的「新鮮度」,也就是什麼時候「過期」。在過期之前,瀏覽器「不會」發送出任何 Request- 當快取過期之後,可以用
If-Modified-Since
或是If-None-Match
詢問 Server 有沒有新的資源,如果有的話就回傳新的,沒有的話就回傳 Status code 304,代表快取裡面的資源還能繼續沿用