Должен ли AWS CloudFront * увеличить * время загрузки файлов с нечастым доступом?

9

Я новичок в CDN и экспериментирую с CloudFront. Я все настроил, и все, кажется, работает нормально. Я могу создать статическое изображение на странице и получить к нему доступ через мой дистрибутив CloudFront. Я использую пользовательское происхождение (т.е. не ведро s3).

Я боюсь, что мне может быть хуже с точки зрения производительности, хотя. У меня есть тестовая страница, которая загружает те же 20 или около того изображений с и без CDN. Глядя на сетевую панель в Firebug, при первой загрузке этой страницы изображения, которые загружаются непосредственно с исходного сервера, появляются намного быстрее. При последующих загрузках страницы преимущества CDN становятся очевидными - после 3-5 обновлений CDN работает лучше, чем исходный сервер.

Таким образом, я вижу, что на популярной странице нашего сайта, которая постоянно посещается, это будет полезно. И я должен ожидать выгоды, потому что я нахожусь в Сиэтле (в двух шагах от Amazon), а мой сервер находится в CA.

Дело в том, что если я покидаю страницу на несколько минут, а затем перезагружаюсь, все возвращается на круги своя, а CloudFront хуже, чем исходный сервер. Это ожидается? Неужели вещи так быстро выпадают из CDN-кэша?

Возможно ли, что что-то в моих настройках ухудшает производительность? Или реальность заключается в том, что CDN будет исключительно позитивным для контента, к которому в настоящее время обращаются в среднем каждые несколько секунд?

(кросс-пост с форума AWS, потому что я был испорчен навсегда по срокам выполнения SO)

ОБНОВИТЬ:

Ниже приведены два хороших ответа, на которые стоит обратить внимание, если у вас есть вопросы о производительности CloudFront. Недавно я нашел одно объяснение моей конкретной проблемы, хотя оно не упоминалось. Я оставил TTL на 5 минут в качестве оплошности. Так как я также использую пользовательское происхождение, есть дополнительный обходной путь к авторитетному серверу имен, чтобы преобразовать его в настоящий домен Amazon CloudFront. Теперь, когда настройка TTL вернулась к 12 часам, кажется, что длительные нагрузки происходят реже.

Greg
источник
Да, возможно, что CloudFront медленнее, чем просто прямой переход к быстрому серверу, потому что CloudFront является одним из самых медленных CDN из-за способа, которым Amazon реализовал его с несколькими уровнями разрешения DNS и т. Д. Запустите некоторые тесты из difnet в разных точках мира и решите, подходит ли вам это или нет - используйте для тестирования webpagetest.org .
Jesper M

Ответы:

5

Cloudfront устанавливает заголовок в ответах, таких как «X-Cache: Hit from cloudfront» в ответах. Предположительно, он скажет «Мисс», если ваш файл не был в кеше узла, на который вы были перенаправлены.

Возможно, ваши файлы просто недостаточно популярны, поэтому они извлекаются из кэша CloudFront более популярным контентом, даже если 24 часа не прошло. Также возможно, что перегрузка ввода-вывода или некоторые другие обстоятельства внутри конкретного узла CloudFront замедляют доступ. Cloudfront очень недорогой по сравнению с Akamai или LimeLight. Наихудшая производительность и гарантированный уровень обслуживания являются двумя причинами использования более дорогих плееров.

Я бы провел тестирование, поместив только один популярный файл в облачный фронт в производственном режиме, а затем использовал бы периодические тесты, чтобы увидеть, показывает ли CloudFront хиты (также записывать общее время транзакции).

rmalayter
источник
Я обновил вопрос другим потенциальным объяснением проблемы перфекта, которую я видел, это то, что я оставил настройку TTL на низком уровне 5 минут, но при переключении на 12 часов я не думаю, что вижу эти случайные перфом выдает как часто.
Грег
7

Это возможно. Однако одной из целей CDN является масштабируемость. Вы можете ожидать, что CDN будет выполнять то же самое, если вы одновременно выбрасываете 100 посещений или 1 миллион посещений.

Что касается ваших настроек, я ничего не могу узнать из предоставленной вами информации, но я думаю, что вышеизложенный момент делает CDN таким ценным. Если вы создаете сайт, который не получает много трафика, вам может быть лучше без CDN. Тем не менее, CDN обеспечит меньшую нагрузку на ваш веб-сервер, если вы получаете большой трафик, потому что вы передаете подачу мультимедиа другому серверу. И последнее замечание: хороший CDN (а Amazon - это) будет использовать их обширную сеть для обслуживания вашего контента из ближайшего к запрашивающему места. Во многих случаях они могут обслуживать контент от провайдера-запросчика, что означает ОЧЕНЬ быстрое время загрузки.

