2010-02-25 12 views
5

Ich bin in Caching mit ASP.NET MVC und ich bin auch in der Mitte der Finalisierung Web-Host. Ich habe zwei Fragen ...asp.net mvc - caching

1) Stellt Caching Problem, wenn auf Shared Hosting-Umgebung, da Ressourcen freigegeben und alle? Diese Frage klingt vielleicht albern, aber ich weiß einfach nicht, wie Caching hinter der Szene funktioniert.

2) Bevor ich Caching implementiere, möchte ich fragen, ob dieser Ansatz sinnvoll ist. Ich werde so viel wie möglich zwischenspeichern und bei Bedarf ungültig machen. Wie funktioniert Caching jedoch für eine Liste von Elementen, die sehr häufig aktualisiert werden, etwa in einer Minute oder so. Zum Beispiel, die Titelseite von StackOverflow, mit so vielen Fragen, die jede Minute hinzugefügt werden, kann die Titelseite tatsächlich zwischengespeichert werden?

EDIT: 3) Ich möchte auch diskutieren, wie Caching mit Paging und allen funktioniert.

+0

müssen Sie die Elemente kategorisieren, die Sie zwischenspeichern möchten. Die Dinge, die häufig aktualisiert werden, sind keine gute Sache, um zwischengespeichert zu werden. Im Szenario von ** stackoverflow ** werde ich es nicht Cache-fähig machen. Dinge wie Site Wide Einstellung Benutzerkonto Informationen, wenn er sich anmeldet, etc. diese Dinge können im Cache gespeichert werden. Wenn Sie eine Drittanbieter-Cache-Software verwenden können, ist es am besten wie ** memcached **. –

+0

Sie Memclached also implizieren ist besser als ASP.NET-Caching? – TPR

+0

ist nicht so einfach wie besser oder schlechter. Wenn das eingebaute Caching das tut, was Sie brauchen, dann werden Sie es nicht besser machen ... was Sie jedoch tun sollten, ist Ihren eigenen Wrapper (als Schnittstelle) um den Cache zu legen - so wird es einfach zu ändern sein die zugrunde liegende Implementierung sollten Sie benötigen. – Murph

Antwort

1

Ich denke, eine Minute ist eine lange Zeit, wenn Sie 200 Anfragen pro Sekunde bedienen und ich hätte gedacht, dass SO ASP.NET-Ausgabe-Caching für die Titelseite verwendet. Sie werden höchstwahrscheinlich auch eine Art donut caching verwenden, um die nicht benutzerspezifischen Teile zwischenzuspeichern.

Asp.net MVC verwendet den standardmäßigen ASP.NET-Caching-Provider unverändert. Auf einem freigegebenen Host sollte die Cachespeicherung korrekt funktionieren. Beachten Sie jedoch, dass der Host die Cache-Einstellungen sperren kann, wenn diese auf einer Maschinenebene ausgewählt werden. Der Cache-Provider befasst sich mit der Speicherverwaltung und entfernt Objekte aus dem Cache, wenn die Speicherbelegung zu hoch wird. Ich schlage vor, Sie lesen die MSDN-Seiten zum Caching here.

Die Komplikation kommt von einer Clusterumgebung, die nicht so sehr ein gemeinsam genutzter Host ist. In einer Clusterumgebung wird der Cache nicht auf alle Computer verteilt, sodass jeder Computer über eine separate Kopie des Cache verfügt. Wenn dies ein Problem darstellt, müssen Sie eine verteilte Caching-Lösung untersuchen, aber in den meisten Fällen ist dies in Ordnung.

In Bezug auf Paging, die Ausgabe-Caching-Funktion von asp.net ermöglicht es Ihnen, variieren nach Abfrage Zeichenfolge, so wenn Sie www.url.com?page=1 dies wird separat im Cache von www.url gespeichert werden .com? Seite = 2.