<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    塵緣

    簡(jiǎn)單生活,開(kāi)心工作。
    隨筆 - 1, 文章 - 2, 評(píng)論 - 1, 引用 - 0
    數(shù)據(jù)加載中……

    ASP專欄——ASP生成靜態(tài)文件

            對(duì)于Web開(kāi)發(fā)人員來(lái)說(shuō),生成靜態(tài)文件這個(gè)概念并不陌生。

            對(duì)于Web開(kāi)發(fā)來(lái)說(shuō),如何能避免客戶端訪問(wèn)時(shí)不停的查詢數(shù)據(jù)庫(kù)?現(xiàn)在比較常用的有兩種方法,一種是使用緩存技術(shù),將查詢出來(lái)的結(jié)果緩存至緩存框架中,以后當(dāng)有用戶訪問(wèn)時(shí),直接通過(guò)緩存框架讀取數(shù)據(jù),這樣就避免了大量用戶同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)。另一種方法就是使用靜態(tài)生成技術(shù),靜態(tài)生成技術(shù)常見(jiàn)的做法有兩種,一種是通過(guò)模板文件(模板文件中保存好前期定義好的變量,后臺(tái)通過(guò)數(shù)據(jù)加載對(duì)相應(yīng)變量進(jìn)行替換,然后再對(duì)替換完的數(shù)據(jù)進(jìn)行生成靜態(tài)文件);一種是直接訪問(wèn)Web地址,通過(guò)Http協(xié)議讀取網(wǎng)頁(yè)內(nèi)容,然后再將內(nèi)容生成相應(yīng)的靜態(tài)文件。

            對(duì)于像Java、.NET這些語(yǔ)言來(lái)說(shuō),外界都會(huì)給出相應(yīng)的緩存框架,Java的緩存框架就更多了。但對(duì)Asp這樣的低端語(yǔ)言來(lái)說(shuō)呢,只能通過(guò)用靜態(tài)生成技術(shù)來(lái)實(shí)現(xiàn)減少用戶大量的數(shù)據(jù)訪問(wèn),本文就結(jié)合自己準(zhǔn)備要做的項(xiàng)目來(lái)談?wù)凙sp如何實(shí)現(xiàn)靜態(tài)生成。

            Asp靜態(tài)生成技術(shù)的原理上面我已經(jīng)講過(guò)了,兩種做法最終都會(huì)通過(guò)讀取HTML文件(或動(dòng)態(tài)或模板文件)來(lái)生成相應(yīng)的靜態(tài)頁(yè)面。

    方法一:通過(guò)模板文件來(lái)實(shí)現(xiàn)靜態(tài)化:

            如題所示,通過(guò)模板文件實(shí)現(xiàn)靜態(tài)化,當(dāng)然首先要?jiǎng)?chuàng)建相應(yīng)的模板文件,我的模板文件如下template.htm:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=" <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title><#PageTitle#></title>
    </head>

    <body>
     <#article:title#>
     <#article:content#>
    </body>
    </html>

            請(qǐng)注意:我使用<#article:title#>做為變量,這樣的話,在進(jìn)行文件替換的時(shí)候我就會(huì)查詢包含此變量的內(nèi)容進(jìn)行替換。

            模板文件創(chuàng)建后,就是靜態(tài)化處理的核心部分,代碼如下:

    <%
    filename="Template.htm"
    'tt.txt是模板文件
    Dim objFSO,objCountFile,FiletempData
    ' 創(chuàng)建FSO文件對(duì)象
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)
    FSOFileRead = objCountFile.ReadAll
    'response.write FSOFileRead&"<br>"
    FSOFileRead = replace(FSOFileRead,"<#PageTitle#>","杰之藍(lán)")
    FSOFileRead = replace(FSOFileRead,"<#article:title#>","杰之藍(lán)Asp靜態(tài)生成技術(shù)")
    FSOFileRead = replace(FSOFileRead,"<#article:content#>","杰之藍(lán)Asp靜態(tài)生成技術(shù)詳細(xì)內(nèi)容。")
    Response.write FSOFileRead
    objCountFile.Close


    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    'fso.CreateFolder(Server.MapPath(folder)) 創(chuàng)建文件夾
    Set fout = fso.CreateTextFile(Server.MapPath("aaa.html"))
    fout.WriteLine FSOFileRead
    fout.close

    %>

     請(qǐng)注意:<#PageTitle#>,<#article:title#>,<#article:content#>這三個(gè)變量為我在模板頁(yè)面中使用,此處將這些變量變成真實(shí)的值;對(duì)文件替換完成后,就對(duì)進(jìn)行文件的創(chuàng)建,此處要求您的服務(wù)器可以使用FSO對(duì)象,我將文件生成后放在于模板文件同級(jí)的目錄下,當(dāng)然如果你要?jiǎng)?chuàng)建在別的目錄下的時(shí)候你就要將創(chuàng)建文件夾那個(gè)注釋放開(kāi),然后添加上你自己的目錄;文件創(chuàng)建完成后一定記得關(guān)閉FSO對(duì)象。

    方法二:讀取Url地址生成靜態(tài)文件

            這種方法就像上面所說(shuō)的是通過(guò)讀取URL地址,然后提取URL地址中的內(nèi)容,最后再生成相應(yīng)的靜態(tài)文件。

            下面來(lái)看具體代碼:

    <%
    '///////////////////////////////////////////////////////////////////////////////
    '//              ASP生成靜態(tài)
    '// 作    者:    杰之藍(lán)
    '// 版權(quán)所有:   
    www.52cfml.com
    '// 技術(shù)支持:    www.52cfml.com
    '// 開(kāi)始時(shí)間:    2010-07-16
    '// 最后修改:   
    '// 備    注:   
    '///////////////////////////////////////////////////////////////////////////////

    response.write "<textarea cols=""79"" rows=""30"">"&GetHttpPage(("

    '函數(shù)名:GetHttpPage
    '作 用:獲取網(wǎng)頁(yè)源碼
    '參 數(shù):HttpUrl ------網(wǎng)頁(yè)地址,Cset 編碼
    '===============================================
    Function GetHttpPage(ByVal URL, ByVal Cset)
     Dim BlockStartTime
     On Error Resume Next
     Dim Http
     If IsNull(URL)=True Or Len(URL)<18 Or URL="$False$" Then
        GetHttpPage="$False$"
        Exit Function
     End If
     BlockStartTime = Timer()
     Set Http=server.createobject("MSXML2.XMLHTTP")
     Http.open "GET",URL,False
     Http.Send()
     '循環(huán)等待數(shù)據(jù)接收
     Dim temp,BlockTimeout
     BlockTimeout = 64
     While (http.ReadyState <> 4)
     ' 判斷是否塊超時(shí)
        temp = Timer() - BlockStartTime
        Response.Write(Timer())
        If (temp > BlockTimeout) Then
      http.abort
      Set Http=Nothing
      GetHttpPage="$False$"
      Exit function
      Response.End
        End If
        http.waitForResponse 10000'等待1000毫秒
     Wend
     
     If Http.Readystate<>4 then
        Set Http=Nothing
        GetHttpPage="$False$"
        Exit function
     End If
     GetHTTPPage=BytesToBstr(Http.responseBody,Cset)
     Set Http=Nothing

     If Err.number<>0 then
        If IsNull(URL)=True Or Len(URL)<18 Or URL="$False$" Then
      GetHttpPage="$False$"
      Exit Function
        End If
        Set Http=Nothing
        Err.Clear
     End If

    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
    %>

            上述兩種方法都可以生成靜態(tài)文件,只不過(guò)每種方法的側(cè)重點(diǎn)不同,有需要的朋友可以根據(jù)自己的需要選擇相應(yīng)的方法,當(dāng)然真實(shí)環(huán)境下必須有數(shù)據(jù)庫(kù)的支持,由于本文只是例子,就沒(méi)有結(jié)合數(shù)據(jù)庫(kù)實(shí)現(xiàn),有需要的朋友可以根據(jù)自己的需要建立相應(yīng)的數(shù)據(jù)庫(kù),對(duì)于方法一來(lái)說(shuō),模板變量的命名必須是前期定義好的。

            希望對(duì)朋友們有所幫助。

    作者博客:www.52cfml.com

    posted on 2010-07-16 14:35 IT者 閱讀(353) 評(píng)論(1)  編輯  收藏

    評(píng)論

    # re: ASP專欄——ASP生成靜態(tài)文件  回復(fù)  更多評(píng)論   

    不錯(cuò),收藏了
    2010-07-29 16:28 | 160160

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久久久久久久免费看无码| 亚洲人成网站免费播放| 亚洲精品无码AV人在线播放| 曰批全过程免费视频免费看| 在线观看亚洲免费| CAOPORM国产精品视频免费| 伊人久久综在合线亚洲91| 久久久久久久岛国免费播放 | 最近的2019免费中文字幕| 亚洲伊人久久大香线蕉苏妲己| 1a级毛片免费观看| 黄床大片30分钟免费看| 亚洲av无码国产精品色午夜字幕| 无遮免费网站在线入口| 国产日韩精品无码区免费专区国产| 亚洲精品成人久久| 亚洲成av人片在线观看天堂无码| 久久99精品视免费看| 亚洲精品天堂无码中文字幕| 亚洲成人在线电影| 九月婷婷亚洲综合在线| 在线观看免费高清视频| 久久国产一片免费观看| 亚洲精品国产精品| 91情国产l精品国产亚洲区| 亚洲AⅤ优女AV综合久久久| 久久久久久精品成人免费图片| www一区二区www免费| 无码天堂va亚洲va在线va| 亚洲专区一路线二| 亚洲国产精品久久| 亚洲精品色午夜无码专区日韩| 国产精品国产免费无码专区不卡| 免费A级毛片无码无遮挡内射| a级毛片高清免费视频| 久久免费99精品国产自在现线| 黄色免费在线网址| 亚洲av成人片在线观看| 国产精品亚洲片在线va| 亚洲人成网站看在线播放| 久久久婷婷五月亚洲97号色|