Outlook中自适应卡的图像渲染:在更改URL上的图像后,为什么没有出现新图像?

时间:2018-11-16 17:48:15

标签: outlook adaptive-cards

我试图在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刷新缓存?

2 个答案:

答案 0 :(得分:0)

我看到您正在从URL返回缓存控制标头。这可能会导致任何CDN /代理服务器缓存图像。如果您预计图像会频繁更改,请尝试为图像设置较小的缓存时间。

例如,要检验该理论,您可以删除高速缓存控制标头并检查图像中的更改是否立即得到反映。

HTTP / 1.1 200确定

Access-Control-Allow-Headers:X-Requested-With

访问控制允许来源:*

缓存控制:公共,最大年龄= 2592000

内容类型:图片/ jpeg

Edge-Cache-Tag:597828901897160436820627510901590644213,b6c4305593164dcaff27257c69cb92e2

Etag:“ 6b75954c15f7fed43b8dbeeaf091caff”

最后修改时间:2018年11月16日星期五,格林尼治标准时间

服务器:cloudinary

计时允许来源:*

内容长度:16980

接受范围:字节

日期:2018年11月19日星期一22:13:34 GMT

通过:1.1清漆

年龄:276099

连接:保持活动状态

X-Served-By:cache-sea1024-SEA

X缓存:命中率

X-Cache-Hits:1

X-Timer:S1542665615.533512,VS0,VE1

答案 1 :(得分:0)

可操作消息功能具有其自己的图像代理,该代理可缓存自适应卡中引用的所有图像。客户端将仅在代理中的缓存过期时呈现更新的图像。

打破缓存的通用最佳实践是在图像更新时生成新的URL。一些示例是:

https://example.com/images/<version>/logo.jpg
https://example.com/images/logo-<version>.jpg
https://example.com/images/logo.jpg?v=<version>