outlook - Outlook 中自适应卡片的图像渲染:为什么在 URL 处更改图像后没有出现新图像?
问题描述
我正在尝试在 Outlook 中使用自适应卡片(可操作消息),并且我正在尝试了解图像渲染的工作原理。
这是我用来测试的一张简单卡片。
{
"type": "AdaptiveCard",
"originator":"--------",
"body": [
{
"type": "Container",
"items": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "test image card"
}
]
},
{
"type": "Image",
"id": "image",
"url": "https://res.cloudinary.com/adaptivecardtest/image/upload/testimage.jpg"
}
],
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.0"
}
如果我更改位于该 URL 的图像,则新图像不会显示在自适应卡片上。我会简单地接受这种行为(也许图像在收到电子邮件时被拉出,因此它不会更新),但如果我发送新电子邮件,它们仍然显示旧图像,尽管事实上在一个 URL 中浏览器显示新图像。如果我使用刷新卡以便从 HTTP 请求加载新卡,则旧图像会保留。它似乎会在任意时间(从 1 小时到 3 或 4 小时)后更新,并且当它更新时,它会在 OWA 和桌面客户端中更新。
我删除了浏览器的所有缓存和 cookie,并尝试使用多个浏览器,但图像没有更新。
Microsoft Exchange 似乎正在缓存该图像。那么图片的URL是什么时候以及如何被访问的,图片又是如何被缓存的呢?有没有办法强制 Outlook 刷新缓存?
解决方案
我看到您正在从您的 URL 返回缓存控制标头。这可能会导致任何 CDN/代理服务器缓存图像。如果您预见到您的图像会经常更改,请尝试为您的图像设置一个小的缓存时间。
例如,为了测试这个理论,您可以删除缓存控制标头并检查图像中的更改是否立即得到反映。
HTTP/1.1 200 正常
Access-Control-Allow-Headers:X-Requested-With
访问控制允许来源:*
缓存控制:公共,最大年龄=2592000
内容类型:图片/jpeg
边缘缓存标签:597828901897160436820627510901590644213,b6c4305593164dcaff27257c69cb92e2
Etag:“6b75954c15f7fed43b8dbeeaf091caff”
最后修改时间:格林威治标准时间 2018 年 11 月 16 日星期五 16:43:44
服务器:云端
定时允许来源:*
内容长度:16980
接受范围:字节
日期:2018 年 11 月 19 日星期一 22:13:34 GMT
通过:1.1 清漆
年龄:276099
连接:保持活动
X 服务者:cache-sea1024-SEA
X-缓存:命中
X-Cache-Hits: 1
X-Timer: S1542665615.533512,VS0,VE1
推荐阅读
- java - Spring:如何将值注入由自定义注释注释的字段
- c++ - 指向虚函数中成员函数的指针
- javascript - js拆分数组obj
- javascript - 如何在javascript中分配动态变量?
- rust - 如何解决涉及从 Rust 中的结构获取值的引用的不匹配类型错误
- typescript - Asciidoc.js - 从已解析的文档中获取 AsciiDoc 源
- java - void 方法返回什么?
- flutter - 即使在飞镖中有下划线,如何制作公共财产?
- firebase - 在 DNS 更改几周后,Zombie PWA 仍然获得流量
- applet - 在智能卡上下载 HCI 小程序有什么问题?