После долгих поисков я не могу найти вопрос, возможно ли кэшировать весь мой веб-сайт в Cloudfront. (Статические ресурсы, а также HTML, возвращаемый по динамическому запросу).
Мой исходный сервер НЕ является экземпляром EC2, но находится на отдельном хостинге.
Я установил дистрибутив Cloudfront для кеширования всего с моего исходного сервера example.com
. Я могу получить к нему доступ через сгенерированный URL-адрес из Cloudfront abcxyz.cloudfront.net
.
Мне нужна помощь в понимании того, могу ли я указать свой домен на Cloudfront, чтобы example.com
сначала попадает в кеш Cloudfront (аналогично тому, как вы устанавливаете Varnish "перед" исходным сервером).
В такой настройке, что мне установить исходный сервер в Cloudfront? Установив его как example.com
приведет к циклической ссылке, где cloudfront пытается проверить себя на наличие ресурса.
Если мой исходный сервер больше не настроен для ответа на example.com
запросы в этой настройке? (Это позволяет мне настроить исходный сервер в Cloudfront на что-то вроде «content.example.com» и отвечать оттуда на динамические и статические запросы?)
Или Cloudfront не идеален для кеширования всего сайта? Не следует ли мне пытаться обслуживать динамический ответ (вывод HTML) из кеша и обслуживать только статические ресурсы (js, img, css и т. Д.)?
После некоторого дополнительного исследования кажется, что Cloudfront МОЖЕТ кэшировать весь ваш веб-сайт, но независимо от того, хотите вы этого или нет, заслуживает исследования. Надеюсь, это будет полезно для будущих прохожих.
Вот некоторая информация о Доставка по всему сайту Предупреждение: Этот слайдшер является высокоуровневым - он не вникает в детали реализации.
Чтобы выполнить доставку по всему сайту, вам необходимо выполнить следующие общие действия.
Предположим, вы хотите служить
example.com
иwww.example.com
через Cloudfront (вы хотите, чтобы Cloudfront действовал как кеш для всего сайта, аналогично тому, как вы могли бы использовать Varnish).
Настройте распространение в Cloudfront для своего домена.
content.example.com
1) Укажите свои домены верхнего уровня (example.com
и вероятно www.example.com
) на ваш URL-адрес Cloudfront - это будет что-то вроде abc123.cloudfront.net
а не IP-адрес
Заметка что это CNAME (abc123.cloudfront.net
), а не запись A (IP-адрес). Я полагаю, может ли ваш DNS установить CNAME поверх A для корневого домена, у разных провайдеров.
Фактически, я думаю, что установка CNAME для уровня корневого домена противоречит RFC. Это может ограничить вас настройкой «www» версии вашего домена на Cloudfront, с использованием Route 53 или DNS Made Simple как эта статья предлагает.
2) Установите записи DNS так, чтобы что-то вроде content.example.com
указывает на ваш исходный сервер. Это позволит облачному фронту достичь вашего исходного сервера, но общественность по-прежнему будет использовать example.com
и www.example.com
для просмотра содержания сайта
Есть несколько предостережений:
Файлы cookie - важно, удаляет ли кеш файлы cookie. Запрос с файлами cookie обычно не кешируется (точнее, каждый уникальный файл cookie создает отдельную кэшированную копию). Подумайте о том, чтобы Cloudfront игнорировал установленные сервером файлы cookie, чтобы он мог кэшировать контент. Это не повлияет на файлы cookie, добавленные на стороне клиента из таких служб, как Google Analytics или комментарии Disqus. Это повлияет на логику сервера, если вы будете полагаться на разделение файлов cookie / идентификаторов сеансов от гостей и аутентифицированных пользователей.
Cloudfront поддерживает GET
и HEAD
Запросы. POST и другие запросы HTTP-глаголов приведут к появлению страниц с ошибками. Это имеет значение, если вы разрешаете пользователям отправлять формы, а также ajax-запросы.
На моем сайте нет общедоступных пользователей. У меня есть админка, которой пользуюсь только я. Поэтому я могу войти в админку моего сайта через content.example.com
напрямую, а не через общественность example.com
и www.example.com
. Это полностью обходит кеш, устраняя необходимость в передаче файлов cookie и позволяя использовать любые HTTP-команды.
Это работает для меня, но я подозреваю, что для большинства людей это не лучшая ситуация. YMMV с Cloudfront и кешированием всего сайта. Он по-прежнему отлично подходит для кеширования статических ресурсов.