ASP应用技巧15则(上) 

发布时间:2008-08-04 20:24:13 阅读次数:

 *技巧1:给应用层文件使用GLOBAL.ASA
将文件载入GLOBAL.ASA中的一个应用层数组中,而不是通过使用ASP文件系统对象在页面上读取文件。
GLOBAL.ASA可用于指定事件脚本,也可用于声明拥有session或应用程序范围的对象。它不直接显示给用户,而是存储应用层事件的信息和对象。然后通过页面就可以指向存有数据的应用层数组。这就意味着每有一个服务器端请求就读一次文件,不是每个用户每页读一次。你可以运行一个独立的ASP文件去刷新应用层数组的内容,同时你也可以考虑使用dictionary对象(见技巧9)。
这个技巧可以大大加快你的系统速度。
那么将如何实现该技巧呢?
如果你是一个脚本编写人员,必须使用文件系统对象读取文件放入一个数组或一个dictionary对象中。然后在GLOBAL.ASA中读取文件并且把数组(放有你读取的文件内容)或dictionary对象放到应用层声明中。这样就可让用户在数组或dictionary对象中存取信息,而不必每次通过一个ASP请求去提交信息。
但也许你会想“如果缓存中的内容需要更新又该怎么办呢?我敢打赌不会用到。”其实不然。如果缓存中的内容需要更新,你可以调用一个包含有可执行应用程序锁定命令脚本的仅管理员可存取的ASP文件,在数组或dictionary对象中更新缓存信息,最后执行应用程序锁定命令。
*技巧2:从产品源代码中移去HTML注释(IIS3.0适用)

不错,难写的肯定也难懂。开个玩笑,这不代表要你把所有的HTML注释去掉(脚本注释就挺好的),大范围的HTML文本都能成批的拷贝到客户端。这样的话,你的脚本在IIS3.0上会运行得更快(在IIS4.0中,HTML注释不再会导致执行速度的降低)。

*技巧3:多个Response.write声明

如果你是在代码中的好几个地方用<%=...%>格式书写输出结果,那么考虑一下把这些结果合到一块,用一个Response.write语句写出来。然后你再看看你的HTML代码和vbscript脚本的组成。不要把HTML和vbscript脚本散布得太开,尽量写成成块的HTML和vbscript脚本。

*技巧4:使用<OBJECT>标志例示对象

如果你需要指向那些也许用不着的对象,那么就用<OBJECT>标志例示,而不是用Server.createobject.用Server.createobject将立刻生成该对象,如果你以后都用不着它的话,就等于浪费资源。

*技巧5:尽可能的使用本地(局部)变量

(以下的新技巧将取代较早前发布的“在一行内定义变量”,其中包含有一些错误观点):
局部变量是在子程序和函数中定义的(也就是常说局部范围的变量),这些变量被编译成数字指向并放入一张表中。这些局部变量的指向可以通过一次编译完成。而全局变量则是在运行时被执行的。这就意味着局部变量的存取要比全局变量快好几倍。而且,多维全局变量是其中最慢的,当第一次使用一个多维全局变量时,在新的对象产生之前,就要在整个对象模型中搜索一遍同名的对象。
以下是一个非常常见的例子:
Foo.bar.blah.baz = Foo.bar.blah.qaz(1)
If Foo.bar.blah.zaq = Foo.bar.blah.abc then
运行时产生如下结果:
1)变量Foo被定义为一个全局变量
2)变量bar被定义为Foo的一个成员
3)变量blah被定义为Foo.bar的一个成员
4)变量qaz被定义为Foo.bar.blah的一个成员
5)调用 Foo.bar.blah.quaz(1)
6)重复1至3。系统并不知道如果调用qaz改变了对象模型1-3步必须重新执行
7)定义baz为 Foo.bar.blah的成员,输出值
8)重复1-3,执行zaq
9)重复1-3,执行abc
正如你看到的,效率极其低下,最快的方法就是把这些代码写在vbscript中:
Set myobj = Foo.bar.blah ' do the resolution of blah ONCE
Myobj.baz = myobj.qaz(1)
If Myobj.zaq = Myobj.abc then