Лучше ли использовать кеш или CDN?

Я изучал производительность браузера при загрузке статических файлов, и это сомнение пришло.

Некоторые люди говорят, что использование статических файлов CDN (то есть Google Code, jQuery latest, AJAX CDN,...) лучше для производительности, потому что оно запрашивает из другого домена, чем вся веб-страница.

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

Мне интересно, какая манера - лучшая, думающая о производительности, и если я могу объединить оба.

Спасибо заранее, ребята, я люблю StackOverflow.

Ответ 1

В конечном итоге лучше использовать обе методики, если вы выполняете оптимизацию веб-производительности (WPO) сайта, также известную как оптимизация интерфейса (FEO). Они могут прекрасно работать рука об руку. Хотя, если бы мне пришлось выбирать один за другим, я бы определенно выбрал кеширование в любой день. На самом деле я бы сказал, что вам необходимо настроить правильное кэширование ресурсов для всех веб-проектов, даже если вы собираетесь использовать CDN.

Кэширование

Настройка Expires заголовки и кэширование ресурсов является обязательным и должно быть сделано в 100% случаев для ваших ресурсов. На самом деле нет оправдания тому, что вы не выполняете кеширование. На Apache это очень легко mod_headers.c после включения mod_expires.c и mod_headers.c. В проекте HTML5 Boilerplate есть хороший пример реализации в файле.htaccess, и если ваш сервер - это что-то вроде nginx, lighttpd или IIS, проверьте эти другие конфигурации сервера.

Здесь хорошо читается, если кто-то заинтересован в изучении кеширования: учебник по кэшированию Mark Nottingham

Сеть доставки контента

Вы упомянули Google Code, jQuery latest, AJAX CDN и я хочу просто коснуться CDN в целом, включая те, за которые вы платите и размещаете свои собственные ресурсы, но то же самое относится, если вы просто используете jquery размещенные файлы cdn или загружаете что-то из http ://cdnjs.com/, например.

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

Это особенно актуально, если ваш трафик является мировой аудиторией, а поставщик CDN имеет множество всемирных периферийных/одноранговых сетей. Это также значительно сократит пропускную способность вашего веб-хостинга и использование процессора (немного), поскольку вы выгружаете часть работы в CDN для доставки ресурсов.

CDN может в некоторых более редких случаях оказывать негативное влияние на производительность, если латентность CDN заканчивается медленнее, чем ваш сервер. Кроме того, если вы оптимизируете и используете слишком много распараллеливания ресурсов (используя несколько поддоменов, таких как cdn1, cdn2, cdn3 и т.д.), Возможно, что это замедлит работу пользователя и вызовет дополнительные дополнительные запросы DNS. Здесь необходим хороший баланс.

Еще одно негативное воздействие, которое может произойти, - это если CDN не работает. Это произошло и произойдет снова. Это более справедливо с бесплатным CDN. Если CDN идет по какой-либо причине, так же как и ваш сайт. Это еще одна потенциальная единственная точка отказа (SPOF). Для ресурсов javascript вы можете получить умный и загрузить ресурс из CDN, и если он не сработает, в любом случае, затем обнаружите и загрузите локальную копию. Здесь приведен пример загрузки jQuery из ajax.googleapis.com с резервным (взятым из Boilerplate HTML5):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.2.min.js"><\/script>')</script>

Помимо очевидных бесплатных ресурсов API (jquery, google api и т.д.), Если вы используете CDN, вам, возможно, придется заплатить плату за использование, поэтому он будет добавлять к стоимости хостинга. Конечно, для некоторых CDN вы должны даже заплатить дополнительно, чтобы получить доступ к определенным местам, например, азиатские узлы могут быть дополнительной стоимостью, чем Северная Америка.

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

CDN будет наиболее эффективным, если у вас есть хорошее количество статического контента (изображения, скрипты, css и т.д.).

Также CDN повысит производительность. Когда конкретный запрос делается пользователем, сервер, ближайший к этому пользователю (с точки зрения минимального количества узлов между сервером и пользователем), динамически определяется. Это оптимизирует скорость доставки контента этому пользователю.

Ответ 5

Согласитесь с @Anthony_Hatzopoulos (+1)

CDN compliments Caching, также в некоторых случаях это поможет оптимизировать директивы кэширования.

Например, компания, я работаю над интегрированными алгоритмами обучения в своем CDN для идентификации и кэширования динамически генерируемых объектов.

Обычно этот объект был бы не-Cachable (т.е. [Hache-заголовок [Cache-Control: max-age = 0]), но в этом случае система может идентифицировать возможности кэширования и переопределять исходные заголовки HTTP-заголовков. (например: динамически генерируемый популярный продукт, который должен быть Cached или популярной страницей результатов поиска, которая, будучи динамически генерируема, по-прежнему отображается со временем в той же форме тысячам пользователей).

И да, прежде чем вы спросите, система также может идентифицировать персонализированные данные и очень свежесть, чтобы предотвратить ложные срабатывания... :)

Реализация такого алгоритма была возможна только благодаря технологии обратного прокси-сервера CDN, и это пример того, как CDN и Caching могут дополнять друг друга, чтобы создать лучшие и разумные решения ускорения.

Ответ 6

Выше этих цитат экспертов объясняется идеальное понимание технологии CDN, а также кеша. Я бы просто предоставил свой личный опыт, я работал над сайтом joomla virtuemart и, к сожалению, он не позволит обновлять новую версию joomla и virtuemart, потому что она слишком сильно настроена поля на страницах продукта, поэтому, когда посетитель до 900/Дней и много пользователей не могут поместить свои предметы в свою корзину, потому что каждый раз, когда вызываемые партии js и ajax вызываются для предметов заказа, требуется слишком много времени

После оптимизации сайта мы решили использовать CDN, тогда производительность действительно улучшается, а запись из gtmetrix, первая оценка YSlow составляла 50%, а затем после оптимизации + CDN она переходила на 74%

https://gtmetrix.com/reports/www.florihana.com/jWlY35im

и с панели управления CDN вы могли видеть, какой центр обработки данных стоит больше всего и данные, которые больше всего нужны для улучшения маркетинга:

enter image description here

Но да, чтобы настроить CDN, он должен быть осторожным с временем продувки и балансировать количество ресурсов CDN-причины, если это проблема, вам нужно выяснить, какой ресурс CDN-причина

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