Javascript. Чтобы объединить или не объединить, это вопрос
Хорошо, поэтому я знаю, что очевидно, что для объединения всех страниц Javascript в один внешний файл для повышения эффективности, но это не совсем вопрос здесь.
Скажем, у меня есть Default.htm с полем поиска, в котором есть маленькая маска Javascript. Затем у меня есть Contact.htm с контактной формой, в которой к ней прилагается магия Javascript. И, наконец, у меня есть FAQ.htm с некоторыми панелями jQuery, показывающими ответы... вы получаете изображение.
В принципе, у меня есть три страницы, для которых у всех есть "некоторые" требования к javascript, но ни один из Javascript не используется на других страницах.
Лучше ли комбинировать весь этот Javascript в один большой файл с мини файлами, который загружается один раз и затем хранится в кеше, или лучше использовать отдельный файл Javascript на странице по умолчанию, но не использовать его на странице контактов... и т.д.
Что лучше всего работает в этом сценарии?
Опция: 1
Default.htm
jquery.js
default.js
contact.htm
jquery.js
contact.js
Faq.htm
jquery.js
faq.js
Опция: 2
Default.htm
JQuery-умолчанию контакт-чаво-min.js
contact.htm
JQuery-умолчанию контакт-чаво-min.js
Faq.htm
JQuery-умолчанию контакт-чаво-min.js
PS: для всех вас, ребята asp.net, я использую Combres для Combine, Minify и Version для своих файлов Javascript
Ответы
Ответ 1
Я бы определенно проголосовал за их объединение. Если вас беспокоит синтаксический анализ или время установки для "не использованного" Javascript, я бы рекомендовал структурировать ваш Javascript с каждым файлом в закрытии, а затем запустить блокировки, которые вам нужны на страницах, которые вам нужны. Например:
// File 1
window.closures = window.closures || {}
window.closures["page1"] = (function() {
// Javascript for Page 1
});
// File 2
window.closures = window.closures || {}
window.closures["page2"] = (function() {
// Javascript for Page 2
});
// File 3
window.closures = window.closures || {}
window.closures["page2"] = (function() {
// Javascript for Page 2
});
Затем на вашей странице:
<!-- This one combined.js file will be downloaded once and cached //-->
<script type="text/javascript" src="combined.js"></script>
<script>
// Run the Javascript in your combined.js intended for page2
window.closures["page2"]()
</script>
Ответ 2
объединить в 1 файл. пусть он будет кэшироваться. он загружается один раз на любую страницу, и для любых последующих страниц он может использовать кешированную копию.
Ответ 3
Это всегда действие балансировки количества HTTP-запросов и ограничение переданных байтов, которые еще не нужны.
Существует три возможности:
- объединить все в 1 файл
- имеют три отдельных файла и загружают их по мере необходимости
- есть три отдельных файла, загрузите тот, который необходим для этой страницы, и предварительно загрузите остальные (когда время будет правильным)
Вы только знаете, что лучше всего подходит для вашей ситуации, выполнив тестирование нагрузки A-B.
Все зависит от размера передаваемых данных, перекрытия необходимой функциональности и вероятности того, что некоторые функции необходимы.
Ответ 4
Поскольку это не похоже на то, что много javascript, объединение его в один файл было бы лучше. Только если имеется значительное количество javascript, который не нужно загружать, если пользователь не посещает страницу, вы бы хотели сохранить файлы отдельно.
Ответ 5
Если объединенный файл находится под словом "say", 25kb minified, затем перейдите к нему. Но если это более того, я бы сказал, определите тот, который является самым большим из них, и пусть один JS файл будет отдельным. Объедините остальные. Это ограничение в 25 килобайт тоже не является жестким правилом, это зависит от вас.
Если ваши отдельные файлы имеют размер, скажем, 30 кбайт, я бы рекомендовал не комбинировать их и позволить отдельным js файлам кэшироваться как отдельные js файлы.
Надеюсь, что это поможет.