時々、いくつかの静的ファイル(写真など)がphpによって出力され、リクエストがすべて200であることがわかります。サーバー上の静的ファイルをリクエストするのはリソースの無駄です。ブラウザに画像をキャッシュさせるにはどうすればよいですか? php で 304 を出力する必要があります。
これを行うには、php の HTTP_IF_MODIFIED_SINCE を etag と組み合わせて使用できます。 Etag には明確に定義された形式がありません。コードは次のとおりです。
コードは次のとおりです:プライベート関数 _addEtag($file) {
$last_modified_time = filemtime($file);
$etag = md5_file($file);
// 常にヘッダーを送信します
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 未変更");
退出;
}
}
コード内では、静的ファイル(画像など)を出力する前に呼び出すことができます。