AWS Cache Dynamic Content / Full HTML (Laravel) - PullRequest
0 голосов
/ 16 февраля 2019

Я помещаю приложение Laravel (PHP) на AWS, и пока все довольно хорошо.

Но у меня есть новое требование!

Нам нужно автоматически преобразовать валюту по умолчанию в одну из доступных валют для пользователя в зависимости от их геолокации.Я подумал, что сейчас самое время настроить Amazon Cloudfront перед моим балансировщиком нагрузки, потому что он (если я правильно понимаю) передаст заголовок геолокации (среди других заголовков) , чтобы обеспечитьчто пользователи получают соответствующий контент.Это здорово, но мой вопрос о кешировании.Я понимаю, что типичное использование AWS в Laravel или PHP таково:

Source: https://devops.com/using-laravel-and-aws-what-you-need-to-know/

Источник: Использование Laravel и AWS: что нужно знать

Это здорово, но на этой диаграмме облачный фронт представлен только для статических ресурсов s3 - что, конечно, имеет смысл, но я хочу использовать его перед балансировщиком нагрузки чтобы передать мой заголовок геолокации.

Но я также не обязательно хочу 2 облачных фронта - один для приложения и один для корзины s3.Это кажется дорогостоящим и неэффективным, особенно, если Cloudfront пропускает кеш приложения.

Когда я, например, запрашиваю домашнюю страницу, он говорит:

x-cache: Miss from cloudfront

На мой взгляд, у меня есть несколько вариантов, ищущих руководство по лучшему.

  1. Используйте два облачных фронта один для s3 (например, images.example.com)и один для ec2 за балансировщиком нагрузки (example.com) и попытайтесь настроить облачный фронт перед балансировщиком нагрузки (для приложения laravel на example.com) для выполнения полностраничного и HTML-кэширования.Как я могу это сделать?Я не хочу использовать Cloudfront только для геолокации и не использовать преимущества динамического кэширования.
  2. Использование двух облачных фронтов и отсутствие динамического кэширования - поэтому большая часть CDN приложения не будет кэшироваться, и я просто буду использоватьэто для геолокации - это кажется неправильным и может показаться, что я должен просто использовать другой сервис для этого - но бюджет ограничен.
  3. Используйте один облачный фронт и удалите корзину s3 и просто кеш из общедоступного каталога ec2- не будет работать, потому что общедоступная папка должна быть скопирована через ec2 в целевой группе балансировщика нагрузки.

Так что в идеале это будет 1, затем 2, а затем 3 (что на самом деле нене жизнеспособен).

Правильно ли я думаю об этом?Как я могу заставить Cloudfront кэшировать запросы, которые не являются статическими ресурсами, но генерируются PHP, чтобы я не терял весь потенциал Cloudfront только на геолокации.

Спасибо!

Редактировать:

Полагаю, я мог бы также использовать несколько источников для один облачный фронт AWS - но я все равно хотел бы узнать оболее динамичное кеширование.

...