Разве внешние файлы JavaScript не приводят к большей обработке на стороне клиента?

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

В принципе, я хотел бы получить представление о том, правильно ли это.

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

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

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

Спасибо грей

3 ответа

Если у меня есть файл из 200 строк, и я разделяю его на 5 файлов по 40 строк в каждом, общее количество строк остается равным 200 НО. помните, что если я вытащил файлы 1-4 на предыдущей странице, мне нужно только вытащить файл 5, поскольку 1-4 находятся в моем кэше. Кроме того, в большинстве современных браузеров такие запросы выполняются очень быстро, поэтому вместо загрузки одного большого файла для одного файла я получаю 5 потоковых загрузок небольших файлов.

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

Лучше упаковать javascript для всех страниц в один файл. Файл будет кэширован и не загружен снова браузером для последовательных запросов. Причина в том, что выполнение веб-запроса намного дороже для вашего сервера и клиента, чем для клиента, чтобы проанализировать файл javascript.

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

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

пользователь переходит на каждую страницу, для каждой страницы он должен загружать не только JavaScript для этой страницы, но и JavaScript для остальных четырех страниц

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

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

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

Для вашего подвопроса, посмотрите на вкладку "Net" Firebug. Он покажет вам, какие ресурсы он загружает и откуда и сколько времени занимает их обработка.

Другие вопросы по тегам