当网站数据巨大时,一次生成许多静态页,会导致生成页面超过20分钟后报错,以至于后面的静态页不能生成。
即使使用了Server.ScriptTimeout = 9999,程序运行后,也会出现假死现象。
这里介绍一种方法,每次生成100个静态页面,不停地生成,直到全部生成完毕
注意:这里使用的是模块替换生成静态页面的方法。
代码如下:
<!-- #include file="conn.asp" -->
<%
Dim cnt:cnt = 1 '本轮循环计数器初始化
start = request("start") '获取本轮指针的开始位置
If IsNumeric(start) Then start = CLng(start) Else start=1
If start=0 Then start = 1 '如果start为空,从第一条开始
num = 100 '每次生成的数量
content = "fso获取的模板页面代码,这里就省略了"
sql = "select * from 表名"
rs.Open sql,conn,1,1
rs.AbsolutePosition = start '这是此程序最关键的一步,将指针指向start,start通过参数动态获得
Do While Not rs.eof And cnt < num
content = Replace(content,"{要替换的内容1}",rs("字段名1")) '用字段值替换模板内容,下同
content = Replace(content,"{要替换的内容2}",rs("字段名2"))
……
cnt = cnt+1
start = start + 1
rs.movenext
Loop
If Not rs.eof Then '通过刷新的方式进行下一轮请求,并将指针变量start传递到下一轮
response.write "<meta http-equiv='refresh' content='0;URL=?start="&start&"'>"
Else
response.write "生成HTML文件完毕!"
End if
rs.Close()
Set rs = Nothing
%>
原理就是这样的,看懂原理自己再根据它修改你自己的程序
注意:里面的conn.asp和fso读取模板页面代码这里就不介绍了。