PHP HTML oluşturulan e-posta böylece eski, görüntülerin görüntüleri önbelleğe

2 Cevap php

Ben grafik şeklinde son istatistikleri benim müşterilerine gönderir bir html e-posta oluşturmak için PHP kullanıyorum. PHP yüksek disk alanı kullanımını önlemek için aynı görüntü adla istatistikleri gönderir yeni bir görüntü her şey oluşturur. Şimdi benim sorunum görüntü böylece yerine yeni görüntünün müşteriye eski görüntü görüntüleme önbelleğe alır olduğunu.

Şöyle Benim html başlıkları görünüyorsun.

"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";

Nasıl sunucudan en son oluşturulan görüntü indirmek için postayı zorlayabilir?

2 Cevap

Grafik görüntünün zaman damgası gibi URL ekstra bir şey Dahil

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

Görüntü yaptığında bu şekilde, URL değiştirir. Bu gördüğü önbelleğe user-agent durmayacak, bu yüzden hala bile sunucu güncellemelerini sonra eski görüntü gösterebilir.

Aslında görüntü önbelleğe user-agent durdurmak istiyorsanız Yani, o önbelleğe alma önlemek için bazı başlıkları ile görüntüyü döndüren bir senaryo yazmak ....

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

Dosya kendisi bir zaman damgası var. Peki yerine eski görüntü üzerine yazma, sen (böylece gerçekten gitti sigortalanması) önce onu silin ve yeni bir görüntü adı ile yeni bir görüntü ile değiştirin.