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

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

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

    塵緣

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

    ASP專欄——ASP生成靜態文件

            對于Web開發人員來說,生成靜態文件這個概念并不陌生。

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

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

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

    方法一:通過模板文件來實現靜態化:

            如題所示,通過模板文件實現靜態化,當然首先要創建相應的模板文件,我的模板文件如下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#>做為變量,這樣的話,在進行文件替換的時候我就會查詢包含此變量的內容進行替換。

            模板文件創建后,就是靜態化處理的核心部分,代碼如下:

    <%
    filename="Template.htm"
    'tt.txt是模板文件
    Dim objFSO,objCountFile,FiletempData
    ' 創建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靜態生成技術")
    FSOFileRead = replace(FSOFileRead,"<#article:content#>","杰之藍Asp靜態生成技術詳細內容。")
    Response.write FSOFileRead
    objCountFile.Close


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

    %>

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

    方法二:讀取Url地址生成靜態文件

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

            下面來看具體代碼:

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

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

    '函數名:GetHttpPage
    '作 用:獲取網頁源碼
    '參 數:HttpUrl ------網頁地址,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()
     '循環等待數據接收
     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
    %>

            上述兩種方法都可以生成靜態文件,只不過每種方法的側重點不同,有需要的朋友可以根據自己的需要選擇相應的方法,當然真實環境下必須有數據庫的支持,由于本文只是例子,就沒有結合數據庫實現,有需要的朋友可以根據自己的需要建立相應的數據庫,對于方法一來說,模板變量的命名必須是前期定義好的。

            希望對朋友們有所幫助。

    作者博客:www.52cfml.com

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

    評論

    # re: ASP專欄——ASP生成靜態文件  回復  更多評論   

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

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


    網站導航:
     
    主站蜘蛛池模板: 一级毛片在线观看免费| 中文字幕无线码免费人妻| 1000部国产成人免费视频| 亚洲av永久无码精品网站| 国产免费牲交视频免费播放| 亚洲综合区小说区激情区| 国产亚洲精品国产福利在线观看| 午夜视频免费成人| 亚洲AV无码专区在线电影成人| 四虎影视www四虎免费| 亚洲国产av玩弄放荡人妇| 国产午夜免费福利红片| 男男gvh肉在线观看免费| 亚洲国产精品一区二区三区久久| 免费精品国产自产拍在线观看| 久久亚洲中文字幕精品一区四| 国产免费久久精品丫丫| 久久精品国产亚洲AV果冻传媒| 99re免费99re在线视频手机版| 亚洲欧洲久久精品| 四虎在线视频免费观看| 无遮挡国产高潮视频免费观看| 国产精品亚洲片在线观看不卡 | 亚洲国产成人久久一区二区三区| 日韩毛片无码永久免费看| 日韩在线视频免费| 久久亚洲综合色一区二区三区| 91大神免费观看| 亚洲另类自拍丝袜第五页| 亚洲成av人片不卡无码久久| 一区二区三区四区免费视频 | 未满十八私人高清免费影院| 亚洲国产精品高清久久久| 19禁啪啪无遮挡免费网站| 色婷婷六月亚洲综合香蕉| 伊人亚洲综合青草青草久热| 在线观看免费视频资源| 国产精品久久久久久亚洲影视| 国产亚洲福利精品一区| 最新欧洲大片免费在线| 精品熟女少妇aⅴ免费久久|