电子邮件的动态图像,例如倒计时时钟(根据 gmail 图像缓存)
Posted
技术标签:
【中文标题】电子邮件的动态图像,例如倒计时时钟(根据 gmail 图像缓存)【英文标题】:Dynamic Images for email such as countdown clocks (in light of gmail image caching) 【发布时间】:2014-03-15 04:46:30 【问题描述】:我正在尝试做的事情:电子邮件正文中的动态倒计时
是什么让我感到痛苦:谷歌决定为 gmail 客户端的用户缓存图片
去年 11 月,我使用这种技术为我的公司实现了一个电子邮件倒计时:
Countdown Timer Image GIF in Email
效果很好,但是在 12 月,当 Google 决定为使用 Gmail 客户端的用户缓存所有图片时,他们遇到了麻烦。
http://kickdynamic.com/update-on-the-gmail-image-change/
因此,该问题会影响所有在 gmail 客户端上再次打开电子邮件的人。他们将看到一个缓存的图像。对于倒计时之类的东西,这会造成很大的伤害。
诚然,这有点像一个盲目的求救电话,但有没有人想出一个不受谷歌图像缓存影响的电子邮件倒计时时钟?
【问题讨论】:
请勿发送hh:mm:ss
的图片。发送单个数字 0-9,然后使用 JS 从这些组件图片构建时钟图片。
我认为大多数邮件客户端和网络邮件服务器不会在邮件中执行 javascript。
【参考方案1】:
我遇到了同样的问题。因此,使用以下标头,我禁用了图像缓存,它也可以在 Gmail 中使用(因此 Gmail 图像代理尊重缓存标头):
header('Content-Type: image/jpeg');
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
Credits to this library note.
【讨论】:
@Rohitesh 当我这样做时 - 它有效。现在我没有最新的信息。您可以将其测试为提供具有上述标头的图像并将其包含在邮件中。如果您对其进行测试 - 在这里分享结果会很有帮助。谢谢。 嘿@Jordan,它仍然有效。 :) 遵循您的标头步骤,Google 尊重无缓存。但是,通过 GMail“发送”会缓存图像。所以,我必须使用 API 来结束邮件。但是在“接收”邮件时,GMail 不会缓存图像。 我添加了完全相同的标头,并且 gmail 没有缓存 - 但是,在打开电子邮件时获取图像服务器的多个图像请求。 (加载单个 png/gif 的 2 - 3 个请求)。有谁知道避免多次请求的诀窍是什么? 我的猜测是 Gmail 会进行反垃圾邮件验证或其他相关过程,这些会触发电子邮件打开超过 1 次,这会导致分别多次请求图像。 @JordanEnev 这仅在我第一次打开电子邮件时发生,并且如果我有缓存控制标头,如无缓存,无存储。其他方面很好。如果没有这些标题,即使第一次打开也只会产生 1 个请求。以上是关于电子邮件的动态图像,例如倒计时时钟(根据 gmail 图像缓存)的主要内容,如果未能解决你的问题,请参考以下文章