2012年7月6日 星期五

microsoft.XMLDOM 在 XSL 套用大量資料時效能變差的解法

今天解決了一個 ASP 處理字串太長(太大) 時造成的效能不好的問題, 接著遇到是 XML + XSL 在遇到資料量太大時也會出問題, 這次的資料量是只有 300筆.


1. 首先, 在 xsl 套版前, 把系統時間印出來看看.


2. 在 300筆資料的情況下, 光這一行 transformNode() 就掉了24秒, 真是太令人吃驚!!!


3. 解決後, 一樣 300筆的資料量, 只用掉1秒.


解決辦法:
原本 create object 方式
set oxsl = server.createObject("microsoft.XMLDOM")

修改為
set oxsl = server.createObject("Msxml2.DOMDocument.6.0")

效能就變好了, 只是 Msxml2.DOMDocument.6.0 有一些問題, 就是他的 xsl include 外部檔案好像預設是 disable 的, 再透過下面這幾行來設定即可:

    oXSL.resolveExternals = True
    oXSL.async = False
    oXSL.setProperty "AllowDocumentFunction", True
    oXSL.setProperty "AllowXsltScript", True


附註:
1. Msxml2.DOMDocument.6.0 和 microsoft.XMLDOM 在 xsl 裡的空格和Enter 定義不同, 套出來的結果會有些許差異.


2. 如果要使用 "Msxml2.XSLTemplate.6.0" 來套版, 那 XSL 的定義必須是使用 oxsl = server.createObject("Msxml2.FreeThreadedDOMDocument.6.0")







相關文章:
Using ASP with XSLT Processor and Template Objects
http://msdn.microsoft.com/en-us/library/windows/desktop/ms761371(v=vs.85).aspxUsing ASP with XSLT Processor and Template Objects

沒有留言:

張貼留言

Facebook 留言板