Надеюсь, это поможет.

Джесси Банч
источник
Спасибо Джесси - очень полезно. Вопрос о масштабировании хорошо принят. И у нас достаточно трафика, чтобы это имело большое значение. Я все еще хотел бы знать политику кэширования, хотя. Я нашел огромное количество информации о том, КАК настроить CDN, и очень мало о его характеристиках. Мне, например, интересно, должен ли я исключить (из CDN) старый контент, к которому обращаются очень редко.
Грег
Грег - Я не вижу аргументов для исключения контента, кроме как по финансовым причинам. Однако вы можете контролировать заголовки кэша вашего объекта в Amazon. Вы можете попытаться разобраться в этом: stackoverflow.com/questions/269840/…
Джесси Банч
Это позволило бы вам указать заголовки истечения срока давности, как если бы вы использовали обычный медиа-сайт.
Джесси Банч
Еще раз спасибо. Эта ссылка для управления кэшем не имеет отношения к моей ситуации, потому что я использую собственный сервер происхождения, а не s3. Но принцип применяется, и у меня есть далеко заданные заголовки истечения будущего. Кстати, документы Amazon говорят, что контент хранится в кеше 24 часа, но мои эксперименты показывают что-то другое.
Грег
1

Я неправильно понял? Разве управление кэшем не управляет тем, как долго объекты живут в периферийных местоположениях, прежде чем периферийные местоположения перезагружают их из S3? Так что, несомненно, они имеют отношение к вашей ситуации, используете ли вы S3 или ваше собственное происхождение? Нет?

В разделе часто задаваемых вопросов по Amazon говорится: «В. Как долго Amazon CloudFront будет хранить мои файлы в периферийных местоположениях? По умолчанию, если не установлен заголовок элемента управления кэшем, каждое пограничное местоположение проверяет наличие обновленной версии вашего файла всякий раз, когда он получает запрос, превышающий Через 24 часа после предыдущего раза он проверил источник на наличие изменений в этом файле. Это называется «сроком действия». Вы можете установить этот срок действия как 1 час или столько, сколько хотите, установив заголовки элементов управления кэшем для своих файлов в вашем источнике. Amazon CloudFront использует эти заголовки элементов управления кэшем, чтобы определить, как часто необходимо проверять Происхождение обновленной версии этого файла. Если ваши файлы меняются не очень часто, рекомендуется установить длительный срок действия и внедрить систему управления версиями для управления обновлениями ваших файлов. "

[Я предполагаю, что последнее предложение означает «неудача, если вы установите 50 лет, а затем захотите изменить файл».]

Разве основной смысл использования CDN заключается в том, что он содержит статический контент? Если это так, поможет ли это использовать значительно более длительный TTL, чем один день? Для практически всего (всех изображений и CSS) я использую Cache-Control = "max-age = 604800, public, must-revalidate" (т.е. 1 неделя). По моему опыту, файлы определенно могут занять неделю, чтобы измениться, если я загружу новые версии на S3.

Надеюсь это поможет. [Кстати: по вашему более общему вопросу, я тоже задаюсь вопросом, помогает ли CDN работать так же эффективно, как вы думаете. Я собираюсь переместить весь свой сайт (включая CDN) на сверхбыстрый выделенный сервер и провести некоторые тесты, чтобы выяснить это.]

Крис У
источник
Вы правы в том, что управление кешем влияет на то, как долго контент удерживается на краю. TTL это отдельный вопрос, хотя. TTL контролирует кеширование IP-адреса, назначенного доменному имени. Таким образом, независимо от того, статический файл кэшируется по краям или нет, в первый раз, когда сервер видит URL-адрес файла, он должен найти IP-адрес этого домена. При однодневном TTL вполне вероятно, что соседний сервер имеет эту информацию в своем кеше DNS. С 5-минутным TTL это намного менее вероятно, и требуется полный возврат к моему исходному серверу (не для файла, но для разрешения URL) ..
Грег
Ах, хорошо, спасибо. Я путал DNS TTL и контроль кеша :)
Крис W
1

Причины использовать CDN, если вы ожидаете

  • Статический контент - нечасто или контролируемые обновления
  • Просмотр по всему миру
  • Доступ часто

К вашему веб-сайту обращаются нечасто, как в вашем случае, но у нас есть настройка службы мониторинга, которая запрашивает наш веб-сайт по всему миру. Таким образом, он сохраняет кеш CDN в тепле. Я также хотел бы поделиться нашим примером, который является простым и демонстрирует возможности CDN.

Более того, мы ожидаем, что ежемесячная плата в размере 2,2 $ в отличие от 7 $ для Godaddy Server (который не может справиться с скачками)

Среднее время загрузки страницы

Среднее время загрузки страницы

JehandadK
источник