就目前網(wǎng)站建設(shè)行業(yè)開發(fā)使用的語言來講,更多的還是集中于兩個語言上面,一個php,一個就是ASP.NET了。而目前保定網(wǎng)站建設(shè)市場也同樣有著這樣的情況,而對于有建站需求的企業(yè)來講,更何況可能對于這些不太了解的企業(yè),在選擇上就出現(xiàn)了一些小小的矛盾。那今天保定網(wǎng)站建設(shè)-移動互聯(lián)就關(guān)于網(wǎng)站后臺開發(fā)的語言和大家具體的分析下。
搜索引擎優(yōu)化的角度考慮
根據(jù)網(wǎng)上的資料來看,網(wǎng)站靜態(tài)化考慮最多的就是SEO了,事實上靜態(tài)頁面確實十分有利于搜索引擎蜘蛛的抓取,另外早期的ASP.NET Web Form網(wǎng)站對于SEO則不是太友好。
那么為什么靜態(tài)化會有利于SEO呢?這里主要從URL進(jìn)行分析,對于搜索引擎蜘蛛來說,動態(tài)的URL往往是十分不友好的,雖然現(xiàn)在搜素引擎的技術(shù)已經(jīng)可以抓取到動態(tài)頁面的內(nèi)容,但是相比靜態(tài)URL簡短、美觀、穩(wěn)定的性質(zhì),動態(tài)URL地址中過多且復(fù)雜的參數(shù)會使蜘蛛難以理解和區(qū)分。
動態(tài)頁面本身是依靠傳入的參數(shù)來查詢顯示數(shù)據(jù)庫的內(nèi)容,對于引擎蜘蛛來說,相同名稱的.aspx頁面都是同一個頁面,不同的只是參數(shù),搜索引擎只能根據(jù)這些復(fù)雜的參數(shù)來判斷URL是否為不同的頁面,所以動態(tài)URL對于搜素引擎來說是十分不友好的。
而靜態(tài)頁面則不同,由于靜態(tài)頁面的URL對應(yīng)的是服務(wù)器上頁面所在的磁盤路徑,搜索引擎很容易區(qū)分和理解頁面的地址,而且靜態(tài)URL一般也不會帶有復(fù)雜的參數(shù)。
對于ASP.NET Web Form網(wǎng)站來說,如果只是想優(yōu)化URL,那么倒是可以考慮使用偽靜態(tài)的方法。幸運(yùn)的是,對于使用ASP.NET MVC開發(fā)的網(wǎng)站來說,就沒有這個煩惱了,ASP.NET MVC的路由機(jī)制就為我們提供了對seo十分友好的URL,甚至可以考慮不對網(wǎng)站進(jìn)行靜態(tài)化操作。
另外靜態(tài)頁面訪問的速度比動態(tài)頁面快,從SEO的角度來看是十分有利的。畢竟對于搜索引擎蜘蛛,如果一個頁面響應(yīng)速度慢并且經(jīng)常打不開,那么就等于釋放出兩個信號:1、網(wǎng)站用戶體驗不好。2、網(wǎng)站內(nèi)容很難抓取。這樣會對網(wǎng)站排名造成極大的負(fù)面影響。
從網(wǎng)站服務(wù)器壓力和訪問速度考慮
這里先從訪問速度進(jìn)行對比,靜態(tài)頁面的訪問速度確實比動態(tài)頁面快,畢竟靜態(tài)頁面只需從硬盤讀取頁面文件就可以將內(nèi)容呈現(xiàn)給用戶,而動態(tài)頁面比如asp.net網(wǎng)站一般還需要經(jīng)過程序處理相關(guān)的業(yè)務(wù)邏輯,以及從數(shù)據(jù)庫中讀取數(shù)據(jù)才能渲染頁面并呈現(xiàn)出來,一定程度上會拖慢頁面的訪問速度。在遇到高強(qiáng)度訪問壓力的時候,靜態(tài)頁面快速和穩(wěn)定的優(yōu)勢將會完全體現(xiàn)出來。
這里再從服務(wù)器資源角度來看,對于站長來說服務(wù)器配置越好所需的費(fèi)用越高,那么靜態(tài)化的網(wǎng)站在服務(wù)器資源方面又是如何呢?這么說吧,靜態(tài)頁面消耗硬盤的資源較多,一般在磁盤空間容量方面,主要是大量的頁面文件和分級文件夾。另外靜態(tài)頁面在生成時候,對于硬盤的IO讀寫操作和CPU消耗也是十分巨大的,特別是遇到有大量的頁面要進(jìn)行靜態(tài)化的時候,CPU運(yùn)算和IO操作將會更加顯著的降低服務(wù)器性能。
而ASP.NET這類的動態(tài)網(wǎng)站一般比較消耗服務(wù)器的內(nèi)存資源,這里需要開發(fā)人員注意對網(wǎng)站進(jìn)行優(yōu)化,盡量避免將大量數(shù)據(jù)保存至?xí)捴校约霸谑褂镁彺娣矫嬉残枰~外注意。另外有些動態(tài)網(wǎng)站對CPU使用率也是十分高的,比如一些提供圖片處理的服務(wù)網(wǎng)站。此外需要對數(shù)據(jù)庫進(jìn)行大量增刪改操作的動態(tài)網(wǎng)站,對服務(wù)器壓力非常的大,例如最常見的論壇類網(wǎng)站(WEB2.0),甚至有的服務(wù)器商在出租服務(wù)器時,會有額外的提示服務(wù)器可承受的壓力數(shù)據(jù)。
總體來說,靜態(tài)化后的網(wǎng)站確實有利于降低服務(wù)器壓力。在生成靜態(tài)頁面時所造成的服務(wù)器性能影響,是可以通過一定的手段進(jìn)行優(yōu)化。另外大家也可以了解下CDN技術(shù),即內(nèi)容分發(fā)網(wǎng)絡(luò),對于靜態(tài)頁面來說,一旦使用了這個技術(shù),外加上瀏覽器緩存,那么用戶訪問網(wǎng)站的響應(yīng)速度就像火箭一樣快!訪問速度快了,從另一個角度來看又是有利于搜索引擎對網(wǎng)站內(nèi)容的抓取。
從技術(shù)角度分析
作為一個ASP.NET開發(fā)人員,曾經(jīng)在對網(wǎng)站進(jìn)行靜態(tài)化的時候遇到過許多問題。首先從網(wǎng)站程序的復(fù)雜度進(jìn)行分析,一個具有靜態(tài)化功能的網(wǎng)站必是非常復(fù)雜的,因為靜態(tài)化一個網(wǎng)站要考慮的技術(shù)性問題十分多(這里不包括偽靜態(tài))。
進(jìn)行靜態(tài)操作的時候,不僅要考慮到單個頁面的操作,還需要注意整體與單個之間的復(fù)雜關(guān)聯(lián),有種牽一發(fā)而動全身的壓迫。就拿最常見的上一頁和下一頁來說,如果當(dāng)前網(wǎng)站的某一篇文章刪除了,那么這篇文章對應(yīng)的上下頁就必須要重新進(jìn)行靜態(tài)化,否則鏈接的地址將會出現(xiàn)404。簡單的頁面尚且如此,更別說那些大型的網(wǎng)站了,每個頁面中超級復(fù)雜的關(guān)系就夠喝一壺了。
再從進(jìn)行靜態(tài)操作的時機(jī)來看,一般開發(fā)人員要實現(xiàn)相應(yīng)的觸發(fā)開關(guān)功能,用于判斷是否要進(jìn)行靜態(tài)化操作,以及要進(jìn)行什么樣的靜態(tài)化操作。是局部還是整體?靜態(tài)頁面文件是否存在?靜態(tài)頁面的數(shù)據(jù)是否過期?這些問題都說明了生成的時機(jī)是很重要的,否則會造成用戶看到的數(shù)據(jù)不是最新的內(nèi)容。
此外靜態(tài)化操作對服務(wù)器性能的影響也是煎熬開發(fā)人員的難題之一,我們不可能頻繁的進(jìn)行靜態(tài)化操作,對磁盤的IO操作以及大量的邏輯處理都會消耗大量CPU的資源,服務(wù)器性能隨之受到影響。在進(jìn)行批量操作時,一定要考慮使用線程進(jìn)行處理,千萬不能阻塞網(wǎng)站的整體進(jìn)程。
老實話,對于網(wǎng)站開發(fā)者來說,靜態(tài)功能也許是一個頭疼的問題,開發(fā)難度加大了,同時維護(hù)難度和管理難度也通用加大,在網(wǎng)站備份的時候還得考慮是否要備份這些靜態(tài)文件!特別是大型的網(wǎng)站,靜態(tài)化往往需要進(jìn)行復(fù)雜的架構(gòu)設(shè)計!
總結(jié)ASP.NET靜態(tài)化的利弊
是否是需要靜態(tài)化,還是得看整體的需求,俗話說只有最適合自己的才是最好的(有點廢話的趕腳 ^^)。
一般來說一些不經(jīng)常更新內(nèi)容的頁面就可以考慮進(jìn)行靜態(tài)操作,比如新聞頁面,小說的章節(jié)頁面,畢竟這些內(nèi)容一旦發(fā)布了,就很少會進(jìn)行改動。而且可以使用CDN技術(shù)進(jìn)行加速。
優(yōu)點:
1、利于SEO,體現(xiàn)在友好的URL路徑和快速的訪問速度,asp.net mvc網(wǎng)站可以忽略URL的影響。
2、一個字:就是快!!!靜態(tài)頁面訪問速度快,用戶體驗好,結(jié)合CDN技術(shù)、緩存和相應(yīng)的架構(gòu),提速效果更加明顯!
3、相比動態(tài)頁面一定程度上減輕服務(wù)器壓力
缺點:
1、可能需要使用大量硬盤空間
2、增加網(wǎng)站開發(fā)復(fù)雜度,不利于程序維護(hù)和管理。
3、不太靈活,靜態(tài)化操作是需要觸發(fā)開關(guān)的,不可能頻繁的進(jìn)行操作,可能導(dǎo)致數(shù)據(jù)更新慢,需要進(jìn)行相應(yīng)的設(shè)計。