Стратегия аннулирования Amazon CloudFront Cache для обеспечения актуальности контента и экономической эффективности

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

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

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

Спасибо


person Shan Plourde    schedule 08.01.2012    source источник
comment
метод 3 может не работать, кто-то говорит, что cloudfront удалит параметр строки запроса, stackoverflow.com/questions/10237838/   -  person i need help    schedule 28.05.2012


Ответы (1)


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

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

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

person Eran Sandler    schedule 01.02.2012