Ответ 1
Строка запроса v имеет маркер значения, который является уникальным идентификатором, используемым для кэширования. Пока пакет не изменится, приложение ASP.NET запросит пакет, используя этот токен. Если какой-либо файл в пакете изменится, инфраструктура оптимизации ASP.NET создаст новый токен, гарантирующий, что запросы браузера для пакета получат последний пакет.
Почему сервер проверяет?
Браузеры используют эвристику свежести, чтобы определить, должны ли они проверять ресурс с сервером или просто вытаскивать его из кеша.
Браузер будет обслуживать кешированные файлы, не проверяя их с сервером, если только одно из следующих значений:
- Эвристика свежести не выполняется (т.е. файл в кеше не считается свежим).
- Вы изменили заголовок expires или другой заголовок кеширования.
- У вас установлен браузер для отключения кэширования.
- URL-адрес ресурса изменяется или отличается.
Добавление файла Web.config в папку Scripts:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseExpires"
httpExpires="Thu, 01 Jan 2016 00:00:00 GMT" />
</staticContent>
</system.webServer>
</configuration>
Это устанавливает заголовок Expires Header в течение года. это позволит вашим файлам обслуживаться непосредственно из кеша без проверки с сервером на следующий год.
Как и для пучков, заголовки явно устанавливаются внутри System.Web.Optimization.dll
:
private static void SetHeaders(BundleResponse bundle, BundleContext context)
{
if (context.HttpContext.Response != null)
{
if (bundle.ContentType != null)
{
context.HttpContext.Response.ContentType = bundle.ContentType;
}
if (!context.EnableInstrumentation && context.HttpContext.Response.Cache != null)
{
HttpCachePolicyBase cache = context.HttpContext.Response.Cache;
cache.SetCacheability(bundle.Cacheability);
cache.SetOmitVaryStar(true);
cache.SetExpires(DateTime.Now.AddYears(1));
cache.SetValidUntilExpires(true);
cache.SetLastModified(DateTime.Now);
cache.VaryByHeaders["User-Agent"] = true;
}
}
}
поэтому вам нужно проверить, что вы не нарушаете никаких правил, заставляющих браузер проверяться с сервером!
ссылки:
Update
Если ваша цель состоит в том, чтобы ваши сценарии всегда были выбраны как:
<script src="/Scripts/printarea/jquery.PrintArea.js"></script>
<script src="/Scripts/pagedown/Markdown.Converter.js"></script>
<script src="/Scripts/pagedown/Markdown.Sanitizer.js"></script>
<script src="/Scripts/pagedown/Markdown.Editor.js></script>
Вместо
<script src="/bundles/textview?v=cNvP0r6Jo6hsl2Sdzhw-o3kAK7t2JdcNWiG0iIg7Lys1"></script>
Затем добавьте следующее к методу RegisterBundles
(отключив объединение и минимизацию):
BundleTable.EnableOptimizations = false;
Если
EnableOptimizations
true
или атрибут отладки в Компиляция Элемент в файле Web.config имеет значениеfalse
, файлы не будет в комплекте или не уменьшена. Кроме того, версия .min файлы не будут использоваться, будут выбраны полные версии отладки.EnableOptimizations
переопределяет атрибут отладки в компиляции Элемент в файле Web.config