Я создал наборы стилей и скриптов в своем проекте 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"
));
Как уже было сказано, источник пакета будет кэшироваться на сервере и в браузере в большинстве случаев -if, а не all- (но это будет зависеть от используемого вами серверного программного обеспечения).
"но когда я перезагружаю страницу, она будет отображаться каждый раз"
Сами пакеты не отображаются, они анализируются (они являются ресурсами JS/CSS). После этого проанализированный результат используется для отрисовки страницы.
Эффективно ли выполняется этап синтаксического анализа JS/CSS (с "кэшированием" результатов анализа или без него), зависит от реализации браузера и на него невозможно повлиять с помощью программирования на стороне сервера, создания сценариев или настроек.
Хорошо, поэтому другие ответы не кажутся полностью правильными. Вы можете влиять на то, как браузеры пытаются кэшировать эти файлы, изменяя элемент 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
Пакеты кэшируются браузером по умолчанию, если вы не отключили его вручную. На стороне сервера вы ничего не можете сделать.
304 Not modified
.