2014-10-26 2 views
1

Моя идея - использовать облачный режим для кэширования один весь сайт, который находится в EC2. Но у меня много хлопот. Если я установил опцию cloudfront Передовые заголовки на none, по умолчанию index.html из apache кэшируется (вероятно, потому, что CF кэширует URL LB). Если я устанавливаю Вперед Заголовки к Whitelist и добавить хозяин в Белый список заголовков сайт показывает нормально, но я могу видеть в заголовке ответа:Проблема CloudFront при использовании балансировки нагрузки и маршрута 53

X-Amz-Cf-Id:Ij8TsEU2hPehG53Op6LX1zFDmZfYWBOVFn8el8ApicCQYdYEi69HsQ== 
X-Cache:Miss from cloudfront 

Вот текущий сценарий:

  1. Маршрут 53 с A псевдоним, указывающий на CloudFront (для моего голого домена и www)
  2. CloudFront с Origin Domain Name = балансировка нагрузки имени DNS, также CNAME настроен на голый домен и WWW
  3. Load Balancer с EC2
  4. EC2 с несколькими сайтами (я просто хочу использовать CF в одном из них)

Может ли кто-нибудь помочь мне, как правильно его настроить?

Update 1 Только быстрое наблюдение, сайт находится в WordPress. Но я не думаю, что необходимо использовать любой модуль cdn (например, W3 Total Cache), потому что я хочу, чтобы весь сайт был кэширован.

+0

'X-Cache: Miss from cloudfront' - это именно то, что вы ожидаете увидеть, в первый раз, когда ресурс запрашивается через Cloudfront. Это означает, что у Cloudfront не было кэшированной копии страницы. Обновите, и вы должны начать видеть «хит» вместо «пропустить». Вы пробовали это? –

+0

Привет, Майкл, к сожалению нет ... Я сделал пару перезагрузок после настройки и теперь (через 9 часов) я все еще получаю «X-Cache: Miss from cloudfront». Судя по тому, что если я устанавливаю Forward Headers в None, значение по умолчанию index.html кэшируется – Thomas

+0

В разделе «Поведение» вашего дистрибутива CF у вас есть задание «Кэширование объектов»? Если для него задано значение «Использовать заголовки кэша Origin», вам необходимо вернуть заголовок Cache-Control для каждого запроса. Если вы этого не сделаете, CF автоматически истечет каждый запрос немедленно. Вы можете проверить это, установив Object Caching для настройки и указав TTL. –

ответ

0

Посмотрите раздел «Поведение» вашего дистрибутива CloudFront. Там есть настройка для кэширования объектов. Если для него задано значение «Использовать заголовки начального кэша», вам необходимо вернуть заголовок Cache-Control для каждого запроса. Если ваше приложение не устанавливает заголовок Cache-Control, тогда установите Object Caching в «Customize», а в поле «Minimum TTL» установите соответствующий TTL для ваших объектов.

Если вы не настроите свой собственный заголовок Cache-Control, и вы оставите этот параметр по умолчанию «Использовать заголовки кэша исходного кода», то вы по существу будете побеждать цель CDN, поскольку каждый запрос, сделанный через CDN, будет эффективно истекает немедленно, поэтому каждый запрос через CDN по-прежнему будет извлекаться из источника.

Смежные вопросы