Стратегия аннулирования Amazon CloudFront Cache для обеспечения свежего контента и эффективности затрат - PullRequest
6 голосов
/ 08 января 2012

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

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

  1. Выполните один запрос объекта S3 put, чтобы сохранить файл с исходным именем файла, и выполните один запрос аннулирования Amazon CloudFront.Amazon CloudFront допускает до 1000 бесплатных запросов о признании недействительными в месяц, что кажется незначительным.
  2. Выполните один запрос объекта S3delete для удаления исходных фотографий, затем один запрос объекта S3 поместите объект, чтобы сохранить новую фотографию с уникальным, новое имя файла фотографии.Это будет два запроса S3 на обновление файла и не потребует запроса аннулирования CloudFront CDN.CloudFront будет обслуживать самые последние файлы, как только они будут обновлены, при условии, что URL-адресам изображений будут автоматически установлены новые имена файлов
  3. Выполните один запрос объекта S3 put, чтобы сохранить файл с его исходным именем файла, а затем - клиента.сторона добавляет код версии к URL-адресам CDN (т.е. /img/profilepic.jpg?x=timestamp) или что-то подобное.Я не уверен, насколько эффективна эта стратегия с точки зрения признания недействительными кэшированных объектов CloudFront

Спасибо

1 Ответ

5 голосов
/ 01 февраля 2012

Аннулирование CloudFront может занять некоторое время и рекомендуется в качестве крайней меры для удаления контента, который должен быть удален (например, нарушение авторских прав).

Лучший подход - это URL-адреса с версионной версией.Для изображений профиля я бы использовал уникальный идентификатор (например, GUID).Всякий раз, когда пользователь загружает новую фотографию, замените этот URL (и удалите старую фотографию, если хотите).

Когда вы обновите свою БД новым идентификатором фотографии профиля пользователя, CloudFront извлечет новое изображение и внесет изменениябудет немедленным.

...