1

私は自分のウェブサイトの背景画像をサーバー上の URL に設定しています。これは php スクリプトであり、出力として画像を提供します。そのコードは次のとおりです。

   //$mime is usually image/jpeg, etc
   header("Content-type: $mime");
   $image = readfile($image);
   imagejpeg($image);

問題は、ページを読み込むたびに、画像がキャッシュされるのではなく、再度読み込まれるように見えることです。たとえば、ヘッダーを送信して画像をキャッシュするなど、それについてできることはありますか?

4

3 に答える 3

4

ETag (md5ハッシュ) と Last-Modified (通常はファイルが作成された過去の日付) を使用して、常に最良の結果が得られます。

あなたのコードでは、次のようになります。

$etag = md5_file($image);
$lastModified = gmdate('D, d M Y H:i:s', filemtime($image)) . ' GMT';


header("Content-type: $mime");
header("ETag: \"{$etag}\"");
header("Last-Modified: $lastModified");
header('Expires: ' . gmdate("D, d M Y H:i:s", ((60*60*24*45)+strtotime($lastModified)))); // add 45 days expire

$image = readfile($image);
imagejpeg($image);
于 2012-09-03T17:32:12.797 に答える