2016-05-06 2 views

ответ

0

После того как я задаю этот вопрос, используя Middleware вдруг пришла мне в голову, и я реализовали класс, как показано ниже:

public class OutputCacheHeaderMiddleware 
    { 
     private readonly RequestDelegate _next; 

     public OutputCacheHeaderMiddleware(RequestDelegate next) 
     { 
      _next = next; 
     } 

     public async Task Invoke(HttpContext context) 
     { 
      var user = UserHelper.GetUser(context); 

      if (user?.UserInfos != null) 
      { 
       var key = "user_1_a_" + string.Join(",", user.UserInfos.Select(u => u.Id)); 
       context.Request.Headers.Add("dt-cache-user", key); 
      } 


      await _next.Invoke(context); 

     } 
    } 

, а затем, есть метод расширения для нее:

public static class OutputCacheHeaderExtensions 
    { 
     public static IApplicationBuilder UseOutputCacheHeader(this IApplicationBuilder builder) 
     { 
      return builder.UseMiddleware<OutputCacheHeaderMiddleware>(); 
     } 
    } 

и в методе Startup.cs Настройка, я добавил app.UseOutputCacheHeader();

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
     { 

      app.UseOutputCacheHeader(); 

      app.UseIISPlatformHandler(); 
      app.UseStaticFiles(); 

      app.UseMvc(routes => 
      { 
       routes.MapRoute(
        name: "default", 
        template: "{controller=Home}/{action=Index}/{id?}"); 
      }); 
     } 

и на контроллере:

[ResponseCache(VaryByHeader = "dt-cache-user", Duration = 6000)] 
public IActionResult Index() 
{ 
    return View(); 
} 

После всего этого, когда я его отладки, я могу видеть, что есть заголовок «дт-кэш-пользователь» с соответствующим значением, но ResponseCache не является за работой. Каждый раз, когда я нажимаю F5 для обновления страницы, она всегда попадает в точку отладки.

Возможно, причина в том, что он не работает?

Спасибо.

+0

Кэширование кеша ответа зависит от браузера. Например, Google Chrome всегда отправляет запрос, если вы вручную обновите страницу, или когда инструменты dev установлены для отключения кеша. Попробуйте щелкнуть ссылку на свою индексную страницу после перехода к ней один раз. –

+0

Я специально контролировал флажок «Отключить Cahce», и он не был отмечен. Действия обновления и навигации не работают. –

Смежные вопросы