php静的ファイル戻り304テクニック共有
963 ワード
画像などの静的ファイルがphpで出力される場合があり、要求が200であることがわかります.静的ファイルは毎回サーバに要求されるのはリソースの浪費ですが、ブラウザに画像をキャッシュさせるにはどうすればいいですか.phpに304を出力する必要があります.
phpのHTTPを利用できますIF_MODIFIED_SINCEはetagと結合してこのことをします.Etagには明確なフォーマットがありません.ファイルで時間のmd 5値を変更できます.コードは以下の通りです.
画像などの静的ファイルが出力される前にコードで呼び出すことができます.
phpのHTTPを利用できますIF_MODIFIED_SINCEはetagと結合してこのことをします.Etagには明確なフォーマットがありません.ファイルで時間のmd 5値を変更できます.コードは以下の通りです.
private function _addEtag($file) {
$last_modified_time = filemtime($file);
$etag = md5_file($file);
// always send headers
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $last_modified_time)." GMT");
header("Etag: $etag");
// exit if not modified
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;
}
}
画像などの静的ファイルが出力される前にコードで呼び出すことができます.