靈魂-放水

          為學(xué)日益,為道日損。

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks

          出處:http://www.net2china.net/blog/user1/sunychen/archives/2006/226.html

          靜態(tài)化是有很大好處的。最值得稱道的應(yīng)該是加快下載速度,更利于搜索引擎的抓取,這兩點(diǎn)對(duì)一個(gè)企業(yè)網(wǎng)站來(lái)說(shuō)應(yīng)該比較重要吧。
          ?
          一般的靜態(tài)化是通過(guò)fso組件讀取網(wǎng)站模板的內(nèi)容,然后替換其中的特定字符,生成靜態(tài)頁(yè)面,這是個(gè)不錯(cuò)的想法,如果你要自己寫一個(gè)網(wǎng)站,建議你用這種辦法,因?yàn)楸容^穩(wěn)定。而且如果想以后更換網(wǎng)站界面也相當(dāng)容易,只需修改模板而無(wú)需更改程序。這個(gè)辦法很多高手已經(jīng)說(shuō)得很明白了,推薦一個(gè):
          http://www.jingzhengli.cn/Blog/zjh/265.html
          ?
          然而很不幸,很多公司的網(wǎng)站已經(jīng)做好,而且每一頁(yè)都是html中夾雜大量asp代碼的形式,沒(méi)有模板,功能也沒(méi)有模塊化,如果想仍用以上方法進(jìn)行靜態(tài)化處理,其復(fù)雜程度相當(dāng)于重做一個(gè)網(wǎng)站。
          ?
          提出一個(gè)簡(jiǎn)單宜用的解決辦法。不用模板、不用修改程序,非常便捷。利用XMLHTTP對(duì)象及其方法。他的原理是將已有的asp網(wǎng)頁(yè)內(nèi)容一次性讀取出來(lái),然后寫到靜態(tài)頁(yè)中,實(shí)現(xiàn)網(wǎng)站的靜態(tài)化重構(gòu)。
          ?
          現(xiàn)在以生成 www.rocky-glass.com的首頁(yè)為例,介紹一下這種方法,代碼如下:
          ?
          Url="http://www.rocky-glass.com/default.asp" ‘定義動(dòng)態(tài)首頁(yè)
          wstr = GetPage(Url) ‘把動(dòng)態(tài)首頁(yè)的內(nèi)容全部讀取出來(lái)
          ?
          Set fs=Server.CreateObject("Scripting.FileSystemObject")
          ?
          Set CrFi=fs.CreateTextFile(server.MapPath("../")&"\index.htm") ‘創(chuàng)建靜態(tài)首頁(yè)index.htm
          CrFi.Writeline(wstr) ‘將讀取出的內(nèi)容寫入靜態(tài)頁(yè)面
          set CrFi=nothing ‘關(guān)閉兩個(gè)對(duì)象
          set fs=nothing
          ?
          以下兩個(gè)函數(shù)涉及到xmlhttp對(duì)象和方法的使用,如果能看懂就看,看不懂直接調(diào)用就行。
          Function GetPage(url) ‘此過(guò)程的功能是實(shí)現(xiàn)把 asp 網(wǎng)頁(yè)的內(nèi)容一次性讀取出來(lái)。
          dim Retrieval
          Set Retrieval = CreateObject("Microsoft.XMLHTTP")
          With Retrieval
          .Open "Get", url, False ', "", ""
          .Send
          GetPage = BytesToBstr(.ResponseBody)
          End With
          Set Retrieval = Nothing
          End Function
          ?
          Function BytesToBstr(body) ‘字符轉(zhuǎn)換
          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 = "utf-8" ‘如果是中文頁(yè)面請(qǐng)用gb2312.,英文頁(yè)面用utf-8
          BytesToBstr = objstream.ReadText
          objstream.Close
          set objstream = nothing
          End Function
          ?
          首頁(yè)的靜態(tài)化就完成了,生成為 index.htm 這個(gè)靜態(tài)頁(yè),其他的頁(yè)面也可以按照這個(gè)思路進(jìn)行,利用不同的后綴id值,就可以批量生成所有網(wǎng)頁(yè)。
          ?
          兩點(diǎn)注意:1、如果是批量生成頁(yè)面要保證網(wǎng)速,否則程序的運(yùn)行很容易超出服務(wù)器的允許時(shí)間。
          ????????? 2、生成英文頁(yè)面的時(shí)候,要保證原頁(yè)面上沒(méi)有漢字或其他語(yǔ)言,否則生成出錯(cuò)。
          ?
          這種靜態(tài)化相對(duì)比較容易,尤其是那些對(duì)那些寫的很差勁的網(wǎng)站進(jìn)行靜態(tài)化處理。我一直用這種方法給企業(yè)靜態(tài)化處理。
          有機(jī)會(huì)我會(huì)把這種方法進(jìn)一步寫成類,方便各位網(wǎng)友調(diào)用。
          ?
          下邊說(shuō)說(shuō)兩種騙人的靜態(tài)化方案,引起各位注意。
          1、?框架偽靜態(tài),這種是非常簡(jiǎn)單而且也是非常便于識(shí)別的,它的原理比較簡(jiǎn)單,就是做一個(gè)靜態(tài)的主框架頁(yè)面,然后把動(dòng)態(tài)的內(nèi)容鏈入副框架內(nèi),這個(gè)單從它的URL就可以看出眉目,如果整個(gè)網(wǎng)站的URL都是一樣的,那么就一定是框架偽靜態(tài)的。這種所謂的靜態(tài)化不僅達(dá)不到優(yōu)化的目的,而且還不如不優(yōu)化。
          2、?利用組件把a(bǔ)sp的輟顯示為htm,它主要是利用一個(gè)組件強(qiáng)制性的把a(bǔ)sp文件的后輟顯示為htm,比較有名的組件是MOD REWRITE,這種東西只是在形式上讓你感覺已經(jīng)靜態(tài)化了,其實(shí)仍然是執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。識(shí)別這個(gè)也比較容易,那就是看看有沒(méi)有生成靜態(tài)頁(yè)就是了。如果沒(méi)有生成靜態(tài)頁(yè),顯然是騙人的,因?yàn)橹挥袆?dòng)態(tài)頁(yè)才是虛擬的,從數(shù)據(jù)庫(kù)中調(diào)用數(shù)據(jù)進(jìn)行顯示,而靜態(tài)頁(yè)面一定是獨(dú)立的。當(dāng)然,利用這種方案可以起到seo優(yōu)化作用,但是對(duì)訪問(wèn)速度來(lái)說(shuō),是一點(diǎn)提高都沒(méi)有的,而且還有可能降低訪問(wèn)速度。
          ?

          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1444169

          posted on 2006-12-18 20:41 放水老倌 閱讀(990) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE.NET
          主站蜘蛛池模板: 上林县| 潍坊市| 泰安市| 饶河县| 南漳县| 乌鲁木齐市| 红原县| 赫章县| 龙里县| 大竹县| 揭西县| 高碑店市| 潍坊市| 赣州市| 长岭县| 奈曼旗| 南涧| 府谷县| 方城县| 辽阳市| 孝义市| 眉山市| 柘城县| 杂多县| 吉水县| 哈密市| 依兰县| 双牌县| 礼泉县| 抚松县| 大余县| 都江堰市| 偏关县| 莱芜市| 廉江市| 南江县| 金堂县| 镇雄县| 宁南县| 宜阳县| 嘉善县|