ASP.Net 實現偽靜態方法及意義

來源:互聯網
上載者:User

偽靜態用處:

搜尋引擎會不收錄帶問號的網址,因為搜尋引擎怕由於問號而陷入死迴圈,稱為“搜尋機器人陷阱”,所以很多帶問號的地址搜尋引擎不會進去。

帶問號的網址,搜尋引擎也是會收錄的,權重不高。

偽靜態對於搜尋引擎來說,就是靜態,因為地址中間沒有帶問號,所以沒有真靜態比偽靜態收錄的多的說法。

為啥要選擇偽靜態捏?

“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,判斷地址,然後解析地址,產生偽靜態網址。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.