1.關于偽靜態的用處
有些用戶覺得,偽靜態和真靜態實際被收錄量會相差非常大,其實不然,從你個人角度,你去判斷一下一個帖子到底是真靜態還是偽靜態?
估計非常難看得出,因為所謂靜態的意思,就是地址中不帶問號,不帶問號的就是靜態,管他是真的還是偽的?搜索引擎看得出嗎?
所以說,其實不論是真的還是偽的,其實對于搜索引擎來說都是相同的,搜索引擎沒有說,你這個是偽的,我不收錄你.
揪根掘底的來說,為什么搜索引擎會不收錄帶問號的網址?因為搜索引擎怕由于問號而進入死循環(以前動網就有這樣一個漏洞,蜘蛛進去出不來了),所以非常多時候帶問號的地址是不會進去的,偽靜態對于搜索引擎來說,其實就是靜態,因為地址中沒有帶問號,所以沒有真靜態比偽靜態收錄得多的說法.
2.為什么選擇偽靜態
有非常多用戶說:
真靜態不好嗎?
為什么不用真靜態?
訪問起來不是更快嗎?
負載不是更好嗎?
等等等等...
在這里,其實只用一個問題來回答:為什么選擇MYSQL.
非常多用戶大概不明白為什么那么多大型論壇都選擇了MYSQL數據庫作為儲存機制,大概大部分都是想:"因為DZ用了MYSQL,所以就是MYSQL".
其實不然,試想DZ為什么會在那么多論壇程式并存的日子生存下來并笑傲江湖,非常大原因是因為DZ用了MYSQL.試想如果大C當年改的程式是個文本論壇,那還會有DZ的今天嗎?
或從另一個角度問,為什么那么多大型網站都選擇了MYSQL而不是文本作為儲存機制?
所謂文本論壇,實際就跟真靜態的說法差不多了,將數據儲存在空間上面,大量讀寫硬盤,等等...
為什么這種寫法會被淘汰呢?
我相信答案不會是老師所說的:
"discuz.net 目前有 2129867 篇帖子,存儲成html的話大約是 20799 M,也就是 20G左右。這當中還不計算由于磁盤存儲機制造成的空間浪費(100個1k 的文件占用的空間可能會是200K)。"
這種說法從我個人觀點來看,這個理由不能給予用戶不使用真靜態充分的理由.
然而,另一個理由卻是值得我們注意思考的,也是為什么絕大多數站都不選擇生成靜態:
"刪除、更新這些html內容會導致大量的磁盤io操作及大量的磁盤碎片."
正如上面這個說法,在實際當中確實會導致大量的磁盤I/O操作(input,output),大量進行I/O操作帶來的后果可想而知,會產生大量的磁盤碎片甚至會導致硬盤出現壞道.
所以對于生成靜態而言,還不如去用文本論壇,能更好的解決你們的需求.
(副W就是做文本論壇出生的,當時的名字為ofstar http://www.sh012.com ,后因發展困難轉為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占有量的上升,確實是偽靜態最大的弊病.
4.我們該怎么做
我們來總結一下.
1.使用真靜態和假靜態對SEO來說沒有什么差別
2.使用真靜態可能將導致硬盤損壞并將影響論壇性能
3.使用偽靜態將占用一定量的CPU占有率,大量使用將導致CPU超負荷
4.最重要的一點,我們要靜態是為了SEO
所以.
1.使用真靜態的方法能直接排除了,因為無論怎么生成,對硬盤來說都是非常傷的.
2.既然真偽靜態的效果相同,我們就能選擇偽靜態了.
3.不過偽靜態大量使用會照成CPU超負荷.
4.所以我們只要不大量使用就能了.
5.既然靜態只是給SEO看的,我們只需要偽靜態給SEO就行了,不必給用戶使用.
6.所以我們只要在專門提供給SEO爬的Archiver中使用偽靜態就能了.
5.判斷某網站是真靜態還是偽靜態
IE瀏覽器
打開你想判斷的網站后,再在網址框中輸入javascript:alert(document.lastModified)。此方法可以判斷一個網頁的最后更新時間。如果這個時間與現在的時間相同,說明是偽靜態的,反之為真靜態的。
火狐Firefox瀏覽器
先用火狐打開一個網頁,等網頁完全打開后進入FireFox的控制臺,"工具"-“錯誤控制臺”-快捷鍵:Shift+Ctrl+J,然后在控制臺里面輸入入:alert(document.lastModified),查看最后修改時間并記錄。
接下來關閉控制臺,重新刷新網頁,再用相同的方法在控制臺里輸入查詢代碼,再查看文件的最后修改時間,連續幾次如果發現時間不同則可以判斷它是偽靜態的了