首页 > 解决方案 > 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 刷新缓存?

标签: outlookadaptive-cards

解决方案


我看到您正在从您的 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


推荐阅读