Caching-Strategie, Ausgabe-Cache vs Daten-Cache oder beides?

8

Ich arbeite an einem ASP.NET MVC-Projekt und bin an den Punkt gekommen, an dem ich meine Caching-Strategie in Betracht ziehen möchte. Ich habe versucht, mein Framework so offen wie möglich für die Verwendung im Caching zu lassen.

Nach dem, was ich während des Podcasts von Scott Hanselman gehört habe, verwendet StackOverflow.com das Seitenausgabe-Caching und zieht den Inhalt in den RAM-Speicher. Das klingt, als wäre das für den benutzerübergreifenden Cache großartig, aber für so etwas wie personalisierte Seiten müssten Sie eine Version für jeden Benutzer zwischenspeichern und diese könnte sehr schnell außer Kontrolle geraten.

Also, für eine Cache-Strategie. Welches sollte verwendet werden, Output Caching, Data Caching oder kombiniert? Meine ersten Gedanken sind beide, aber soweit Cache-Abhängigkeiten es klingt, könnte es ein bisschen komplex werden.

    
Chad Moran 17.02.2009, 22:04
quelle

2 Antworten

7

Seien Sie vorsichtig mit übermäßig aggressivem Caching. Obwohl das Caching ein Werkzeug ist, das die Leistung verbessert, kann es bei falscher Verwendung die Leistung sogar verschlechtern.

Ich kann nicht beantworten, ob Ausgabe-Caching oder Daten-Caching für Sie besser funktionieren würde, ohne weitere Details zu Ihrem Projekt zu kennen. Ich kann helfen, ein paar Beispiele dafür zu geben, wann man einen anderen benutzt.

Wenn Sie einen bestimmten Datensatz haben, den Sie häufig in vielen verschiedenen Ansichten verwenden würden, sollten Sie besser Datencaching verwenden. Sie würden dies verwenden, wenn Ihre Datenabrufoperation sehr häufig und teuer im Vergleich zu Ihrer Datenwiedergabe wäre. Wenn Sie mehrere Ansichten haben, die dieselben Daten verwenden, speichern Sie die Datenabrufzeit.

Wenn Sie eine Ansicht hatten, die einen sehr spezifischen Datensatz verwendet und das Rendering der Ansicht kompliziert war und diese Ansicht sehr oft angefordert wurde (z. B. Homepage des Stack-Überlaufs), würden Sie viel vom Output-Caching profitieren.

Am Ende kommt es wirklich auf Ihre Bedürfnisse an und seien Sie vorsichtig bei der Verwendung von Caching.

    
ajma 17.02.2009, 22:09
quelle
8

Wir machen API- und Output-Caching auf einer großen Website (3 Millionen Zugriffe pro Tag) (Newsportal). Die Seite wird hauptsächlich von anonymen Benutzern benutzt, aber wir haben authentifizierte Benutzer und wir cachen eine komplette Seite nur für sie, aufgrund von einigen personalisierten Teilen der Seite, und ich muss zugeben, dass wir absolut keine Probleme mit dem Speicherdruck hatten.

Also, mein Tipp wäre, alles zwischenzuspeichern, was Sie im API-Cache haben, so dass Ihr Output-Cache-Wiederaufbau noch schneller ist.

Achte natürlich sehr genau auf deine Cache-Ratio-Werte in den Leistungsindikatoren. Sie sollten Zahlen & gt; 95% der zwischengespeicherten Treffer sehen.

Eine andere Sache, auf die Sie achten sollten, ist die Ungültigkeit des Cache. Dies ist ein großes Problem, wenn Sie viele verwandte Inhalte haben. Sie können beispielsweise Musikmaterial zwischenspeichern, und Informationen über ein Album oder einen Titel werden möglicherweise auf einigen hundert Seiten angezeigt und zwischengespeichert. Wenn sich irgendetwas in diesem Lied ändert, müssen Sie alle diese Seiten ungültig machen, was problematisch sein kann.

Unter dem Strich ist Caching eine der besten Funktionen von ASP.NET, es ist hervorragend gelungen und Sie können sich darauf verlassen.

    
muerte 17.02.2009 22:12
quelle