靜態(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ò)的想法,如果你要自己寫(xiě)一個(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),然后寫(xiě)到靜態(tài)頁(yè)中,實(shí)現(xiàn)網(wǎng)站的靜態(tài)化重構(gòu)。
?
?
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)容寫(xiě)入靜態(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ì)那些寫(xiě)的很差勁的網(wǎng)站進(jìn)行靜態(tài)化處理。我一直用這種方法給企業(yè)靜態(tài)化處理。
有機(jī)會(huì)我會(huì)把這種方法進(jìn)一步寫(xiě)成類(lèi),方便各位網(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,這種東西只是在形式上讓你感覺(jué)已經(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)速度。