2010-01-12 95 views
0

我使用PHP來生成一個HTML電子郵件,它發送我的客戶最新的統計圖表形式。 PHP每次使用相同的映像名稱發送統計信息時都會生成一個新映像,以防止磁盤空間使用率過高。現在我的問題是圖像被緩存,從而向客戶端顯示舊圖像而不是新圖像。PHP HTML生成的電子郵件緩存圖像,從而顯示舊圖像

我的html標題看起來如下。

"From: Test <[email protected]>\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"; 

如何強制郵件從服務器下載最新生成的圖像?

回答

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); 
1

有文件名本身包括一個時間戳。因此,不是覆蓋舊圖像,而是先刪除它(從而確保它確實消失),並用較新的圖像名稱替換爲較新的圖像。

相關問題