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