Лучше ли миниатюрировать javascript в одном комплекте для всего сайта или пакета для каждой страницы?
При минимизации JavaScripts вместе в веб-разработке лучше ли это с точки зрения времени загрузки пользователя:
- создайте один большой пакет JavaScript, содержащий все script, и включите его на каждую страницу - чтобы каждая страница, вероятно, не нуждалась во всем, но как только пользователь кэширует его, им не нужно любые дополнительные скрипты (до тех пор, пока они не истекут из их кеша, конечно) - оптимизация для числа запросов
- создайте один пакет JavaScript на странице, чтобы каждая страница загружала только script, который ему нужен, и ничего больше - поэтому каждая страница при первой загрузке определенно требует запроса JS (но все же впоследствии будет кэшироваться. размер из-запросов.
Мне интересны некоторые данные, на которых основывается решение, для какой стратегии следует использовать. Я могу прийти к выводам, основанным на анекдоте, так же легко, как и все остальные: -)
Ответы
Ответ 1
Это действительно зависит от размеров и функций script. Обычно для каждого вашего сайта используется один master.js, который содержит все функции, необходимые для каждой страницы вашего сайта, в то время как у других js файлов есть функции, которые могут потребоваться только на определенных страницах.
Возьмите переполнение стека, например. У них есть файл master.js, который включен на каждую страницу сайта, но когда вы заходите на страницу вопросов или страницу "задайте вопрос", вы увидите wmd.js. Этот script включает в себя все функции для редактора, которые нужны на меньшем количестве страниц.
Ответ 2
Я бы предпочел бы 1 миниатюрный файл js для всего сайта. С течением времени это всегда работает лучше, чем наличие нескольких js файлов.
Подробнее об этом ссылка.
Ответ 3
Это полностью зависит от того, что в ваших скриптах. Если у вас есть множество небольших функций, которые используются широким выбором страниц, тогда да, один файл будет лучше. Если у вас есть большой script, который используется только одной страницей, вы обычно не хотите замедлять начальное время загрузки на первой странице, включив его в общий script.
Итак, вы, как правило, оказываетесь в компромиссе, с базовыми функциями, разделяемыми на всех страницах в одном script, и более сложными и конкретными функциями в сценариях для каждой страницы или каждой группы. Очень редко будет полезно перейти ко всем опциям-2 hog и иметь полностью отдельный script для каждой страницы.
Совместное использование функций в одном файле и отдельные сложные скрипты, специфичные для страницы, также обычно более удобны для обслуживания.
Ответ 4
Если вы реализуете веб-сайты в ASP.NET MVC, вы можете найти следующий подход как наиболее разумный, который я использую все время.
Составьте список всех файлов JavaScript, используемых в проекте, которые используются повсюду, и те, которые используются многими или большинством страниц. Это определяет ваш общий комплект, который вы должны включить с главной страницы. Функция MVC4 Bundle and Minification делает магию там, вам просто нужно их перечислить.
Остальная часть JavaScript обычно используется для локального использования, т.е. только в одном представлении, эффективно реализуя представление. И по этой причине он должен находиться внутри представления, полностью несжатого.
Например, я широко использую AngularJS в представлениях, поэтому каждый такой вид содержит собственный контроллер angular и другие локальные элементы по мере необходимости. В зависимости от сложности просмотра он может даже иметь свой собственный набор директив, сервисов и фабрик, хотя обычно они входят в частичный вид уровней один-два.
Суть в том, что не пытайтесь обременять себя комплектом JavaScript, предназначенным для локального использования. Свяжите только самые общие вещи и сделайте это только в одном месте - странице вашего продукта. Оставьте локальный JavaScript несжатым в локальных файлах, где он используется. Это не влияет на производительность, а ваш код намного легче понять и поддерживать.