Внешние библиотеки JS


У меня есть несколько внешних файлов js, которые я вызываю на своей странице, на данный момент они вызываются с помощью тегов скриптов в заголовке.

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

Есть ли для этого хорошая практика? Должен ли я держать их внешними или это хорошо чтобы включить их в структуру drupal JS?

Author: kiamlaluno, 2011-03-16

3 answers

Я думаю, что это сильно зависит от того, что это за сценарий. Безусловно, есть преимущества в использовании сторонних сценариев, а не в их локальном включении. В большинстве случаев я попытаюсь использовать API библиотеки Google (http://code.google.com/apis/libraries /) когда это возможно для таких вещей, как swfobject, загрузчик веб-файлов и тому подобное. Преимущество здесь в том, что клиенты могут уже кэшировать эти библиотеки, что повышает производительность по сравнению с их локальным размещением. Для ситуаций, когда нет широко используемый сторонний хост для сценариев, я обычно добавляю их на сайты/все/библиотеки/$имя_библиотеки и включаю их локально, чтобы вы могли воспользоваться возможностями Drupal для объединения и минимизации JS.

 6
Author: beeradb, 2011-03-16 18:26:48

Чистый эффект локального извлечения внешних сценариев зависит от множества факторов. Рассмотрим, например, что:

  • Все браузеры имеют ограничения на количество ресурсов (Javascript/CSS/Изображений), которые они одновременно извлекают с данного сервера; увеличение количества ресурсов в домене может, как следствие, увеличить общую загрузку страницы;
  • Центральные точки распространения (API библиотек Google и т.д.) географически распределены и, вероятно, более надежны и быстры затем ваши собственные серверы;
  • Клиенты, скорее всего, уже имеют библиотеку в кэше, если она распространяется из центральной точки распространения;
  • Drupal 6 особенно глуп в том, как он агрегирует файлы JS и CSS, и это может привести к тому, что вашим клиентам придется загружать одну и ту же библиотеку несколько раз, если они посещают страницы на вашем веб-сайте, которые имеют другой набор файлов Javascript.

В связи с этим я бы посоветовал снова перейти на локальную версию, если вы уже используете версию, размещенную на CDN.

 3
Author: Damien Tournoud, 2011-03-16 17:35:50

Посмотрите на появляющийся модуль Расширенная агрегация CSS/JS - он призван обеспечить наиболее полную и эффективную систему агрегации из когда-либо существовавших.

 3
Author: Vacilando, 2011-03-17 11:34:33