Обновите загруженное изображение с тем же именем на Akamai Edge Servers - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть приложение, которое загружает изображения на Akamai. Иногда нам необходимо загрузить изображение с тем же именем, что и раньше. Когда я делаю это, akamai не обновляет изображение на пограничных серверах на основе метки времени. Однако, если я переименую изображение и загрузу, мои изменения будут отражены на всех пограничных серверах.

Существуют ли какие-либо директивы ESI, которые я могу использовать для обновления изображения. Я знаю, что это побьет цель использования CDN, но мне требуется эта функциональность для выбранного контента.

Любая помощь или направление было бы здорово.

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Если у Akamai EdgeSever есть объект в кеше, он будет обслуживать объект без проверки происхождения.Когда вы изменяете имя файла, у EdgeServer нет объекта в кеше, поскольку он рассматривает его как новый объект (EdgeServers имеет концепцию ключа кеша, который состоит из имени файла и некоторых других вещей. Ключ кешакак EdgeServer находит объект в кеше).

Если вы измените объект на месте вашего источника (например, вы измените содержимое файла, но не измените имя файла), а EdgeServer имеет объектв кеше он будет обрабатываться без проверки источника.

Если вам нужно изменить файлы на месте, вы можете использовать механизм очистки через утилиту управления контентом.Войдите в веб-панель управления и есть графический интерфейс для очистки файлов вручную.Или вы можете использовать SOAP API.

Если вы постоянно меняете файлы, и очистка становится проблемой, вы должны посмотреть на обновление вашей конфигурации.Вы можете установить низкий ttl (время жизни) для своего контента, или вы можете настроить отсутствие хранилища для контента, что заставит EdgeServer делать запрос If-Modified-Since обратно к вашему источнику каждый раз, когдаобъект является запросом.

1 голос
/ 21 февраля 2011

Я считаю, что akamai поддерживает If-Modified-Since / ETAGs, которые должны дать вам то, что вы хотите. Кратко изучив документацию, я нашел следующие пули, которые должны вам помочь.

// Из документации Akamai //

Убедитесь, что исходный сервер отправляет информацию, указывающую версию объектов, чтобы пограничный сервер мог отправить условный запрос GET по истечении срока действия этих объектов.

Также убедитесь, что ваш исходный сервер правильно отвечает на эти условные запросы, с 304 Not Not Modified, если файл не изменился с указанного времени или указанное значение ETag все еще совпадает.

Заголовки Cache-Control и Expires инструктируют браузер о том, следует ли и в течение какого времени кэшировать объект. Но при обновлении просроченного объекта браузер должен иметь информацию, указывающую версию объекта, которую он может отправить на сервер в условном запросе GET.

Информация о версии, обычно доступная браузеру, может включать (среди прочего):

Last-Modified: если браузер получает заголовок Last-Modified с объектом при кэшировании, браузер может затем отправить заголовок If-Modified-Since при обновлении объекта, запрашивая сервер отправить объект, если он имеет изменилось с указанной даты или ответьте 304 Не изменено, если нет. Пример, полученный в ответе HTTP: Дата последнего изменения: пт, 06 февраля 2009 00:08:43 GMT

ETag: ETag - это уникальная строка, которая идентифицирует конкретную версию объекта. Если браузер получает заголовок ETag с объектом, он может отправить заголовок If-None-Match при обновлении объекта, запрашивая, чтобы сервер отправил объект, если его текущий ETag не соответствует ETag в запросе, или ответит 304 Не модифицированный ответ, если это так. Пример, полученный в ответе HTTP: ETag: "4514b5-4824-4743e60ff96c0" Убедитесь, что ваш сайт отправляет информацию, указывающую версию объектов, чтобы браузер мог отправить условный запрос GET на сервер после истечения срока действия этих объектов.

...