一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

asp生成html静态文件的一些方法整理

时间:2014-12-27 编辑:简简单单 来源:一聚教程网

做网站都想用到动态的信息,而动态的又慢,那么就出来了 动态生成静态的方法 了,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")
On Error Resume Next
if err.number<>0 then err.Clear
End function
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function

url1=Request.ServerVariables("Server_name")
Curl="http://"&url1&"/index.asp?a="&now()&""
read=getHTTPPage(Curl)
if read<>"" then
content=read
Set Fso = Server.CreateObject("Scripting.FileSystemObject")
Filen=Server.MapPath("index.html")
Set Site_Config=FSO.CreateTextFile(Filen,true, False)
Site_Config.Write content
Site_Config.Close
Set Fso = Nothing
Response.Write("已经生成主页")
end if

以上代码为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

 代码如下 复制代码

 
    <textarea name="asp2html" style="display:none"> 
     
 

<% 
If request.Form("asp2html")<>"" then 
    filename="index.html" 

    set fso = Server.CreateObject("Scripting.FileSystemObject") 
    set fout = fso.CreateTextFile(server.mappath(""&filename&"")) 

    fout.write request.form("asp2html") 
    fout.close 

    set fout=nothing 
    set fso=nothing 

end if 
%>

这样index.html文件就生成了,连模板都用不着,只要服务器要支持FSO,将正常情况下使用的ASP文件读取到textarea里就可以了。

热门栏目