Рендеринг изображений для адаптивных карт в Outlook: почему новое изображение не отображается после изменения изображения по URL-адресу? - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь использовать адаптивные карты в 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 голосов
/ 20 ноября 2018

Функция Actionable Messages имеет свой собственный прокси изображений, который кэширует все изображения, указанные в адаптивных картах. Клиент будет отображать обновленное изображение только после истечения срока действия кэша в прокси.

Обычная лучшая практика для взлома кешей - генерировать новые URL при обновлении изображения. Вот некоторые примеры:

https://example.com/images/<version>/logo.jpg
https://example.com/images/logo-<version>.jpg
https://example.com/images/logo.jpg?v=<version>
0 голосов
/ 20 ноября 2018

Я вижу, что вы возвращаете заголовок контроля кэша из вашего URL.Это может привести к тому, что любой CDN / прокси-сервер кеширует изображения.Если вы предвидите частое изменение изображений, попробуйте установить для них небольшое время кэширования.

Например, чтобы проверить эту теорию, вы можете удалить заголовки элементов управления кэшем и проверить, отражается ли изменение изображения немедленно,

HTTP / 1.1 200 OK

Заголовки контроля доступа: X-Requested-With

Контроль доступа-Allow-Origin: *

Cache-Control: общедоступный, максимальный возраст = 2592000

Тип содержимого: изображение / jpeg

Edge-Cache-Tag: 597828901897160436820627510901590644213, b6c4305593164dcaff27257 * 69b7927 * 69b792e * 697b1018 * Etag: "6b75954c15f7fed43b8dbeeaf091caff"

Последнее изменение: пт, 16 ноября 2018 16:43:44 GMT

Сервер: облачный

Timing-Allow-Origin: *

Длина контента: 16980

Диапазоны принятия: байты

Дата: понедельник, 19 ноября 2018 22:13:34 GMT

Через: 1.1лак

Возраст: 276099

Соединение: keep-alive

X-Served-By: cache-sea1024-SEA

X-Cache: HIT

X-Cache-Hits: 1

X-Timer: S1542665615.533512, VS0, VE1

...