listet den OutputCache-Eintrag auf

8

In meiner asp.net mvc-Anwendung verwende ich das OutputCache-Attribut für verschiedene Aktionsmethoden. Ist es möglich, die aktuellen Einträge im Cache anzuzeigen, die sich auf das OutputCache-Attribut beziehen? Wenn ich auf System.Web.HttpContext.Current.Cache suche, finde ich diese Art von Eintrag nicht. Vielen Dank im Voraus F.

    
tartafe 01.07.2010, 10:07
quelle

1 Antwort

10

Der Ausgabecache ist nicht öffentlich zugänglich, daher finden Sie ihn nicht in System.Web.HttpContext.Current.Cache . In ASP.NET 2 ist es in% CacheInternal 's _caches -Member enthalten, was Sie erraten können, indem der Name ein privates Mitglied einer internen abstrakten Klasse ist. Es ist möglich, es mit Reflexion zu erhalten, obwohl es keine leichte Aufgabe ist.

Auch wenn Sie es abrufen, sehen Sie, dass es alle Arten von internen Cache-Einträgen enthält, wie Konfigurationsdateien Pfadcache, dynamisch generierter Klassencache, mobile Funktionen, roher Antwortcache (dieser ist der Typ der Ausgabecachespeicherelemente) .

Nehmen wir an, Sie können die Elemente filtern, die sich auf den Ausgabe-Cache beziehen. Das Problem ist, dass sie abgesehen von der Schlüssel- und RAW-Antwort (als Byte-Array) nicht viele vom Menschen lesbare Informationen enthalten. Der Schlüssel besteht im Allgemeinen aus Informationen, wenn die Methode GET (a1) oder POST (a2) verwendet wird, der Site-Name, die relative Wurzel-URL und der Hash der abhängigen Parameter.

Ich denke, es war ein üblicher Schwachpunkt, daher wurde in ASP.NET 4 ein neues Konzept für benutzerdefinierte Ausgabe-Cache-Anbieter eingeführt. Sie können einen eigenen Output-Cache-Provider implementieren, der von OutputCacheProvider erbt, und eine Methode bereitstellen, die alle Einträge zurückgibt. Sie können diesen Artikel überprüfen - Ссылка . Ich persönlich habe nicht in der neuen OutputCache-Infrastruktur nachgeschaut. Wenn Sie also etwas finden, wird es interessant sein, darüber zu schreiben.

Dies ist der Code zum Abrufen der internen Cache-Einträge. Sie können ihre Werte beim Debuggen in Visual Studio durchsuchen:

%Vor%     
Branislav Abadjimarinov 10.12.2010, 16:21
quelle