2010-11-29 6 views
4

Ich habe eine Klasse, die eine Instanz von StreamReader zu einer XML-Datei auf dem lokalen Dateisystem erstellt. Es ist möglich, dass dieselbe Datei mehrmals pro Sekunde angefordert wird.Sie müssen statische Dateien in C#/ASP.NET manuell zwischenspeichern?

Ich fragte mich, ob ich diese Datei manuell zu der System.Web.Cache hinzufügen und von dort lesen muss, oder ob Windows selbst klug genug ist, das Element selbst zu cachen, so dass es "weiß", wenn ASP.NET diese Datei anfordert zweite/dritte usw. Zeit, dass es nicht eine Disk-Such/Lese-Operation durchführen muss und es aus seinem eigenen Cache zieht?

dieser Artikel: http://dotnetperls.com/file-read-benchmarks scheint dies zu sichern, aber dies: Artikel: http://msdn.microsoft.com/en-us/library/18c1wd61%28v=VS.100%29.aspx (wenn auch nicht aus Sicht der Leistung zu diskutieren, und vielleicht aus anderen Gründen ganz) listet, wie eine physische Datei in dem Cache-Speicher hinzuzufügen.

Antwort

2

Ich denke nicht, dass das Zwischenspeichern der Datei nützlich wäre, da sie sich auf demselben Server wie die Seite befindet, obwohl sie wahrscheinlich automatisch von IIS zwischengespeichert wird. Stattdessen sollten Sie die Ausgabe von StreamReader zwischenspeichern. Speichern Sie das XML, nachdem Sie es eingelesen haben, und dann werden Sie die Zeit sparen, die es braucht, um es einzulesen und welche Verarbeitung Sie auch machen, um es in ein brauchbares Format zu bringen.

Dann können Sie manuell zu dem HttpRuntime.Cache hinzufügen und Sie können sogar eine Datei Abhängigkeit von der Originaldatei festgelegt, die im Cache gespeicherte Ausgabe abläuft.

Verwandte Themen