利用 cache 做对比静态页的网页技术

一直想写一套生成静态页面的文章系统 但面对生成静态后的一些复杂数据库交互问题。又望而却步!

于是就想 有没有 在不耽误数据交互的情况下,而又能降低服务器负担的方法呢!

一个网站,访问量最大的莫过于 首页 和主栏目页了。 其他的页面 我可以不去想, 首页和主栏目页 在大流量下服务器改如何承担呢。

根据我编程2年多来的总结经验我想去了一下方法!

不生成静态页 并且降低服务器负担!

代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 
<% 
'读取远程文件的函数 
Public Function readRemoteFile(RemoteDataUrl) 
    Dim XMLHttp 
    'On Error Resume Next 
    Set XMLHttp = Server.CreateObject("Microsoft.XMLHTTP") 
        With XMLHttp 
            .Open "Get", RemoteDataUrl, False 
            .Send 
            readRemoteFile = BytesToBstr(.responseBody, "UTF-8") 
        End With 
    Set XMLHttp = Nothing    
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 

Function tobody() 
    Dim dateVal 
                '先试图访问缓存,看有没有,或者过期没有 
    dateVal = Application("defaultdate") 
    If dateVal = "" Then dateVal = DateAdd("s",1200,Now) 
    If Application("default") <> "" Then 
        If DateDiff("s", Now, dateVal) > 0 Then 
                                                '如果有,就从缓存读取,对服务器来说,就是从内存读取 
            tobody = Application("default")&"<!--new cache"&dateVal&"-->" 
            Exit Function 
        End If 
    End If 
    Dim body 
                '如果缓存没有,则从远程读取,并写入缓存,设置缓存时间。 
    body = readRemoteFile("http://www.aoaob.com/default.asp") 
    tobody = body&"<!--made cache"&Now&"-->" 
    Application.Lock 
    Application("default") = body 
    Application("defaultdate") = DateAdd("s",1200,Now) 
    Application.UnLock 
End Function 
Response.Write(tobody()) 
%>

相关推荐