Агрессивное кэширование и объединение файлов Javascript для сайта в интрасети

Я работаю над улучшением производительности интранет-страницы моей компании. Мы хотим (динамически) объединить наши файлы javascript, а также кэшировать их на 30+ дней. Страница открывается при входе в систему для всех.

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

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

Мы используем IE8, если это имеет значение.


person Tom Chandler    schedule 17.11.2011    source источник


Ответы (2)


Наиболее заметное влияние наличия нескольких файлов JavaScript — это время, необходимое для отображения страницы. Каждый тег скрипта обрабатывается отдельно и добавляет время к общему процессу рендеринга.

Довольно хороший ответ можно найти здесь @ множественные и одиночные теги script

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

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

В качестве полезного примера вот некоторые статистические данные из Xpedite (инструмент для минимизации во время выполнения, который я создал некоторое время назад); обратите внимание на разницу во времени от загрузки до готовности для комбинированных и некомбинированных сценариев.

person Chris Baxter    schedule 17.11.2011
comment
Я уже все это выяснил и хотел бы упростить загрузку нашего Javascript, но на странице несколько десятков встроенных тегов скрипта, и это потребует довольно серьезной переделки. Мой вопрос касался влияния нескольких тегов сценария на один тег сценария, если сценарии, на которые они ссылаются, уже были кэшированы. - person Tom Chandler; 17.11.2011
comment
@Zoho - время, необходимое для анализа JS, по-прежнему применяется, даже если скрипт был кэширован; как уже упоминалось, ссылка на соответствующий вопрос SO содержит более подробную информацию. Таким образом, ответ на ваш вопрос: может потребоваться больше времени для отображения страницы с большим количеством тегов сценария. - person Chris Baxter; 17.11.2011
comment
Я подумал, что будет медленнее анализировать несколько файлов js, даже если они будут кэшированы, мне просто нечего было цитировать. Спасибо. - person Tom Chandler; 17.11.2011

  1. Объедините все ваши файлы JavaScript в один большой файл (что сведет к минимуму количество запросов к серверу) и задайте ему имя, например, «application_234234.js»; число представляет собой последний раз, когда вы изменяли файл, и поможет браузеру узнать, что это новый файл (таким образом, при его изменении не будет кеша).
  2. Добавьте заголовок Expires или Cache-Control (установите его очень далеко в будущем). Поскольку имя файла будет меняться каждый раз, когда вы его изменяете, вам не о чем беспокоиться.
  3. И последнее, но не менее важное: сжимайте и сжимайте файл JavaScript.

Это несколько важных советов, но узнайте больше о передовом опыте на: http://developer.yahoo.com/performance/rules.html

person alessioalex    schedule 17.11.2011
comment
Я уже пытаюсь это практиковать. Мы используем инструмент объединения во время выполнения, который запускается на нашем веб-сервере для объединения файлов по мере их запроса. Моя команда часто возражает против объединения/минификации файлов перед развертыванием, потому что инструменты, которые мы должны использовать, затрудняют для нас локальную разработку с этим. - person Tom Chandler; 17.11.2011
comment
Я предлагаю вашей команде также установить среду разработки, в которой файлы не минимизируются и не сжимаются в один файл. Думаю, это облегчило бы вам жизнь, ребята. - person alessioalex; 17.11.2011