2009-03-05 10 views
2

Ich habe eine Reihe von Xslt Stylesheet-Dateien. Ich muss die schnellste Leistung von XslConpiledTransform erzeugen, daher möchte ich diese Stylesheets im Arbeitsspeicher darstellen.schnellste In-Memory-Cache für XslCompiledTransform

Ich kann sie in In-Memory-Auflistung als IXpathNavigable beim Start der Anwendung laden, und laden Sie dann jedes IXPAthNavigable in Singleton XslCompiledTransform bei jeder Anfrage. Aber das funktioniert nur für Styleshets ohne xsl: import oder xsl: include. (Xsl: Import ist nur für Dateien).

ich kann auch laden viele Instanzen von XSLCompiledTransform für jede Vorlage in den Cache. Ist es vernünftig?

Gibt es andere Möglichkeiten? Was ist das Beste? Was sind weitere Tipps zur Verbesserung der Leistung MS Xslt Prozessor?

Antwort

3

Nach der erfolgreichen Ausführung von Load() auf einer Instanz von XslCompiledTransform, diese Instanz kann, um zwischengespeichert werden, um bessere Leistung zu erreichen.

Denken Sie daran, dass Load() eine sehr teure Operation ist.

1

Anstatt XSL-Transformationen zur Laufzeit zu kompilieren und zu cachen, können Sie das MS SDK-Tool xsltc.exe (XSL-Compiler) zum Generieren von Assemblys verwenden.

Zur Laufzeit der Anwendung dann dynamisch diese Baugruppen entweder laden die überladene XslCompiledTransform.Load (System.Type-Typ) Methode (oder Sie können einfach hinzufügen statische Verweise auf Ihre Anwendung) und rufen Sie die Art, die Sie in die kompilierte zu laden XSL-Baugruppe.

Dies ist der absolut schnellste Weg, da Sie nicht die Kompilierung Strafe der Laufzeit - nur bei Build/Compile-Zeit.