0

Я хотел бы создать преобразование пакета, которое изменяет содержимое пакета и запускает кэш, чтобы сломать, однако я не могу сломать кеш.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 
     } 
    } 
} 

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

+0

Установка [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) будет работать, но это будет означать, что пакет никогда не кэшируется, это прекрасно? –

+0

Не совсем, мой настоящий Transform ищет свойства url в файлах css и заменяет URL с версией URL, если файл изменился с момента последнего кэширования. Поэтому я хотел бы разбить кеш только тогда, когда файл, связанный с файлом css, изменился. Спасибо за подсказку. – Joe

+0

Если да, то как насчет context.HttpContext.Response.Cache. [SetRevalidation] (https://msdn.microsoft.com/en-us/library/system.web.httpcachepolicy.setrevalidation (v = vs.110) .aspx)? –

ответ