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

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

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

    塵緣

    簡單生活,開心工作。
    隨筆 - 1, 文章 - 2, 評論 - 1, 引用 - 0
    數(shù)據(jù)加載中……

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

            對于Web開發(fā)人員來說,生成靜態(tài)文件這個概念并不陌生。

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

            對于像Java、.NET這些語言來說,外界都會給出相應的緩存框架,Java的緩存框架就更多了。但對Asp這樣的低端語言來說呢,只能通過用靜態(tài)生成技術來實現(xiàn)減少用戶大量的數(shù)據(jù)訪問,本文就結合自己準備要做的項目來談談Asp如何實現(xiàn)靜態(tài)生成。

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

    方法一:通過模板文件來實現(xiàn)靜態(tài)化:

            如題所示,通過模板文件實現(xiàn)靜態(tài)化,當然首先要創(chuà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>

            請注意:我使用<#article:title#>做為變量,這樣的話,在進行文件替換的時候我就會查詢包含此變量的內容進行替換。

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

    <%
    filename="Template.htm"
    'tt.txt是模板文件
    Dim objFSO,objCountFile,FiletempData
    ' 創(chuàng)建FSO文件對象
    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#>","杰之藍")
    FSOFileRead = replace(FSOFileRead,"<#article:title#>","杰之藍Asp靜態(tài)生成技術")
    FSOFileRead = replace(FSOFileRead,"<#article:content#>","杰之藍Asp靜態(tà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

    %>

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

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

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

            下面來看具體代碼:

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

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

    '函數(shù)名:GetHttpPage
    '作 用:獲取網(wǎng)頁源碼
    '參 數(shù):HttpUrl ------網(wǎng)頁地址,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)
     ' 判斷是否塊超時
        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)文件,只不過每種方法的側重點不同,有需要的朋友可以根據(jù)自己的需要選擇相應的方法,當然真實環(huán)境下必須有數(shù)據(jù)庫的支持,由于本文只是例子,就沒有結合數(shù)據(jù)庫實現(xiàn),有需要的朋友可以根據(jù)自己的需要建立相應的數(shù)據(jù)庫,對于方法一來說,模板變量的命名必須是前期定義好的。

            希望對朋友們有所幫助。

    作者博客:www.52cfml.com

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

    評論

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

    不錯,收藏了
    2010-07-29 16:28 | 160160

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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 亚洲黄色在线观看网站| 免费国产怡红院在线观看| 美女视频黄是免费的网址| 免费在线观看中文字幕| 亚洲av中文无码乱人伦在线r▽ | 一个人免费视频在线观看www| 成年人网站在线免费观看| 永久亚洲成a人片777777| 污污的视频在线免费观看| 日韩黄色免费观看| 亚洲人av高清无码| 两个人的视频高清在线观看免费| 18亚洲男同志videos网站| 黄网站色成年片大免费高清| 成人免费视频一区二区三区| 亚洲综合一区二区| 久久国产免费一区二区三区| JLZZJLZZ亚洲乱熟无码| 亚洲爆乳成av人在线视菜奈实| 久久国产高潮流白浆免费观看| 亚洲男人都懂得羞羞网站| 蜜桃视频在线观看免费视频网站WWW| 亚洲伊人久久精品影院| 免费a级毛片无码a∨免费软件 | 亚洲成年人免费网站| 一本无码人妻在中文字幕免费| 亚洲另类无码一区二区三区| 亚洲无码黄色网址| 无码AV片在线观看免费| 亚洲色大成网站WWW国产| 亚洲综合图色40p| 黄色免费网站网址| 看Aⅴ免费毛片手机播放| 亚洲av综合avav中文| 波多野结衣久久高清免费| 99久久99这里只有免费的精品| 亚洲大香伊人蕉在人依线| 波多野结衣免费视频观看| 亚洲欧洲免费视频| 在线观看亚洲网站| 在线免费观看亚洲|