Ich habe dieses ziemlich direkte Stück Code unten.Asp.Net Server-seitiger Ausgabe-Cache wird jede Anfrage (HttpHandler)
Es gibt einige Dinge, die ich versucht habe und ich kann nicht verstehen, warum der serverseitige Ausgabecache bei http://localhost nicht funktioniert. Unten ist der letzte Versuch von "Cache-Einstellungen", um nicht ein HIT auf der Debug-Ausgabe zu sehen.
Es macht mich verrückt! Wie verhindere ich den HIT ...?! Wenn ich die Developer-Tools öffne und "Cache deaktivieren" wähle, erwarte ich eine zwischengespeicherte serverseitige Kopie und sehe kein HIT im Debug-Ausgabefenster.
Ich bin auf Windows 8, aber selbst in einer anderen Windows-Version (/ IIS-Version) kann ich mir nicht vorstellen, dass der Code anders wäre.
using System;
using System.Diagnostics;
using System.Net.Http;
using System.Web;
namespace WebApplication1
{
/// <summary>
/// Summary description for MyHandler
/// </summary>
public class MyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Debug.WriteLine("HIT"+DateTime.Now.ToLongTimeString());
context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(5));
context.Response.Cache.SetCacheability(HttpCacheability.Server);
context.Response.Cache.SetValidUntilExpires(true);
context.Response.Cache.SetOmitVaryStar(true);
context.Response.Cache.VaryByParams["none"] = true;
context.Response.Cache.SetMaxAge(new TimeSpan(0, 5, 0));
// Just here for testing purposes
const string url = "http://otherserver/image.png";
using (var client = new HttpClient())
{
var task = client.GetStreamAsync(url);
task.Wait();
task.Result.CopyTo(context.Response.OutputStream);
context.ApplicationInstance.CompleteRequest();
}
}
public bool IsReusable
{
get { return true; }
}
}
}