Как включить кэширование для Bundles в MVC5

2

Я создал наборы стилей и скриптов в своем проекте MVC, как указано ниже. Теперь мне нужно включить кэширование для пакетов. Есть ли способ, которым мы можем контролировать продолжительность кэширования для этих пакетов?

bundles.Add(new StyleBundle("~/bundles/css").Include(
  "~/lib/bootstrap/css/bootstrap.min.css",                                                        
  "~/lib/owlcarousel/owl.carousel.min.css",
  "~/lib/owlcarousel/owl.theme.default.min.css",
  "~/StylesCdn/google-font.css",
  "~/assests/css/common.min.css"
));

bundles.Add(new StyleBundle("~/bundles/bottomcss").Include(                            
  "~/lib/chartist/scss/chartist.min.css",
  "~/lib/chartist/chartist-plugin-tooltip.min.css",                            
  "~/StylesCdn/export.min.css"
));

bundles.Add(new ScriptBundle("~/bundles/js").Include(
  "~/lib/bootstrap/js/jquery.min.js",
  "~/assests/js/homelayout.min.js"
));

bundles.Add(new ScriptBundle("~/bundles/bottomjs").Include(
  "~/lib/bootstrap/js/bootstrap.min.js",
  "~/lib/owlcarousel/owl.carousel.min.js",
  "~/assests/js/app.min.js",
  "~/Content/Validation.min.js",
  "~/assests/js/InvestmentCalculator.min.js",
  "~/assests/js/common.min.js",
  "~/assests/js/BindDate.min.js"               
));
  • 0
    Если вы проверяете запросы вашего браузера, вы увидите, что на них ответили 304 Not modified .
  • 1
    Вы читали этот вопрос? stackoverflow.com/questions/28275725/...
Показать ещё 5 комментариев
Теги:
asp.net-mvc
asp.net-mvc-5
bundle

3 ответа

0
Лучший ответ

Как уже было сказано, источник пакета будет кэшироваться на сервере и в браузере в большинстве случаев -if, а не all- (но это будет зависеть от используемого вами серверного программного обеспечения).

"но когда я перезагружаю страницу, она будет отображаться каждый раз"

Сами пакеты не отображаются, они анализируются (они являются ресурсами JS/CSS). После этого проанализированный результат используется для отрисовки страницы.

Эффективно ли выполняется этап синтаксического анализа JS/CSS (с "кэшированием" результатов анализа или без него), зависит от реализации браузера и на него невозможно повлиять с помощью программирования на стороне сервера, создания сценариев или настроек.

2

Хорошо, поэтому другие ответы не кажутся полностью правильными. Вы можете влиять на то, как браузеры пытаются кэшировать эти файлы, изменяя элемент staticContent в вашем файле web.config. (Если вы находитесь на IIS7 или более поздней версии)

Это влияет на то, с какими заголовками кэширования будет обрабатываться статический контент (например, изображения/скрипты). Например, вы можете указать максимальный возраст заголовка и дату, установив следующее:

<staticContent>
  <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
</staticContent>

Дальнейшее чтение относительно того, что можно установить, можно найти в документации здесь:

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/staticcontent/clientcache

0

Пакеты кэшируются браузером по умолчанию, если вы не отключили его вручную. На стороне сервера вы ничего не можете сделать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню