Выгодно ли включать весь JavaScript при развертывании веб-сайта? - PullRequest
1 голос
/ 22 марта 2012

На нашей HTML-странице у нас есть список тегов для загрузки во многие (небольшие) исходные файлы JavaScript.

Для развертывания мы планируем объединить отдельные файлы JavaScript в один пакет, который будет включен вHTML-страница, чтобы сэкономить на «дорогих» HTTP-запросах.

Но было бы еще выгоднее просто записать весь JavaScript прямо в HTML-файл в виде встроенного тега Javascript?

Ответы [ 8 ]

4 голосов
/ 22 марта 2012

Если код JavaScript изменяется при каждом запросе («теги»?), Тогда да, это выгодно.

В противном случае: нет, поскольку браузер не сможет кэшировать файлы JS.

2 голосов
/ 22 марта 2012

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

2 голосов
/ 22 марта 2012

Но было бы еще выгоднее просто записать весь JavaScript прямо в HTML-файл в виде встроенного тега Javascript?

Нет!Вы бы увеличили размер каждого запроса и уничтожили бы кешируемость.Один большой (но внешний) файл JS - это путь.

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

2 голосов
/ 22 марта 2012

Файл лучше, чем запись всего материала в HTML, так как вы можете кэшировать файл javascript, поступающий с вашего сервера, но если вы не кэшируете все файлы .html, вы не получите этого преимущества (т.е. браузеры должны сохранятьповторная загрузка всех встроенных скриптов в html-файлах)

1 голос
/ 22 марта 2012

Я предполагаю, что вы имеете в виду «вставлять в <script> блок», а не в «on *» атрибуты внутри элементов HTML.Если это не так, ответом является определенное нет - атрибуты «вкл.» Труднее поддерживать, и, как правило, это плохо для доступности.

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

Так что это зависит от нескольких вещей, наиболее важными из которых, вероятно, являются:

  • пользователи просматривают несколько страниц?Они вернутся?Если на оба вопроса ответ «нет», то кэширование не принесет пользы, поэтому встроенный JavaScript может быть быстрее.
  • Является ли JavaScript статичным?Если он динамический - как, например, изменения при каждой загрузке страницы, то опять же, кэширование не имеет значения.Возможно, вы могли бы улучшить свою архитектуру JavaScript, чтобы отделить статические биты от динамических.

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

1 голос
/ 22 марта 2012

Я бы посоветовал вам скомпилировать весь ваш javascript в один файл и загрузить его одним тегом <script>.Да, HTTP-запросы занимают некоторое время, и браузеры ограничивают количество одновременных запросов (одним доменом).

Я бы не включил весь JavaScript в HTML, потому что это смешивает логику и представление, предотвращает кэшированиеjavascript) и т. д. Избегайте этого.

Это общее правило, которому я следую: отделяйте контент, который часто отличается от контента, который редко меняется.Таким образом, статический контент будет эффективно кэшироваться.Кроме того, вы можете оптимизировать «жидкое» содержимое (gzip, minify и т. Д.), Чтобы загружать его быстрее.

0 голосов
/ 22 марта 2012

Умные харды скажут: не делай этого, отделяй контент от стилей и скриптов, и я согласен. Но если JS не так много, вы можете сэкономить на дополнительных HTTP-запросах. Да, браузер не будет кешировать его, но это потому, что в этом нет необходимости. И на основе SEO, рейтинг страницы улучшается за счет более быстрой загрузки страницы, определяемой, возможно, при первом посещении, а не после кэша.

0 голосов
/ 22 марта 2012

Я бы так не думал.

Я всегда просто включаю файлы и стараюсь, чтобы мой базовый html выглядел максимально чистым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...