2016-05-06 24 views

Antwort

0

Nachdem ich diese Frage stellen, mit Middleware plötzlich kam mir in den Sinn hat, und ich habe eine Klasse wie unten ausgeführt:

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); 

     } 
    } 

und dann gibt es die Erweiterung Methode für sie:

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

und in Startup.cs Configure Methode hinzugefügt i 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?}"); 
      }); 
     } 

und Controller: „dt-cache-user“ mit dem richtigen Wert

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

Nach alldem, wenn ich es zu debuggen, kann ich sehen, dass es einen Header ist aber ResponseCache ist nicht Arbeiten. Jedes Mal, wenn ich F5 drücke, um die Seite zu aktualisieren, trifft es immer den Debug-Punkt.

Was könnte der Grund sein, dass es nicht funktioniert?

Danke.

+0

Response-Cache-Caching hängt vom Browser ab. Google Chrome zum Beispiel sendet immer eine Anfrage, wenn Sie die Seite manuell aktualisieren oder wenn dev tools so eingestellt ist, dass der Cache deaktiviert wird. Versuchen Sie einmal auf einen Link zu Ihrer Indexseite zu klicken. –

+0

Ich kontrollierte vor allem das Kontrollkästchen "Disable Cahce" und es war deaktiviert. Sowohl die Aktualisierungs- als auch die Navigationsaktionen funktionierten nicht. –

Verwandte Themen