PHP HTMLで生成された電子メールは画像をキャッシュするため、古い画像が表示されます

email php sendmail
PHP HTMLで生成された電子メールは画像をキャッシュするため、古い画像が表示されます

PHPを使用して、クライアントに最新の統計情報をグラフ形式で送信するhtmlメールを生成しています。 PHPは、同じイメージ名の統計を送信するたびに新しいイメージを生成して、ディスク領域の大量使用を防ぎます。 ここで私の問題は、画像がキャッシュされるため、新しい画像ではなく古い画像がクライアントに表示されることです。

私のhtmlヘッダーは次のようになります。

"From: Test \n"
      // . "To: " . $contact . " <" . $email . ">\n"
       . "To: [email protected]\n"
       . "X-Confirm-Reading-To: [email protected]\n"
       . "Disposition-Notification-To: [email protected]\n"
       . "MIME-Version: 1.0\n"
       . "Content-Type: multipart/mixed;"
       . ' boundary="PAA08673.1018277622/www.test.com"'
       . "\nSubject: Stats for $name\n\n"
       . "This is a MIME-encapsulated message\n\n"
       . "--PAA08673.1018277622/[email protected]"
       . "\nContent-Type: text/html\n\n";

サーバーから最新の生成イメージをダウンロードさせるにはどうすればよいですか?

  0  0


ベストアンサー

グラフ画像のタイムスタンプなど、URLに余分なものを含めます

これにより、画像が変更されるたびにURLが変更されます。 これにより、ユーザーエージェントは表示されているものをキャッシュできなくなります。そのため、サーバーが更新された後でも古いイメージが表示される可能性があります。

そのため、ユーザーエージェントが実際に画像をキャッシュするのを停止する場合は、キャッシュを防ぐためにいくつかのヘッダー付きの画像を返すスクリプトを記述します。

$file="graph.png";
$size=filesize($file);

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Length: $size");
header("Content-Type: image/png");

readfile($file);

3


ファイル名自体にタイムスタンプを含めます。 したがって、古いイメージを上書きする代わりに、最初にそれを削除し(したがって、実際になくなっていることを保証します)、新しいイメージ名で新しいイメージに置き換えます。

1


タイトルとURLをコピーしました