Что быстрее для включения сценариев, использования CDN (Google) или локального их хранения в корне сайта? - PullRequest
26 голосов
/ 30 апреля 2010

Что быстрее для включения сценариев, использования CDN (Google) или локального их хранения в корне сайта?

Ответы [ 7 ]

36 голосов
/ 30 апреля 2010

Если вы имеете в виду основные библиотеки jQuery, используйте google CDN для интернет-сайта (в отличие от внутреннего).

CDN обладает следующими преимуществами, с которыми вам будет сложно конкурировать:

  • Больше серверов
  • Пропускная способность (вы не платите)
  • Геолокация (меньшее время отклика)
  • Избыточность
  • Оптимизированные настройки кэширования
  • Скорее всего, пользователь уже кэшировал файл оттуда
  • Распараллеленные загрузки, пользователь может одновременно получить другой контент с вашего сайта

Хотя вы можете настроить заголовки кэша так же, как они, вы, вероятно, не сможете быстрее обработать файл. При этом библиотека / CDN является лишь частью головоломки. Разные плагины и код, которые у вас есть, также должны быть минимизированы, объединены и , обслуживаемые через gzip .

5 голосов
/ 30 апреля 2010

Зависит от того, насколько быстро работает ваш сервер. Однако CDN, вероятно, быстрее, возможно, ваш клиент уже кэшировал файл с другого веб-сайта.

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

4 голосов
/ 30 апреля 2010

Google CDN: -)
1) Оптимизировано с точки зрения кэша
2) Пользователь получает ресурс от более оптимального узла CDN

3 голосов
/ 04 июля 2010

К сожалению, недавно исследования показали, что Googles CDN фактически снижает производительность.

API библиотек AJAX от Google пытался использовать сетевые эффекты для повышения производительности всех участвующих веб-сайтов путем предоставления общего общего кэша. Однако недавнее исследование обнаружило, что слишком мало людей используют сеть для того, чтобы поразить критическую массу и фактически улучшить производительность сети. В настоящее время накладные расходы на использование сети означают, что использование API библиотек AJAX от Google фактически снижает производительность. Вы должны разместить файл JavaScript локально. Это увеличит потребление полосы пропускания, но увеличит скорость загрузки страницы. От Zoompf.com примечание к отчету об эффективности.

См. Также здесь Стоит ли использовать CDN библиотеки JavaScript?

1 голос
/ 08 марта 2015

Еще быстрее хранить их в локальном хранилище / веб-хранилище. Для этого я создал крошечную библиотеку, и результаты вполне убедительны

  • Загрузка jQuery из CDN: Chrome 268мс , FireFox: 200мс
  • Загрузка jQuery из локального хранилища: Chrome 47ms , FireFox 14ms

Вы можете проверить код на https://github.com/webpgr/cached-webpgr.js он крошечный, и вы прочитаете и поймете все это в течение нескольких минут.

Вот полный пример того, как его использовать.

Полная библиотека:

function _cacheScript(c,d,e){var a=new XMLHttpRequest;a.onreadystatechange=function(){4==a.readyState&&(200==a.status?localStorage.setItem(c,JSON.stringify({content:a.responseText,version:d})):console.warn("error loading "+e))};a.open("GET",e,!0);a.send()}function _loadScript(c,d,e,a){var b=document.createElement("script");b.readyState?b.onreadystatechange=function(){if("loaded"==b.readyState||"complete"==b.readyState)b.onreadystatechange=null,_cacheScript(d,e,c),a&&a()}:b.onload=function(){_cacheScript(d,e,c);a&&a()};b.setAttribute("src",c);document.getElementsByTagName("head")[0].appendChild(b)}function _injectScript(c,d,e,a){var b=document.createElement("script");b.type="text/javascript";c=JSON.parse(c);var f=document.createTextNode(c.content);b.appendChild(f);document.getElementsByTagName("head")[0].appendChild(b);c.version!=e&&localStorage.removeItem(d);a&&a()}function requireScript(c,d,e,a){var b=localStorage.getItem(c);null==b?_loadScript(e,c,d,a):_injectScript(b,c,d,a)};

Вызов библиотеки

requireScript('jquery', '1.11.2', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', function(){
    requireScript('examplejs', '0.0.3', 'example.js');
});
1 голос
/ 30 апреля 2010

Я бы сказал, CDN Google по причинам, о которых говорили другие.

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

Скажем, например, у вас есть сайт для OrlandoFloridaPeopleOnly.com/. Если ваш сервер находится в Орландо, штат Флорида, а ближайшие серверы доставки контента Google находятся в Майами, штат Флорида и в Атланте, штат Джорджия (это правда), ваш сервер может быть [вероятно] быстрее, если у посетителя еще не было кэшированной копии. файла из Google CDN.

Помните, что если вы предоставляете статический контент своим посетителям с вашего сервера, попробуйте распараллелить загрузку, используя субдомены или другие средства. И ради бога ... не передавайте куки для статического контента.

Я не уверен, насколько надежен этот источник: Центры данных Google . Так что не обязательно рассчитывать на это.

0 голосов
/ 30 апреля 2010

Возможно, стоит отметить, что Visual Studio имеет проблемы с Intellisense для CDN Google. У Microsoft также есть CDN, который позволяет Intellisense работать правильно. Но да, используйте CDN.

...