Разве опция комбо-загрузчика YUI не побеждает кеширование браузера? - PullRequest
3 голосов
/ 19 июня 2010

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

Скажем, у меня есть сайт с двумя страницами, а первая использует виджеты YUI Calendar, Dialog и Tree, и браузер получает их все в одном комбинированном запросе.с серверов YUI.

И на следующей странице используются только календарь и диалог YUI, но не дерево.Разве это не означает, что теперь технически это другой запрос к серверам Yahoo с другой строкой запроса?Это означает, что эти два виджета будут загружены снова, даже если они просто использовались на первой странице?

В таком случае, лучше ли иметь один запрос к комбинированному серверу, который приведет к одному запросу (во многих ситуациях) неуловимый JavaScript?Или несколько запросов на отдельные компоненты YUI, которые могут быть кэшированы?

(YSlow, похоже, ничего не упоминает по этому вопросу.)

Ответы [ 2 ]

5 голосов
/ 20 июня 2010

Скорее всего, лучше использовать комбо-сервис.При первом посещении вашей страницы пользователи будут оштрафованы количеством http-накладных расходов и издержек обработки, связанных с получением каждого файла.Кроме того, по-прежнему существует проблема ограничения браузеров для одновременных подключений, поэтому при асинхронном обращении с файлами, не обработанными в виде комбо, может быть гораздо худшее время загрузки страницы.Несмотря на то, что вы извлечете выгоду для этих индивидуально кэшированных файлов на последующих страницах, по всей вероятности, каждая страница будет иметь другие запросы модулей, которые будут составлять больше запросов HTTP (помните, что один другой модуль может означать более одного запроса модуля после учета зависимостей).).Таким образом, это означает оптимизированный сетевой ввод-вывод для первой страницы, затем большие полезные нагрузки с минимальными издержками http на последующих страницах по сравнению с очень un оптимизированным сетевым вводом-выводом для первой страницы, а затем меньше контента с большими издержками http на последующих страницах.

Если у вас есть сайт со многими страницами, поддерживающими js, или вы пытаетесь иным образом смягчить начальные проблемы с загрузкой модуля, может быть оправдано избегание комбо.Но на самом деле, если речь идет о бритье каждую последнюю мс от шага загрузки, A) вы можете пропустить более плодотворные оптимизации, и B) единственный реальный способ ответить на ваш вопрос - это профилирование.

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

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

0 голосов
/ 02 февраля 2015

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

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

YUI().use('*', function(Y) {
    // Any modules that were already loaded on the page statically will now be
    // attached and ready to use. YUI will not automatically load any modules
    // that weren't already on the page.
});

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

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