一偽靜態的用處
有些用戶覺得
偽靜態和真靜態實際被收錄量會相差很大
其實不然
從你個人角度
你去判斷一下一個帖子到底是真靜態還是偽靜態?估計很難看得出
因為所謂靜態的意思
就是地址中不帶問號
不帶問號的就是靜態
管他是真的還是偽的?搜索引擎看得出嗎?所以說
其實不論是真的還是偽的
其實對於搜索引擎來說都是一樣的
搜索引擎沒有說
你這個是偽的
我不收錄你
追根究底來說
為什麼搜索引擎會不收錄帶問號的網址?因為搜索引擎怕由於問號而進入死循環
稱為
搜索機器人陷阱(Spidertraps)
(以前動網就有這樣一個漏洞
蜘蛛進去出不來了)
所以很多時候帶問號的地址搜索引擎是不會進去的
偽靜態對於搜索引擎來說
其實就是靜態
因為地址中沒有帶問號
所以沒有真靜態比偽靜態收錄得多的說法
二為什麼選擇偽靜態?
有很多用戶說
真靜態不好嗎?為什麼不用真靜態?訪問起來不是更快嗎?負載不是更好嗎?等等等等
在這裡
其實只用一個問題來回答
為什麼選擇MYSQL?很多用戶大概不明白為什麼那麼多大型論壇都選擇了MYSQL數據庫作為儲存機制
大概大部分都是想
因為DZ用了MYSQL
所以就是MYSQL
其實不然
試想DZ為什麼會在那麼多論壇程序並存的日子生存下來並笑傲江湖
很大原因是因為DZ用了MYSQL
試想如果大C當年改的程序是一個文本論壇
那還會有DZ的今天嗎?或者從另一個角度問
為什麼那麼多大型網站都選擇了MYSQL而不是文本作為儲存機制?
所謂文本論壇
實際就跟真靜態的說法差不多了
將數據儲存在空間上面
大量讀寫硬盤
等等
為什麼這種寫法會被淘汰呢?我相信答案不會是老師所說的
Discuz!目前有
篇帖子
存儲成html的話大約是
M
也就是
G左右
這當中還不計算由於磁盤存儲機制造成的空間浪費(
個
k的文件占用的空間可能會是
K)
這種說法從我個人觀點來看
這個理由不能給用戶不使用真靜態充分的理由
然而
另一個理由卻是值得我們注意思考的
也是為什麼絕大多數站都不選擇生成靜態
刪除
更新這些html內容會導致大量的磁盤io操作以及大量的磁盤碎片
正如上面的說法
在實際當中確實會導致大量的磁盤I/O操作(input/output)
大量進行I/O操作帶來的後果可想而知
會產生大量的磁盤碎片甚至會導致硬盤出現壞道
所以對於生成靜態而言
還不如去用文本論壇
可以更好的解決你們的需求
(副W就是做文本論壇出生的
當時的名字為ofstar
後因發展困難轉為MYSQL
而PW生成靜態頁面也就是PW以前文本方式稍加改進用於吸引用戶眼球的噘頭)
當然
如果大家記憶力好的話
應該可以記得PW
的時候PW論壇不能訪問很長一段時間
後來恢復到一段時間前的數據
官方的說法是被人攻擊而導致硬盤損壞
其實這種說法是比較不可信的
相對於是被攻擊導致硬盤損壞還是大量I/O操作而產生的後果
我個人更傾向於後者
當然
如果大家比較關注
d
d的話
應該知道前幾天有一天時間
d
d無法訪問
根據非官方消息是因為硬盤壞了
而損壞的原因我想當然是因為大量用戶大量進行I/O操作了
試想
我們一個論壇
進行磁盤I/O操作的僅為管理員進行更新緩存時進行的
而
d
d每一個會員就是一個管理員
試想下對磁盤是多大的考驗?所以我並不奇怪
d
d的硬盤壞了
當然
也許在讀這篇文章的很多朋友都有使用過BT
也聽說過BT對硬盤很傷
不能開多
而所謂傷害
和這裡指的都是同一樣東西
大量I/O導致磁盤出現碎片甚至出現磁盤壞道
這裡都是說些很實際的例子來說明問題了
三偽靜態的壞處
當然猶如一篇文章的作者所說的
如果流量稍大一些使用偽靜態就出現CPU使用超負荷
我的同時在線
多人就掛了
而不使用偽靜態的時候同時在線超
人都不掛
我的ISS數是
確實是這樣的
由於偽靜態是用正則判斷而不是真實地址
分辨到底顯示哪個頁面的責任也由直接指定轉由CPU來判斷了
所以CPU占有量的上升
確實是偽靜態最大的弊病
四我們應該選擇偽靜態還是真靜態?
我們來總結一下
使用真靜態和假靜態對SEO來說沒有什麼區別
使用真靜態可能將導致硬盤損壞並將影響論壇性能
使用偽靜態將占用一定量的CPU占有率
大量使用將導致CPU超負荷
最重要的一點
我們要靜態是為了SEO
所以
使用真靜態的方法可以直接排除了
因為無論怎麼生成
對硬盤來說都是很傷的
既然真偽靜態的效果一樣
我們就可以選擇偽靜態了
但是偽靜態大量使用會照成CPU超負荷
所以我們只要不大量使用就可以了
既然靜態只是給SEO看的
我們只需要偽靜態給SEO就行了
不需要給用戶使用
所以我們只要在專門提供給SEO爬的Archiver中使用偽靜態就可以了
謝謝大家耐心看我寫的文章
有何不解的地方或是有不同的看法歡迎提出
五關於偽靜態和真靜態的評論
真正的靜態化和偽靜態還是有本質的區別的
為浏覽用戶處理一個純粹htm和一個調用多個數據的php在CPU的使用率方面明顯前者少
記得原來有個人說html下載硬盤讀寫頻繁
他這麼說好像讀取數據庫不用讀寫磁盤似的
何況還有一大堆緩存的零散php也是放在硬盤的
這些讀取不用磁盤操作麼?可笑
讀取單個htm+圖片Flash等附件就可以實現的目的
何苦要讀數據庫又要讀php緩存文件又要重新整合數據輸出再+圖片Flash等附件這麼大費周章呢?CMS首頁不需要很多的互動的
論壇那一套不應該拿到這裡來用
相反應該更多考慮的是
美觀!兼容!信息的直觀!性能!還有穩定!
其實所謂的偽靜態頁面
就是指的URL重寫
在ASP
NET中實現非常簡單
首先你要在你的項目裡引用兩個DLL:
ActionlessForm
dll
URLRewriter
dll
真正實現重寫的是 URLRewriter
dll 但是如果你要實現分頁
那麼必須使用這個ActionlessForm
dll
首先在nfig裡寫
<configSections>
<section name=
RewriterConfig
type=
URLRewriter
Config
RewriterConfigSerializerSectionHandler
URLRewriter
/>
</configSections>
<httpModules>
<add type=
URLRewriter
ModuleRewriter
URLRewriter
name=
ModuleRewriter
/>
</httpModules>
<!
下面是配置重寫URL規則
>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/Products/Jurisdiction_(w{
})
aspx</LookFor>
<SendTo>~/En/Jurisdiction
aspx?jurid=$
</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(d{
})
aspx</LookFor> <!
這個是被代替後的文件名
使用到正則表達式
>
<SendTo><![CDATA[~/En/Article_view
aspx?article_id=$
]]></SendTo> <!
這個是要給代替的網頁
一般是帶有問號後面帶參數的網頁
>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(d{
})_(d{
})
aspx</LookFor>
<SendTo><![CDATA[~/En/Article_view
aspx?article_id=$
&page=$
]]></SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
這樣比如上面的網址x?article_id=
就可以用x來代替
當然
你代替後的擴展名可以用任何iis能解釋的擴展名
如果你喜歡用htm做擴展名
那麼在配置轉發規則上面配置為htm為擴展名的
同樣有些文章可能很長
往往我們會把一個文章分成幾頁
那麼根據上面的配置
我們如果想訪問x?article_id=
&page=
我們就可以用x來代替
這樣當搜索引擎來抓起你的網頁的時候
就會收錄你這些網址下去
別人搜索到你網頁的時候
就可以從這些地址鏈接過來
然後這樣操作:
右鍵點我的電腦
>管理
>展開
服務和應用程序
>internet信息服務
>找到你共享的目錄
>右鍵點擊屬性
>點擊
配置
>
映射下面
>找到
aspx的可執行文件路徑復制路徑
>粘貼路徑
>擴展名為l
>然後把檢查文件是否存在的勾去掉這樣就可以了
From:http://tw.wingwit.com/Article/program/net/201311/11583.html