偽靜態用處:
搜尋引擎會不收錄帶問號的網址,因為搜尋引擎怕由於問號而陷入死迴圈,稱為“搜尋機器人陷阱”,所以很多帶問號的地址搜尋引擎不會進去。
帶問號的網址,搜尋引擎也是會收錄的,權重不高。
偽靜態對於搜尋引擎來說,就是靜態,因為地址中間沒有帶問號,所以沒有真靜態比偽靜態收錄的多的說法。
為啥要選擇偽靜態捏?
“Discuz!目前有 2129867 篇文章,儲存成html的話大約是 20799M,也就是 20G左右。這當中還不計算由於磁碟儲存機製造成的空間浪費(100個 1k的檔案佔用的空間可能會是200K)。”
所謂的文本論壇,實際就跟真靜態說法差不多了,將資料存放區在空間上面,大量的讀寫硬碟,等等。
刪除更新html內容,會導致大量的磁碟操作以及大量的磁碟片段,甚至會導致硬碟出現壞道。
偽靜態壞處
如果流量稍大一些,使用偽靜態就會出現CPU超負荷,由於偽靜態是用正則判斷是不是真真實位址,分辨到底顯示那個頁面的責任也直接指定轉由CPU來判斷了,所以CPU有量的上升,確實是偽靜態最大的弊病。
應該使用靜態還是偽靜態?
1 使用靜態和偽靜態,對於SEO來說並沒有什麼區別。
2使用真靜態可能會導致磁碟損壞並影響網站 論壇的效能。
3使用偽靜態佔用一定量的CPU佔有率,大量使用將導致CPU超負荷。
總得來說,靜態是為了SEO,既然靜態是做給SEO看的,只需要偽靜態給SEO就可以了,不需要給使用者使用,所以,只要在專門提供SEO爬的 Archiver中使用偽靜態就好了。
其實所謂的偽靜態頁面,就是指的URL重寫,在ASP.NET中實現非常簡單
首先你要在你的項目裡引用兩個DLL:
ActionlessForm.dll
URLRewriter.dll
真正實現重寫的是 URLRewriter.dll 但是如果你要實現分頁,那麼必須使用這個ActionlessForm .dll
首先在web.config裡寫
<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{3})\.aspx</LookFor>
<SendTo>~/En/Jurisdiction.aspx?jurid=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(\d{1,})\.aspx</LookFor> <!-- 這個是被代替後的檔案名稱,使用到Regex -->
<SendTo><![CDATA[~/En/Article_view.aspx?article_id=$1]]></SendTo> <!-- 這個是要給代替的網頁,一般是帶有問號後面帶參數的網頁 -->
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(\d{1,})_(\d{1,})\.aspx</LookFor>
<SendTo><![CDATA[~/En/Article_view.aspx?article_id=$1&page=$2]]></SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
這樣比如上面的網址http://localhost/En/Article_View.aspx?article_id=9就可以用http://localhost/Articles/9.aspx來代替,當然,你代替後的副檔名可以用任何iis能解釋的副檔名,如果你喜歡用htm做副檔名,那麼在配置轉寄規則上面配置為htm為副檔名的,同樣有些文章可能很長,往往我們會把一個文章分成幾頁,那麼根據上面的配置,我們如果想訪問http://localhost/En/Article_View.aspx?article_id=9&page=3我們就可以用http://localhost/Articles/9_3.aspx來代替,這樣當搜尋引擎來抓起你的網頁的時候,就會收錄你這些網址下去,別人搜尋到你網頁的時候,就可以從這些地址連結過來。
然後這樣操作:
右鍵點我的電腦-->管理-->展開'服務和應用程式'-->internet資訊服務-->找到你共用的目錄-->右鍵點擊屬性 -->點擊'配置'-->
映射下面 -->找到.aspx的可執行檔路徑 複製路徑-->粘貼路徑-->副檔名為".html"-->然後把檢查檔案是否存在的勾去掉 這樣就可以了
以上學習資料參考來源於新浪歐陽孔劍的blog,自己整理了一下。
之前記得可以利用HttpModule來實現URL重寫的,具體忘記了。
HTTPModule是向實現提供模組初始化和處置事件,負責監聽HttpRequest,同時對HttpRequest增添或過濾掉一部分內容。當一個HTTPRequest到達HTTPModule時,整個ASP.Net Framework系統並沒有對這個請求做任何處理,對於Http請求來兩,HttpModule是一個HTTP請求的“必經之地”。
最近這個網站用的偽靜態也是利用了一個組件,在web.config中配置,網站根目錄下有個http.ini檔案,ini檔案也是利用Regex,判斷地址,然後解析地址,產生偽靜態網址。