做网站都想用到动态的信息,而动态的又慢,那么就出来了 动态生成静态的方法 了,asp生成HTML,但是发现生成的内容不是最新的,比如我生成主页,生成后我又修改了动态的主页文件,在点击生成,可生成出来的主页不是动态主页,也就是说浏览动态主页和静态主页的内容不一样,那么这里其实不是你程序的问题,是缓存在作怪,有的人就说了,加上代码禁止缓存,那么也可以,但是代码比较多点。下面学习吧介绍个方法简单的解决ASP生成HTML缓存问题。
用FSO读取文件文本框生成HTML这种方法不建议采用,可以用FSO+XMLHTTP生成,用xmlhttp来获取指定文件的内容,用FSO生成,很是方便,那么解决缓存在这个获取的时候,一般都是 绝对URL,在这个URL后面加个随机数变量。如default.asp?a="&now()&",因为这个a是当前时候,而当前时间不重复,就让程序认为不是一个文件,就不会有缓存出现,也可以保证每次生成的HTML都是最新的。
下面使用的是xmlhttp来获取动态内容,然后用FSO来生成文件。
asp生成html代码:
代码如下 | 复制代码 |
dim read,reada,Curl,Curla,content,contenta Function getHTTPPage(url) dim http set http=Server.createobject("Microsoft.XMLHTTP") Http.open "GET",url,false Http.send() if Http.readystate<>4 then exit function end if getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312") url1=Request.ServerVariables("Server_name") |
以上代码为asp生成主页HTML,或者单个文件HTML。
代码解释:
url1 是获取当前地址栏的域名,比如本地浏览的时候为http://127.0.0.1/那么他就是127.0.0.1
Curl是获取出来的域名加上你的动态文件地址,这里为index.asp后面加个a=now()是为了杜绝缓存设置的。
Filen是生成到为什么文件,这里是index.html,这个支持相对路径,比如生成为上一个目录的html,那么这样写="../index.html"
下次在发表用asp生成列表和内页HTML,敬请关注
例子,替换方法
如一个正常的index.asp动态页面,
新建一个文件 makeasp2html.asp
代码如下 | 复制代码 |
<form method="post" action=""> <textarea name="asp2html" style="display:none"><!--#include file="index.asp"--></textarea> <input type="submit" value="生成html页"/> </form> <% set fso = Server.CreateObject("Scripting.FileSystemObject") fout.write request.form("asp2html") set fout=nothing end if |
这样index.html文件就生成了,连模板都用不着,只要服务器要支持FSO,将正常情况下使用的ASP文件读取到textarea里就可以了。