2013-03-26 2 views
6

Мне любопытно узнать, как работает asp.net bundling.Как asp.net Bundling работает внутри

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

У меня есть путаница, как страницы будут ссылаться на эти связанные ресурсы из клиентского браузера.

ответ

8

Давайте посмотрим, что произойдет, когда мы используем связывание в System.Web.Optimization.

В этом примере я использовал «Пустой шаблон ASP.NET MVC 4» и взял последний пакет «Microsoft.AspNet.Web.Optimization» из nuget.

Затем я приступил к регистрации 2 файлов javascript. Один для jquery и другой для бутстрапа.

public static void RegisterBundles(BundleCollection bundles) 
{ 
    var javascriptBundle = new Bundle("~/bundles/javascripts") 
     .Include("~/Scripts/jquery-{version}.js") 
     .Include("~/Content/bootstrap/js/bootstrap.js"); 
    bundles.Add(javascriptBundle); 
} 

Теперь, когда мы выполнили нашу настройку, давайте посмотрим, что произойдет, когда мы просмотрим страницу.

debugview

Вы можете видеть, что оба JavaScript файлы были просто включены, как мы обычно делаем. Это то, что происходит, когда в вашем web.config установлен флаг «debug».

Давайте превратим это в ложное и посмотрим, что произойдет сейчас.

debugsettofalse

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

funnycharacters

Эта смешная строка запроса параметр v = loMmcAiXrKwMoVsM8Ok8Q5jVmuFQUI3fiiRVJQC33Hs1 является ссылкой на наше содержание, и мы можем видеть, что независимо от того, сколько раз мы попали на сайт, он собирается остаться такой же. (то есть освежающий несколько раз).

Давайте посмотрим, что говорит скрипач о ссылке на наши файлы javascript.

cache

Мы можем видеть, что ответ кэширует. Срок действия кеша установлен для «Wed, 26 Mar 2014 06:49:06 GMT». Почти год с сегодняшнего дня.

Последующие запросы к ресурсу будут считываться из кеша браузера. «Этот ответ HTTP/304 указывает на то, что существующий кешированный ответ остается свежим. Заголовки кэша-времени в ответе HTTP/304 могут использоваться для обновления свежести кешированного ответа».

Если Вам необходима дополнительная информация, смотри также http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

+0

Вы не могли бы объяснить это лучше. –

Смежные вопросы