Javascript Script, объединяющий и кэширующий - PullRequest
1 голос
/ 09 марта 2010

Я создаю интенсивное веб-приложение AJAX (с использованием веб-служб ASP.NET, JQuery и WCF) и изучаю создание обработчика HTTP, который обрабатывает объединение и сжатие сценариев для моих файлов JavaScript и файлов CSS.Я знаю, что объединение скриптов - это, как правило, менее предпочтительный подход, и я уверен, что, скорее всего, так оно и будет, но мой вопрос такой ...

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

Есть ли в этом смысл?Мысли? * * 1005

Ответы [ 4 ]

1 голос
/ 10 марта 2010

Как уже упоминалось: минимизируйте, gzip и включите кэширование (установите время истечения и проследите, чтобы вы поддерживали etags) для одного статического файла JS, который у вас есть, и для одного статического файла CSS, который у вас есть. Кроме того, рекомендуется загружать ваши CSS-файлы как можно раньше, а ваши JS-файлы - как можно позже (загрузка JS-файлов блокирует другие загрузки, и браузер быстрее отображает страницу, если он получил CSS как можно скорее. ). Спрайты также помогают, если у вас много маленьких изображений / иконок. Загрузка статического контента из поддоменов поможет браузеру загружать больше файлов одновременно, и вы можете удалить все свои куки для этих поддоменов, чтобы уменьшить размер заголовка http.
Вы можете обратиться к YSlow для анализа производительности, это отличный инструмент!

1 голос
/ 09 марта 2010

Чем меньше файлов JS вы обслуживаете, тем быстрее будут ваши страницы из-за меньшего количества обращений к серверу. Я бы вручную поместил весь общий js-код в один файл (или как можно меньше файлов), весь css-код в один файл и т. Д. И не беспокоился об использовании обработчика для объединения файлов. Обработчику потребуется время на обработку, чтобы объединить файлы, поэтому вы также заплатите этот штраф. Вы можете включить сжатие GZIP на IIS и сделать это за вас. Я бы запустил что-то вроде YUI Compressor для файлов Javascript, используемых в производстве.

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

EDIT Я исправил некоторые браузеры (например, FF), которые могут кэшировать содержимое SSL, но не все.

0 голосов
/ 09 марта 2010

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

0 голосов
/ 09 марта 2010

обычно менее предпочтительный

это для live js? Я думаю о JavaScriptMVC, который сжимает весь код в один файл, когда он используется для производства, а не для разработки ... Мне кажется, это тяжелый вес.

...