Для доставки изображений JPEG в моем веб-приложении я рассматриваю возможность использования Amazon S3 (или Amazon Cloudfront если он окажется лучшим вариантом), но имеют два, возможно, противоположных, Требования:
- Изображения являются частным контентом; Я хочу использовать подписанные URL-адреса с короткими сроками истечения срока действия.
- Изображения большие; Я хочу, чтобы они были кэшированы в течение длительного времени браузером пользователей.
Подход, о котором я думаю:
- Пользовательские запросы www.myserver.com/the_image
- Логика на моем сервере определяет, что пользователю разрешено просматривать изображение. Если они разрешены...
- Перенаправить браузер (
is HTTP 307 best ?
) на подписанный URL Cloudfront - Подписанный URL-адрес Cloudfront истекает через 60 секунд, но его ответ включает "
Cache-Control max-age=31536000, private
"
Проблема, которую я вижу, заключается в том, что в следующий раз, когда страница загружается, браузер будет искать www.myserver.com/the_image, но его кеш будет для подписанного URL Cloudfront. Мой сервер будет возвращать другой подписанный URL Cloudfront во второй раз из-за очень коротких срок действия, поэтому браузер не будет знать, что он может использовать свой кеш.
Есть ли способ обойти это без моего прокси-сервера веб-сервера изображения из Cloudfront (что, очевидно, отрицает все преимущества использования Cloudfront)?
Интересно, может ли быть что-то, что я мог бы сделать с etag
и HTTP 304
, но не могу присоединиться к точкам...