偽靜態(tài)(tài)
[導(dǎo)(dǎo)讀]偽靜態(tài)(tài)
簡(jiǎn)(jiǎn)介
編輯本段簡(jiǎn)(jiǎn)介
用IIS的404錯(cuò)(cuò)誤處理機(jī)(jī)制來(lái)實(shí)(shí)現(xiàn)(xiàn)的.這個(gè)(gè)比rewrite技術(shù)(shù)要靈活的多.
首先,設(shè)(shè)置站點(diǎn)(diǎn)屬性-自定義錯(cuò)(cuò)誤,找到HTTP錯(cuò)(cuò)誤404,然后編輯屬性->消息類型選中URL->URL填入“/index.asp”,或您的錯(cuò)(cuò)誤處理頁(yè)面.
這樣,比如用戶或蜘蛛訪問(wèn)http://網(wǎng)(wǎng)址XXX/12345.html時(shí)(shí)(12345為文章在數(shù)(shù)據(jù)(jù)庫(kù)的ID).由于這些頁(yè)面不存在,所以觸發(fā)(fā)了404錯(cuò)(cuò)誤.轉(zhuǎn)(zhuǎn)向了index.asp
在index.asp里添加
CurrDomain=Request.ServerVariables("HTTP_HOST") '當(dāng)(dāng)前訪問(wèn)域名
CurrURL=Replace(Request.ServerVariables("QUERY_STRING"),"404;http://"&CurrDomain&":80","") '當(dāng)(dāng)前訪問(wèn)URL
此時(shí)(shí)的CurrURL應(yīng)(yīng)該是:12345.html .
這樣,就得到用戶正在試圖訪問(wèn)的頁(yè)面.然后提取里邊的文章ID(應(yīng)(yīng)該為:12345),用正則,這里就不多說(shuō)了.
然后到數(shù)(shù)據(jù)(jù)庫(kù)里提取出文章內(nèi)(nèi)容.輸出到頁(yè)面里,就OK了.
這樣.用戶或蜘蛛看到的URL還是他訪問(wèn)的URL.而我們對(duì)(duì)內(nèi)(nèi)容的處理上可以用到了動(dòng)(dòng)態(tài)(tài)技術(shù)(shù).這就是我們想要的結(jié)(jié)果.說(shuō)得簡(jiǎn)(jiǎn)單了一些.但是基本思路就是這樣了.
編輯本段不足
1、當(dāng)(dāng)然猶如一篇文章的作者所說(shuō)的:"如果流量稍大一些使用偽靜態(tài)(tài)就出現(xiàn)(xiàn)CPU使用超負(fù)(fù)荷,我的同時(shí)(shí)在線300多人就掛了,而不使用偽靜態(tài)(tài)的時(shí)(shí)候同時(shí)(shí)在線超500人都不掛,我的IIS數(shù)(shù)是1000。”確實(shí)(shí)是這樣的,由于偽靜態(tài)(tài)是用正則判斷而不是真實(shí)(shí)地址,分別顯示哪個(gè)(gè)頁(yè)面的責(zé)(zé)任也由直接指定轉(zhuǎn)(zhuǎn)由CPU來(lái)判斷了,所以CPU占有量的上升,確實(shí)(shí)是偽靜態(tài)(tài)最大的弊病。
2、網(wǎng)(wǎng)站承受力低。
另外,會(huì)(huì)造成網(wǎng)(wǎng)站可承受同時(shí)(shí)在線人數(shù)(shù)劇減。如果你的網(wǎng)(wǎng)站可以保證1000人同時(shí)(shí)訪問(wèn)的話,那么做了偽靜態(tài)(tài)處理之后,300人訪問(wèn)就足以讓你網(wǎng)(wǎng)站掛掉。
3、網(wǎng)(wǎng)頁(yè)打開慢。
偽靜態(tài)(tài)頁(yè)面打開速度快,簡(jiǎn)(jiǎn)直太搞笑了,偽靜態(tài)(tài)仍然要讀取數(shù)(shù)據(jù)(jù)庫(kù),還額外的多了一個(gè)(gè).重寫網(wǎng)(wǎng)址.的過(guò)程,其他的步驟絕對(duì)(duì)不會(huì)(huì)比動(dòng)(dòng)態(tài)(tài)少,怎么會(huì)(huì)快呢?
4、大量的重復(fù)(fù)頁(yè)面。
做了偽靜態(tài)(tài)后,原有的頁(yè)面也可以訪問(wèn),這就造成了大量的偽靜態(tài)(tài)頁(yè)面和動(dòng)(dòng)態(tài)(tài)頁(yè)面重復(fù)(fù),對(duì)(duì)網(wǎng)(wǎng)站極為不好。
5、需要服務(wù)(wù)器支持。
并不是所有的服務(wù)(wù)器都支持偽靜態(tài)(tài)的,這無(wú)形中又增加了成本。
所以,如果網(wǎng)(wǎng)址中的動(dòng)(dòng)態(tài)(tài)參數(shù)(shù)沒(méi)有達(dá)(dá)到影響搜索引擎收錄的程度,動(dòng)(dòng)態(tài)(tài)要比偽靜態(tài)(tài)好的多。
6、造成真正的靜態(tài)(tài)網(wǎng)(wǎng)頁(yè)無(wú)法訪問(wèn)。
如果把php偽靜態(tài)(tài)成html,那么真正的靜態(tài)(tài)頁(yè)就無(wú)法訪問(wèn)了。(可通過(guò)修改服務(wù)(wù)器配置解決,可是你又何必去費(fèi)(fèi)這把力氣呢?)[1]編輯本段如何選擇
選擇偽靜態(tài)(tài)還是真靜態(tài)(tài)
1、使用真靜態(tài)(tài)和偽靜態(tài)(tài)對(duì)(duì)SEO來(lái)說(shuō)沒(méi)有什么區(qū)(qū)別
2、使用真靜態(tài)(tài)可能將導(dǎo)(dǎo)致硬盤損壞并將影響站點(diǎn)(diǎn)性能(這個(gè)(gè)實(shí)(shí)在是個(gè)(gè)謬論,非靜態(tài)(tài)的對(duì)(duì)硬盤的讀取次數(shù)(shù)勝過(guò)真靜態(tài)(tài))
3、使用偽靜態(tài)(tài)將占用一定量的CPU占有率,大量使用將導(dǎo)(dǎo)致CPU超負(fù)(fù)荷
4、最重要的一點(diǎn)(diǎn),我們要靜態(tài)(tài)是為了SEO
5、真靜態(tài)(tài)的訪問(wèn)速度明顯比偽靜態(tài)(tài)的訪問(wèn)速度要高
所以:
1、使用真靜態(tài)(tài)的方法可以直接排除了,因?yàn)闊o(wú)論怎么生成,對(duì)(duì)硬盤來(lái)說(shuō)都是很傷的。(這個(gè)(gè)完全是亂講了,真靜態(tài)(tài)可以提高網(wǎng)(wǎng)站的性能,減少數(shù)(shù)據(jù)(jù)庫(kù)的訪問(wèn)壓力,減少CPU和內(nèi)(nèi)存的壓力。)
2、既然真?zhèn)戊o態(tài)(tài)的效果一樣,我們就可以選擇偽靜態(tài)(tài)了。
3、但是偽靜態(tài)(tài)大量使用會(huì)(huì)造成CPU超負(fù)(fù)荷。
4、所以我們只要不大量使用就可以了。
5、既然靜態(tài)(tài)只是給搜索引擎爬蟲看的,我們只需要偽靜態(tài)(tài)給搜索引擎爬蟲就行了,不需要給用戶使用。[2]6、所以我們只要在專門提供給搜索引擎爬蟲[3](搜索引擎機(jī)(jī)器人)爬的Archiver中使用偽靜態(tài)(tài)就可以了。
在網(wǎng)(wǎng)上流傳了很多關(guān)(guān)于網(wǎng)(wǎng)站生成HTML靜態(tài)(tài)會(huì)(huì)對(duì)(duì)硬盤有損傷的說(shuō)法(當(dāng)(dāng)然這里的損傷概念是指相比普通的應(yīng)(yīng)用程序而言,非指任何系統(tǒng)(tǒng)和程序都會(huì)(huì)讓硬盤折壽類型的常規(guī)(guī)損傷)。但通過(guò)Google、百度并沒(méi)有發(fā)(fā)現(xiàn)(xiàn)出現(xiàn)(xiàn)過(guò)這個(gè)(gè)問(wèn)題的真實(shí)(shí)例子存在,大部分都是道聽途說(shuō)、人云亦云并沒(méi)有一個(gè)(gè)比較合理的解釋,下面就這個(gè)(gè)問(wèn)題來(lái)作一個(gè)(gè)簡(jiǎn)(jiǎn)單的分析。
首先,假設(shè)(shè)“網(wǎng)(wǎng)站生成HTML靜態(tài)(tài)會(huì)(huì)對(duì)(duì)硬盤有損耗”這個(gè)(gè)說(shuō)法成立,這個(gè)(gè)問(wèn)題影響最大的應(yīng)(yīng)該是IDC行業(yè)(yè)中的虛擬主機(jī)(jī)服務(wù)(wù)商,因?yàn)櫓髁鰿MS、論壇系統(tǒng)(tǒng)、網(wǎng)(wǎng)店系統(tǒng)(tǒng)、博客系統(tǒng)(tǒng)大多數(shù)(shù)都支持生成HTML靜態(tài)(tài)功能,而且一般情況下一臺(tái)(tái)服務(wù)(wù)器中都會(huì)(huì)存在100-300個(gè)(gè)虛擬主機(jī)(jī)同時(shí)(shí)運(yùn)(yùn)行,在有如此大的硬盤損耗的情況下,國(guó)(guó)內(nèi)(nèi)竟然沒(méi)有一家虛擬主機(jī)(jī)服務(wù)(wù)商限制生成HTML靜態(tài)(tài)站點(diǎn)(diǎn)在其虛擬主機(jī)(jī)上運(yùn)(yùn)行,這個(gè)(gè)現(xiàn)(xiàn)象是不是反常呢?是不是由于硬盤價(jià)(jià)格比較低虛擬主機(jī)(jī)服務(wù)(wù)商不在乎了呢?其實(shí)(shí)不然,因?yàn)橄朐詼虝r(shí)(shí)間內(nèi)(nèi)恢復(fù)(fù)100-300個(gè)(gè)網(wǎng)(wǎng)站的數(shù)(shù)據(jù)(jù)并不是一件簡(jiǎn)(jiǎn)單的事情,同時(shí)(shí)基于網(wǎng)(wǎng)站穩(wěn)(wěn)定性和硬件成本方面的考慮虛擬主機(jī)(jī)服務(wù)(wù)商不可能不在乎。所以在IDC行業(yè)(yè)中“網(wǎng)(wǎng)站生成HTML靜態(tài)(tài)會(huì)(huì)對(duì)(duì)硬盤有損耗”一說(shuō)法是不成立的。
其次,假設(shè)(shè)“網(wǎng)(wǎng)站生成HTML靜態(tài)(tài)會(huì)(huì)對(duì)(duì)硬盤有損耗”這個(gè)(gè)說(shuō)法成立,那為什么還會(huì)(huì)有那么多主流CMS、論壇、網(wǎng)(wǎng)店、博客軟件公司去研發(fā)(fā)這個(gè)(gè)功能呢?這個(gè)(gè)現(xiàn)(xiàn)象是不是反常呢?因?yàn)檣蒆TML靜態(tài)(tài)功能可能造成用戶硬盤損壞而引起數(shù)(shù)據(jù)(jù)丟失,軟件開發(fā)(fā)公司是肯定需要承擔(dān)(dān)相應(yīng)(yīng)責(zé)(zé)任的,應(yīng)(yīng)該沒(méi)有哪家軟件公司會(huì)(huì)在增加自己研發(fā)(fā)成本的基礎(chǔ)(chǔ)上去開發(fā)(fā)一個(gè)(gè)對(duì)(duì)自己有負(fù)(fù)面影響的功能。所以在軟件行業(yè)(yè)中“網(wǎng)(wǎng)站生成HTML靜態(tài)(tài)會(huì)(huì)對(duì)(duì)硬盤有損耗”一說(shuō)法是不成立的。
大家都知道對(duì)(duì)硬盤的操作主要分為“讀”與“寫”兩大部分,先分析生成HTML靜態(tài)(tài)對(duì)(duì)硬盤“讀”的影響:
現(xiàn)(xiàn)在以最常見的PHP動(dòng)(dòng)態(tài)(tài)網(wǎng)(wǎng)站為例,普通的PHP網(wǎng)(wǎng)站的執(zhí)(zhí)行過(guò)程是先讀取PHP文件、然后根據(jù)(jù)PHP文件中的代碼讀取數(shù)(shù)據(jù)(jù)庫(kù)中的數(shù)(shù)據(jù)(jù),最后輸出到訪問(wèn)者的瀏覽器中進(jìn)(jìn)行顯示。在這個(gè)(gè)執(zhí)(zhí)行過(guò)程中PHP文件至少讀取一次(如果代碼中包含include之類的語(yǔ)句的話還需要讀取更多次),數(shù)(shù)據(jù)(jù)庫(kù)至少讀取一次(一般情況下需要讀取多次),在這個(gè)(gè)過(guò)程完成之前一般需要讀取硬盤2-20次左右,當(dāng)(dāng)然不同的WEB服務(wù)(wù)器、數(shù)(shù)據(jù)(jù)庫(kù)、系統(tǒng)(tǒng)對(duì)(duì)IO的操作過(guò)程也不一樣,但基本可以初步了解到這個(gè)(gè)實(shí)(shí)現(xiàn)(xiàn)基本過(guò)程。
再來(lái)看“生成HTML靜態(tài)(tài)”網(wǎng)(wǎng)站的執(zhí)(zhí)行過(guò)程,很明顯執(zhí)(zhí)行過(guò)程就是直接讀取HTML文件再傳輸?shù)皆L問(wèn)者的瀏覽器進(jìn)(jìn)行顯示,對(duì)(duì)硬盤的讀取操作只有1次。
根據(jù)(jù)以上分析可以得出結(jié)(jié)論,“生成HTML靜態(tài)(tài)”網(wǎng)(wǎng)站只有普通動(dòng)(dòng)態(tài)(tài)網(wǎng)(wǎng)站讀取硬盤頻率的1/10,再加上“生成HTML靜態(tài)(tài)”網(wǎng)(wǎng)站可以利用瀏覽器的頁(yè)面緩存,對(duì)(duì)硬盤讀取的頻率可以進(jìn)(jìn)一步降低,“生成HTML靜態(tài)(tài)”網(wǎng)(wǎng)站在硬盤的“讀”操作方面沒(méi)有任何損傷,反而可以更好的保護(hù)(hù)硬盤。
明白了生成HTML靜態(tài)(tài)對(duì)(duì)硬盤“讀”的影響,我們?cè)賮?lái)看看生成HTML靜態(tài)(tài)對(duì)(duì)硬盤“寫”的影響:
還是以現(xiàn)(xiàn)在最常見的PHP動(dòng)(dòng)態(tài)(tài)網(wǎng)(wǎng)站為例,PHP動(dòng)(dòng)態(tài)(tài)網(wǎng)(wǎng)站在添加文章時(shí)(shí)直接把數(shù)(shù)據(jù)(jù)寫入了數(shù)(shù)據(jù)(jù)庫(kù),對(duì)(duì)硬盤進(jìn)(jìn)行了一次寫操作。而“生成HTML靜態(tài)(tài)”網(wǎng)(wǎng)站在寫入數(shù)(shù)據(jù)(jù)庫(kù)的同時(shí)(shí)把數(shù)(shù)據(jù)(jù)又寫入了文件,對(duì)(duì)硬盤進(jìn)(jìn)行了兩次寫操作。但在實(shí)(shí)際項(xiàng)(xiàng)目中,我們只會(huì)(huì)把修改頻率非常低的內(nèi)(nèi)容生成HTML靜態(tài)(tài),比如文章、商品內(nèi)(nèi)容,這些頁(yè)面的寫頻率本身就非常非常低的,比如我們站點(diǎn)(diǎn)發(fā)(fā)布的文章在發(fā)(fā)布后幾乎就不會(huì)(huì)再進(jìn)(jìn)行修改了。對(duì)(duì)于一個(gè)(gè)擁有10萬(wàn)篇文章的站點(diǎn)(diǎn)來(lái)說(shuō),平均一篇文章修改1次,對(duì)(duì)硬盤的寫入次數(shù)(shù)也才20萬(wàn)次,一般服務(wù)(wù)器硬盤的使用壽命都在5-10年左右,其實(shí)(shí)再放大數(shù)(shù)萬(wàn)倍也不至于達(dá)(dá)到能夠損傷硬盤的地步。不相信的朋友可以下載DiskCountersView軟件查看一下你自己的電腦在24小時(shí)(shí)內(nèi)(nèi)讀寫硬盤的次數(shù)(shù),在普通情況下24小時(shí)(shí)內(nèi)(nèi)讀寫硬盤的次數(shù)(shù)就會(huì)(huì)超過(guò)了千萬(wàn)次,如此計(jì)(jì)算20萬(wàn)次硬盤寫入幾乎可以忽略不計(jì)(jì)。
根據(jù)(jù)以上的分析可以得出結(jié)(jié)論,“生成HTML靜態(tài)(tài)”網(wǎng)(wǎng)站比普通動(dòng)(dòng)態(tài)(tài)網(wǎng)(wǎng)站硬盤寫入頻率高2倍,但由于生成“生成HTML靜態(tài)(tài)”的內(nèi)(nèi)容幾乎不會(huì)(huì)再進(jìn)(jìn)行修改,所以對(duì)(duì)硬盤的寫入次數(shù)(shù)可以忽略不計(jì)(jì),不會(huì)(huì)對(duì)(duì)硬盤造成任何損傷。
總結(jié)(jié):在最有說(shuō)話權(quán)(quán)的IDC行業(yè)(yè)和軟件行業(yè)(yè)中“生成HTML靜態(tài)(tài)頁(yè)面對(duì)(duì)硬盤有損傷”的說(shuō)法并不成立,而且通過(guò)技術(shù)(shù)分析也證明生成HTML靜態(tài)(tài)頁(yè)面并不會(huì)(huì)對(duì)(duì)硬盤造成任何損傷,相反還可以極大的降低對(duì)(duì)硬盤、數(shù)(shù)據(jù)(jù)庫(kù)的讀取操作頻率,提高站點(diǎn)(diǎn)訪問(wèn)速度。
編輯本段兩者評(píng)(píng)論
偽靜態(tài)(tài)和真靜態(tài)(tài)的評(píng)(píng)論
真正的靜態(tài)(tài)化和偽靜態(tài)(tài)還是有本質(zhì)(zhì)的區(qū)(qū)別的。為瀏覽用戶處理一個(gè)(gè)純粹html和一個(gè)(gè)調(diào)(diào)用多個(gè)(gè)數(shù)(shù)據(jù)(jù)的php在CPU的使用率方面明顯前者少。記得原來(lái)有個(gè)(gè)人說(shuō)html下載硬盤讀寫頻繁,他這么說(shuō)好像讀取數(shù)(shù)據(jù)(jù)庫(kù)不用讀寫磁盤似的,何況還有一大堆緩存的零散php也是放在硬盤的,這些讀取不用磁盤操作么?
讀取單個(gè)(gè)html+圖片F(xiàn)(xiàn)lash等附件就可以實(shí)(shí)現(xiàn)(xiàn)的目的,何苦要讀數(shù)(shù)據(jù)(jù)庫(kù)又要讀php緩存文件又要重新整合數(shù)(shù)據(jù)(jù)輸出再+圖片F(xiàn)(xiàn)lash等附件這么大費(fèi)(fèi)周章呢?CMS首頁(yè)不需要很多的互動(dòng)(dòng)的,論壇那一套不應(yīng)(yīng)該拿到這里來(lái)用,相反應(yīng)(yīng)該更多考慮的是:美觀!兼容!信息的直觀!性能!還有穩(wěn)(wěn)定!
編輯本段方法
需要的工具只有兩樣,首先就是需要..htaccess文件,然后將創(chuàng)(chuàng)建好的.htaccess文件用記事本打開輸入一下代碼:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
再保存上傳到網(wǎng)(wǎng)站根目錄下,第二步:進(jìn)(jìn)入wordpress后臺(tái)(tái),依次找到:【設(shè)(shè)置】處【固定鏈接】選擇【自定義結(jié)(jié)構(gòu)(gòu)】在【自定義結(jié)(jié)構(gòu)(gòu)】處填寫/%post_id%.html,最后就可以,如果你的網(wǎng)(wǎng)站裝了緩存插件需要更新一下。
- ·網(wǎng)(wǎng)站所在服務(wù)(wù)器備案流程指導(dǎo)(dǎo)(代理人作為網(wǎng)(wǎng)站負(fù)(fù)責(zé)(zé)人)2015.05.15
- ·服務(wù)(wù)器備案流程指導(dǎo)(dǎo)(法人作為網(wǎng)(wǎng)站負(fù)(fù)責(zé)(zé)人)2015.05.15
- ·穩(wěn)(wěn)定網(wǎng)(wǎng)站排名的幾大技巧2013.05.06
- ·怎樣讓中小企業(yè)(yè)的網(wǎng)(wǎng)站更專業(yè)(yè)化?2013.05.06
- ·網(wǎng)(wǎng)站建設(shè)(shè)前SEO規(guī)(guī)劃很重要2013.05.06
