一、什麼是偽靜態
定義:動態網頁通過重寫URL的方法實現去掉動態網頁的參數,但在實際的網頁目錄中並沒有必要實現存在 重寫的頁面。
例如:我們當訪問地址http://www.cnblogs.com/ForEvErNoME/archive/2012/06/05/2529259.html時,你 會認為在站點服務器下存在名為2529259.html文件,其實實際上它可能是不存在的,而可能你看到的內容是通 過重定向/archive/article.aspx?year=2012&month=06&day=05&id=2529259顯示出來的。
二、為什麼要把網站偽靜態化
1、偽靜態的用處
有些用戶覺得,偽靜態和真靜態實際被收錄量會相差很大,其實不然,從你個人角度,你去判斷一下一個 帖子到底是真靜態還是偽靜態?估計很難看得出,因為所謂靜態的意思,就是地址中不帶問號,不帶問號的就 是靜態,管他是真的還是偽的?搜索引擎看得出嗎?所以說,其實不論是真的還是偽的,其實對於搜索引擎來 說都是一樣的,搜索引擎沒有說,你這個是偽的,我不收錄你。
追根究底來說,為什麼搜索引擎會不收錄帶問號的網址?因為搜索引擎怕由於問號而進入死循環,稱為 "搜索機器人陷阱(Spidertraps)"(以前動網就有這樣一個漏洞,蜘蛛進去出不來了),所以很 多時候帶問號的地址搜索引擎是不會進去的,偽靜態對於搜索引擎來說,其實就是靜態,因為地址中沒有帶問 號,所以沒有真靜態比偽靜態收錄得多的說法。
2、為什麼選擇偽靜態?
有很多用戶說:真靜態不好嗎?為什麼不用真靜態?訪問起來不是更快嗎?負載不是更好嗎?等等等等 ……
在這裡,其實只用一個問題來回答:為什麼選擇MYSQL?很多用戶大概不明白為什麼那麼多大型論壇都選擇 了MYSQL數據庫作為儲存機制,大概大部分都是想:"因為DZ用了MYSQL,所以就是MYSQL".
其實不然,試想DZ為什麼會在那麼多論壇程序並存的日子生存下來並笑傲江湖,很大原因是因為DZ用了 MYSQL.試想如果大C當年改的程序是一個文本論壇,那還會有DZ的今天嗎?或者從另一個角度問,為什麼那麼 多大型網站都選擇了MYSQL而不是文本作為儲存機制?
所謂文本論壇,實際就跟真靜態的說法差不多了,將數據儲存在空間上面,大量讀寫硬盤,等等 ……
為什麼這種寫法會被淘汰呢?我相信答案不會是老師所說的:"Discuz!目前有 2129867 篇帖子,存 儲成html的話大約是 20799M,也就是 20G左右。這當中還不計算由於磁盤存儲機制造成的空間浪費(100個 1k 的文件占用的空間可能會是200K)。"
這種說法從我個人觀點來看,這個理由不能給用戶不使用真靜態充分的理由。然而,另一個理由卻是值得 我們注意思考的,也是為什麼絕大多數站都不選擇生成靜態:
"刪除、更新這些html內容會導致大量的磁盤io操作以及大量的磁盤碎片。"
正如上面的說法,在實際當中確實會導致大量的磁盤I/O操作(input/output),大量進行I/O操作帶來的 後果可想而知,會產生大量的磁盤碎片甚至會導致硬盤出現壞道。
所以對於生成靜態而言,還不如去用文本論壇,可以更好的解決你們的需求。(副W就是做文本論壇出生的 ,當時的名字為ofstar,後因發展困難轉為MYSQL,而PW生成靜態頁面也就是PW以前文本方式稍加改進用於吸引 用戶眼球的噘頭)
當然,如果大家記憶力好的話,應該可以記得PW4的時候PW論壇不能訪問很長一段時間,後來恢復到一段時 間前的數據,官方的說法是被人攻擊而導致硬盤損壞,其實這種說法是比較不可信的,相對於是被攻擊導致硬 盤損壞還是大量I/O操作而產生的後果,我個人更傾向於後者。
當然,如果大家比較關注5d6d的話,應該知道前幾天有一天時間5d6d無法訪問,根據非官方消息是因為硬 盤壞了,而損壞的原因我想當然是因為大量用戶大量進行I/O操作了,試想,我們一個論壇,進行磁盤I/O操作 的僅為管理員進行更新緩存時進行的,而5d6d每一個會員就是一個管理員,試想下對磁盤是多大的考驗?所以 我並不奇怪5d6d的硬盤壞了。
當然,也許在讀這篇文章的很多朋友都有使用過BT,也聽說過BT對硬盤很傷,不能開多,而所謂傷害,和這 裡指的都是同一樣東西,大量I/O導致磁盤出現碎片甚至出現磁盤壞道。
這裡都是說些很實際的例子來說明問題了。
3、偽靜態的壞處
當然猶如一篇文章的作者所說的:"如果流量稍大一些使用偽靜態就出現CPU使用超負荷,我的同時在 線300多人就掛了,而不使用偽靜態的時候同時在線超500人都不掛,我的ISS數是1000."
確實是這樣的,由於偽靜態是用正則判斷而不是真實地址,分辨到底顯示哪個頁面的責任也由直接指定轉 由CPU來判斷了,所以CPU占有量的上升,確實是偽靜態最大的弊病。