Мне интересно, какое из следующих действий приведет к повышению производительности для страницы, которая загружает большое количество javascript (jQuery + jQuery UI + различные другие файлы javascript). Я прошел через большинство материалов YSlow и Google Page Speed, но я не стал задаваться вопросом о конкретной детали.
Ключевым моментом для меня здесь является то, что сайт, над которым я работаю, не находится в общедоступной сети; это бизнес-платформа для бизнеса, где почти все пользователи являются повторными посетителями (и, следовательно, с кэшами данных, которые, по мнению YSlow, не будут иметь место для большого числа посетителей).
Прежде всего, стандартный подход, рекомендованный такими инструментами, как YSlow, заключается в том, чтобы объединить его, сжать и обслуживать в одном файле, загруженном в конце вашей страницы. Этот подход звучит достаточно эффективно, но я думаю, что ключевая часть рассуждений здесь заключается в повышении производительности для пользователей без кэшированных данных.
В моей системе в настоящее время есть что-то вроде этого
- Все файлы javascript сжаты и загружены в нижней части страницы
- Все файлы javascript имеют датированные даты истечения срока действия кеша, поэтому в течение длительного времени они останутся (для большинства пользователей)
- Страницы загружают только файлы javascript, которые им нужны, а не загружают один монолитный файл, большая часть которого не требуется.
Теперь я понимаю, что если дата истечения срока хранения для файла javascript не была достигнута, то кешированная версия используется немедленно; HTTP-запрос, отправленный на сервер, отсутствует. Если это правильно, я бы предположил, что наличие нескольких тегов не приводит к какому-либо снижению производительности, поскольку у меня все еще нет дополнительных запросов на большинстве страниц (напоминание сверху, что почти у всех пользователей есть заполненные кеши).
В дополнение к этому, не загружая JS, означает, что браузер не должен интерпретировать или исполнять весь этот дополнительный код, который ему не нужен; как приложение B2B, большинство наших пользователей, к сожалению, застряли в IE6 и его мучительно медленном JS-двигателе.
Другим преимуществом является то, что при изменении кода снова нужно извлекать только затронутые файлы, а не весь набор (предоставленный, его нужно будет только один раз, так что это не так полезно).
Я также рассматриваю использование LabJS, чтобы обеспечить параллельную загрузку JS, когда он не кэшируется.
Конкретные вопросы
- Если есть много тегов, но все файлы загружаются из локального кеша, а в целом загружается меньше javascript, это будет быстрее, чем один тег, который также загружается из кеша, но содержит все javascript необходимо в любом месте сайта, а не в соответствующем подмножестве?
- Есть ли другие причины, чтобы предпочесть друг друга?
- Использует ли подобное отношение к CSS? (В настоящее время я использую гораздо более монолитный подход к CSS)