0

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

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

"From: Test <test@test.com>\n"
      // . "To: " . $contact . " <" . $email . ">\n"
       . "To: myemail@test.com\n"
       . "X-Confirm-Reading-To: test@test.com\n"
       . "Disposition-Notification-To: test@test.com\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/test@test.com"
       . "\nContent-Type: text/html\n\n";

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

4

2 に答える 2

3

グラフ画像のタイムスタンプなど、URL に特別なものを含める

<img src="http://example.com/graphs/graph.png?t=1263283697">

そうすれば、画像が変更されるたびに 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);
于 2010-01-12T08:08:30.603 に答える
1

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

于 2010-01-12T08:12:18.270 に答える