就目前網站建設行業開發使用的語言來講,更多的還是集中於兩個語言上面,一個 php,一個就是 ASP.NET 了。而目前 WordPress 網站建設市場也同樣有著這樣的情況,而對於有建站需求的企業來講,更何況可能對於這些不太瞭解的企業,在選擇上就出現了一些小小的矛盾。那今天 WordPress 網站建設-SEO 站群就關於網站後臺開發的語言和大傢俱體的分析下,但是這裡小編不打算多講,只說下 ASP.NET 的語言使用的情況,原因沒有別的只因為我們 SEO 站群一直使用這個,可能比較有話語權,而且在 WordPress 網站建設市場來看 ASP.NET 還是有很大的比列的。

 

搜尋引擎最佳化的角度考慮

  根據網上的資料來看,網站靜態化考慮多的就是 SEO 站群了,事實上靜態頁面確實十分有利於搜尋引擎蜘蛛的抓取,另外早期的 ASP.NET Web Form 網站對於 SEO 站群則不是太友好。

  那麼為什麼靜態化會有利於 SEO 站群呢? 這裡主要從 URL 進行分析,對於搜尋引擎蜘蛛來說,動態的 URL 往往是十分不友好的,雖然現在搜素引擎的技術已經可以抓取到動態頁面的內容,但是相比靜態 URL 簡短、美觀、穩定的性質,動態 URL 地址中過多且複雜的引數會使蜘蛛難以理解和區分。

  動態頁面本身是依靠傳入的引數來查詢顯示資料庫的內容,對於引擎蜘蛛來說,相同名稱的.aspx 頁面都是同一個頁面,不同的只是引數,搜尋引擎只能根據這些複雜的引數來判斷 URL 是否為不同的頁面,所以動態 URL 對於搜素引擎來說是十分不友好的。

  而靜態頁面則不同,由於靜態頁面的 URL 對應的是伺服器上頁面所在的磁碟路徑,搜尋引擎很容易區分和理解頁面的地址,而且靜態 URL 一般也不會帶有複雜的引數。

  對於 ASP.NET Web Form 網站來說,如果只是想最佳化 URL,那麼倒是可以考慮使用偽靜態的方法。幸運的是,對於使用 ASP.NET MVC 開發的網站來說,就沒有這個煩惱了,ASP.NET MVC 的路由機制就為我們提供了對 SEO 站群十分友好的 URL,甚至可以考慮不對網站進行靜態化操作。

  另外靜態頁面訪問的速度比動態頁面快,從 SEO 站群的角度來看是十分有利的。畢竟對於搜尋引擎蜘蛛,如果一個頁面響應速度慢並且經常打不開,那麼就等於釋放出兩個訊號:1 、網站多使用者體驗不好。 2 、網站內容很難抓取。這樣會對網站排名造成極大的負面影響。

  從網站伺服器壓力和訪問速度考慮

  這裡先從訪問速度進行對比,靜態頁面的訪問速度確實比動態頁面快,畢竟靜態頁面只需從硬碟讀取頁面檔案就可以將內容呈現給多使用者,而動態頁面比如 asp.net 網站一般還需要經過程式處理相關的業務邏輯,以及從資料庫中讀取資料才能渲染頁面並呈現出來,一定程度上會拖慢頁面的訪問速度。在遇到高強度訪問壓力的時候,靜態頁面快速和穩定的優勢將會完全體現出來。

  這裡再從伺服器資源角度來看,對於站群站長來說伺服器配置越好所需的費用越高,那麼靜態化的網站在伺服器資源方面又是如何呢? 這麼說吧,靜態頁面消耗硬碟的資源較多,一般在磁碟空間容量方面,主要是大量的頁面檔案和分級資料夾。另外靜態頁面在生成時候,對於硬碟的 IO 讀寫操作和 CPU 消耗也是十分巨大的,特別是遇到有大量的頁面要進行靜態化的時候,CPU 運算和 IO 操作將會更加顯著的降低伺服器效能。

  而 ASP.NET 這類的動態網站一般比較消耗伺服器的記憶體資源,這裡需要開發人員注意對網站進行最佳化,儘量避免將大量資料儲存至會話中,以及在使用快取方面也需要額外注意。另外有些動態網站對 CPU 使用率也是十分高的,比如一些提供圖片處理的服務網站。此外需要對資料庫進行大量增刪改操作的動態網站,對伺服器壓力非常的大,例如常見的論壇類網站 (WEB2.0),甚至有的伺服器商在出租伺服器時,會有額外的提示伺服器可承受的壓力資料。

  總體來說,靜態化後的網站確實有利於降低伺服器壓力。在生成靜態頁面時所造成的伺服器效能影響,是可以透過一定的手段進行最佳化。另外大家也可以瞭解下 CDN 技術,即內容分發網路,對於靜態頁面來說,一旦使用了這個技術,外加上瀏覽器快取,那麼多使用者訪問網站的響應速度就像火箭一樣快! 訪問速度快了,從另一個角度來看又是有利於搜尋引擎對網站內容的抓取。

  從技術角度分析

  作為一個 ASP.NET 開發人員,曾經在對網站進行靜態化的時候遇到過許多問題。先從網站程式的複雜度進行分析,一個具有靜態化功能的網站必是非常複雜的,因為靜態化一個網站要考慮的技術性問題十分多 (這裡不包括偽靜態) 。

  進行靜態操作的時候,不僅要考慮到單個頁面的操作,還需要注意整體與單個之間的複雜關聯,有種牽一髮而動全身的壓迫。就拿常見的上一頁和下一頁來說,如果當前網站的某一篇文章刪除了,那麼這篇文章對應的上下頁就必須要重新進行靜態化,否則連結的地址將會出現 404 。簡單的頁面尚且如此,更別說那些大型的網站了,每個頁面中超級複雜的關係就夠喝一壺了。

  再從進行靜態操作的時機來看,一般開發人員要實現相應的觸發開關功能,用於判斷是否要進行靜態化操作,以及要進行什麼樣的靜態化操作。是區域性還是整體? 靜態頁面檔案是否存在? 靜態頁面的資料是否過期? 這些問題都說明了生成的時機是很重要的,否則會造成多使用者看到的資料不是新的內容。

  此外靜態化操作對伺服器效能的影響也是煎熬開發人員的難題之一,我們不可能頻繁的進行靜態化操作,對磁碟的 IO 操作以及大量的邏輯處理都會消耗大量 CPU 的資源,伺服器效能隨之受到影響。在進行批次操作時,一定要考慮使用執行緒進行處理,千萬不能阻塞網站的整體程式。

  老實話,對於網站開發者來說,靜態功能也許是一個頭疼的問題,開發難度加大了,同時維護難度和管理難度也通用加大,在網站備份的時候還得考慮是否要備份這些靜態檔案! 特別是大型的網站,靜態化往往需要進行復雜的架構設計!

  總結 ASP.NET 靜態化的利弊

  是否是需要靜態化,還是得看整體的需求,俗話說只有適合自己的才是知名的 (有點廢話的趕腳 ^^) 。

  一般來說一些不經常更新內容的頁面就可以考慮進行靜態操作,比如新聞頁面,小說的章節頁面,畢竟這些內容一旦釋出了,就很少會進行改動。而且可以使用 CDN 技術進行加速。

  優點:

  1 、利於 SEO 站群,體現在友好的 URL 路徑和快速的訪問速度,asp.net mvc 網站可以忽略 URL 的影響。

  2 、一個字:就是快!!! 靜態頁面訪問速度快,多使用者體驗好,結合 CDN 技術、快取和相應的架構,提速效果更加明顯!

  3 、相比動態頁面一定程度上減輕伺服器壓力

  缺點:

  1 、可能需要使用大量硬碟空間

  2 、增加網站開發複雜度,不利於程式維護和管理。

  3 、不太靈活,靜態化操作是需要觸發開關的,不可能頻繁的進行操作,可能導致資料更新慢,需要進行相應的設計。