Я хотел бы создать преобразование пакета, которое изменяет содержимое пакета и запускает кэш, чтобы сломать, однако я не могу сломать кеш.C# Bundle Transform Break cache
До сих пор у меня есть следующий код: -
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
StyleBundle bundle = new StyleBundle("~/Content/Global");
bundle.Transforms.Add(new CacheBreakTransform());
bundle.Include("~/css/main.css");
bundles.Add(bundle);
}
}
public class CachBreakTransform : IBundleTransform
{
void IBundleTransform.Process(BundleContext context, BundleResponse response)
{
if(UpdateNeeded())
{
response.Content = GetUpdatedContent(response.Content);
//cache break needed here
}
}
}
Я могу обновить содержимое пачки, но если файл включен в пакет не изменилось расслоение еще в кэше и обновленное содержимое не будет использоваться. Я хотел бы иметь возможность разбить кеш пучка так, чтобы обновленный контент всегда использовался.
Установка [response.Cacheability] (https://msdn.microsoft.com/en-us/library/system.web.optimization.bundleresponse.cacheability(v=vs.110).aspx) в [NoCache] (https: //msdn.microso ft.com/en-us/library/system.web.httpcacheability(v=vs.110).aspx) будет работать, но это будет означать, что пакет никогда не кэшируется, это прекрасно? –
Не совсем, мой настоящий Transform ищет свойства url в файлах css и заменяет URL с версией URL, если файл изменился с момента последнего кэширования. Поэтому я хотел бы разбить кеш только тогда, когда файл, связанный с файлом css, изменился. Спасибо за подсказку. – Joe
Если да, то как насчет context.HttpContext.Response.Cache. [SetRevalidation] (https://msdn.microsoft.com/en-us/library/system.web.httpcachepolicy.setrevalidation (v = vs.110) .aspx)? –