首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP HTML生成的电子邮件缓存图像,从而显示旧图像

PHP HTML生成的电子邮件缓存图像,从而显示旧图像
EN

Stack Overflow用户
提问于 2010-01-12 16:04:32
回答 2查看 750关注 0票数 0

我使用PHP生成一封html电子邮件,它以图形形式向我的客户发送最新的统计数据。PHP每次发送具有相同镜像名称的统计数据时都会生成一个新镜像,以防止磁盘空间使用率过高。现在,我的问题是图像被缓存,从而向客户端显示旧图像而不是新图像。

我的html头文件如下所示。

代码语言:javascript
运行
复制
"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";

如何强制邮件从服务器下载最新生成的镜像?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-12 16:08:31

在URL中包含一些额外的内容,比如图表图像的时间戳

代码语言:javascript
运行
复制
<img src="http://example.com/graphs/graph.png?t=1263283697">

这样,每当图像发生变化时,URL就会发生变化。这不会阻止用户代理缓存它看到的内容,因此即使在服务器更新之后,它仍然可能显示旧图像。

因此,如果您想要阻止用户代理实际缓存图像,那么编写一个脚本来返回带有一些头文件的图像,以防止缓存……

代码语言:javascript
运行
复制
$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
EN

Stack Overflow用户

发布于 2010-01-12 16:12:18

让文件名本身包含一个时间戳。因此,不是覆盖旧图像,而是首先删除它(从而确保它真的消失了),并用具有新图像名称的新图像替换它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2047522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档