Обновите загруженное изображение с тем же именем на пограничных серверах Akamai.

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

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

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


person Abhishek    schedule 17.02.2011    source источник


Ответы (2)


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

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

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

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

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

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

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

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

person Dberg    schedule 21.02.2011

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

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

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

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

person robertlbolton    schedule 10.03.2011