以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  [求助]asp中用xml dom对象读取元素为什么会慢?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=43251)


--  作者:luoyj0701
--  发布时间:2/13/2007 10:52:00 AM

--  [求助]asp中用xml dom对象读取元素为什么会慢?

我在asp中用dom对象读取xml文件中的元素,为什么速度反而比直接读取数据库更慢?访问人数一多,更慢。这是为什么呢?有什么办法可以提高速度呢?


--  作者:Qr
--  发布时间:2/13/2007 12:18:00 PM

--  
DOM API 是将整个 XML 文档读入内存才解析,所以说, DOM API 是和内存使用成正比,故不适用于大型 XML 文档,对于小型 XML 文档来说,速度还是很快的。也正因为如此, DOM API 不适宜在服务端解析 XML 来输出给客户端,而应将 XML 送到客户端,再由 DOM API 进行解析,这样就可以将服务器的压力转移到客户端了。
--  作者:luoyj0701
--  发布时间:2/13/2007 1:51:00 PM

--  
那要怎样才能将XML送到客户端呢?我的xml都是在服务器端生成的,是不是客户端浏览的时候就复制一份到客户端啊?
--  作者:Qr
--  发布时间:2/13/2007 3:49:00 PM

--  
a = new ActiveXObject("Msxml2.DOMDocument")
a.async=false
a.load("test.xml")

b = new ActiveXObject("Msxml2.DOMDocument")
b.async=false
b.load("test.xsl")
alert(a.TransFormNode(b))
以上js就是属于客户端的处理。

以下VBS就是服务端处理。
Dim xmldoc
Set xmldoc=server.CreateObject("MSXML2.DOMDocument")
xmldoc.async=False
xmldoc.load server.Mappath("Book.xml")

Dim xsldoc
Set xsldoc=Server.CreateObject("MSXML2.DOMDocument")
xsldoc.async=False
xsldoc.load Server.Mappath("Book.xsl")
Response.write xmldoc.TransFormNode(xsldoc)

以上两种是常见的用法,还有很多...


--  作者:luoyj0701
--  发布时间:2/13/2007 5:10:00 PM

--  
谢谢版主,我试试
--  作者:luoyj0701
--  发布时间:2/14/2007 8:28:00 AM

--  
我有1个900多K的xml文件,服务器端load的时候就花了好长时间,这要怎么办呢?
--  作者:Qr
--  发布时间:2/14/2007 9:10:00 AM

--  
文件大,肯定要花时间长。如果用Ajax,因为是异步,所以,页面不会等待xml完全下载,这样可以加速页面上其它内容的加载。
--  作者:luoyj0701
--  发布时间:2/14/2007 4:29:00 PM

--  
那我这个大的xml始终还是要加载下来啊,那不是还是会慢吗?
--  作者:Qr
--  发布时间:2/14/2007 7:46:00 PM

--  
你可以将XML拆分成小的XML,然后,ajax逐个加载到页面。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms