很多站长写程序时,对于已经打开的对象,数据库连接,总是不冷不热,不及时关闭;孰知,系统资源就是这样的被消耗殆尽,导致程序假死,失去响应;尤其对于 response.redirect 转向语句 前后关闭对象、连接,更是模糊不清。
flymorn以实际测试为例子,以用于一个网站
重庆租房网的调试:请注意:response.redirect 后所有的语句都不会执行,可以测试如下:
<%
response.redirect "http://www.023ff.com"
dim fso,fout
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fout = fso.CreateTextFile(Server.MapPath("我被执行啦.txt"))
fout.close
%>
上面这段代码执行后,同目录下将不会出现《我被执行啦.txt》这个文件;如果把response.redirect这行注释掉,就会出现了。这很好的证明了我的想法。
对于这个问题的处理方法,可以如下处理:
把response.redirect 语句放最后,中间采用标志符:
<%
...
if (...) then
zz=1 '标志符置位
else
...
end if
''这里写上关闭对象|数据库连接的语句
'转向在这里
if zz=1 then '这句放最后
response.redirect "http://www.023ff.com"
resposne.end
end if
%>
对于 js 采用的判断跳转,则不影响其后的执行,如:
<%
response.write "<SCRIPT language=JavaScript>alert('返回!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
'response.end '但是如果有这行,则后面的语句不执行
dim fso,fout
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fout = fso.CreateTextFile(Server.MapPath("我被执行啦.txt"))
fout.close
%>