Я помещаю приложение Laravel (PHP) на AWS, и пока все довольно хорошо.
Но у меня есть новое требование!
Нам нужно автоматически преобразовать валюту по умолчанию в одну из доступных валют для пользователя в зависимости от их геолокации.Я подумал, что сейчас самое время настроить Amazon Cloudfront перед моим балансировщиком нагрузки, потому что он (если я правильно понимаю) передаст заголовок геолокации (среди других заголовков) , чтобы обеспечитьчто пользователи получают соответствующий контент.Это здорово, но мой вопрос о кешировании.Я понимаю, что типичное использование AWS в Laravel или PHP таково:
![Source: https://devops.com/using-laravel-and-aws-what-you-need-to-know/](https://i.stack.imgur.com/X6ZUG.png)
Источник: Использование Laravel и AWS: что нужно знать
Это здорово, но на этой диаграмме облачный фронт представлен только для статических ресурсов s3 - что, конечно, имеет смысл, но я хочу использовать его перед балансировщиком нагрузки чтобы передать мой заголовок геолокации.
Но я также не обязательно хочу 2 облачных фронта - один для приложения и один для корзины s3.Это кажется дорогостоящим и неэффективным, особенно, если Cloudfront пропускает кеш приложения.
Когда я, например, запрашиваю домашнюю страницу, он говорит:
x-cache: Miss from cloudfront
На мой взгляд, у меня есть несколько вариантов, ищущих руководство по лучшему.
- Используйте два облачных фронта один для s3 (например, images.example.com)и один для ec2 за балансировщиком нагрузки (example.com) и попытайтесь настроить облачный фронт перед балансировщиком нагрузки (для приложения laravel на example.com) для выполнения полностраничного и HTML-кэширования.Как я могу это сделать?Я не хочу использовать Cloudfront только для геолокации и не использовать преимущества динамического кэширования.
- Использование двух облачных фронтов и отсутствие динамического кэширования - поэтому большая часть CDN приложения не будет кэшироваться, и я просто буду использоватьэто для геолокации - это кажется неправильным и может показаться, что я должен просто использовать другой сервис для этого - но бюджет ограничен.
- Используйте один облачный фронт и удалите корзину s3 и просто кеш из общедоступного каталога ec2- не будет работать, потому что общедоступная папка должна быть скопирована через ec2 в целевой группе балансировщика нагрузки.
Так что в идеале это будет 1, затем 2, а затем 3 (что на самом деле нене жизнеспособен).
Правильно ли я думаю об этом?Как я могу заставить Cloudfront кэшировать запросы, которые не являются статическими ресурсами, но генерируются PHP, чтобы я не терял весь потенциал Cloudfront только на геолокации.
Спасибо!
Редактировать:
Полагаю, я мог бы также использовать несколько источников для один облачный фронт AWS - но я все равно хотел бы узнать оболее динамичное кеширование.