Wir haben eine Web-API 2-Anwendung, die Strathweb.CacheOutput.WebApi2 für das Zwischenspeichern verwendet.Erkennen, ob die Web-API-Anforderung vom Cache bedient wird
Kurze Frage: Gibt es eine Möglichkeit, in Application_LogRequest (oder irgendwo, wirklich) zu erkennen, ob eine Anfrage von Cache gedient wurde?
Lange Frage: In letzter Zeit haben wir uns die Leistung angesehen und sehen, welche API-Aufrufe wir verbessern können. Ich zog eine Liste aus unseren Logs (inklusive Dauer), um zu sehen, was die schlimmsten Übeltäter sind. Unter den schlimmsten Tätern verstehe ich die längste durchschnittliche Dauer und/oder die meisten Anrufe.
Aber die Zahlen sind irreführend, weil die zwischengespeicherten Anforderungen in den Statistiken enthalten sind. Zwischengespeicherte Anforderungen werden in der Regel in einer halben Sekunde oder weniger geliefert, sodass sie die durchschnittliche Dauer verringern. Wenn ein bestimmter Anruf ausgeführt wird, sagen wir 1000 mal pro Minute, aber 999 davon werden zwischengespeichert, ist es mir egal.
Also möchte ich ein Flag in meinem Protokoll hinzufügen, das angibt, ob die Anfrage vom Cache bedient wurde, damit ich diese ausschließen kann. All unsere Protokollierung erfolgt im Application_LogRequest-Ereignis. Aber selbst wenn ich es irgendwo anders finden kann, kann ich einen Wert in HttpContext.Current.Items
speichern, den ich später abrufen kann.
Thank you! Ich habe auf eine Methode gehofft, bei der nichts übergangen werden musste, aber das sieht nicht so aus. Danke für den Beispielcode. Das wird definitiv helfen! –