概述. 在美國(guó)第44任總統(tǒng)就職日這個(gè)歷史性的日子,讓我們來分析一下新的白宮網(wǎng)站(whitehouse.gov)代碼結(jié)構(gòu)吧。網(wǎng)站基于ASP.NET構(gòu)建。
[singlepic=18466]
whitehouse.gov網(wǎng)站使用IIS 6.0. 網(wǎng)站的HTTP頭信息中包含鍵值對(duì)”Server: Microsoft-IIS/6.0″。網(wǎng)站并沒有使用微軟公司最新版本服務(wù)器軟件,IIS/7。
whitehouse.gov網(wǎng)站使用ASP.NET 2.0. HTTP頭中標(biāo)識(shí)自己的程序版本為”X-Aspnet-Version: 2.0.50727″。這個(gè)信息可以去掉,這樣可以為每次服務(wù)器響應(yīng)節(jié)省30字節(jié)帶寬。
whitehouse.gov網(wǎng)站使用JQuery 1.2.6. JQuery JavaScript庫(kù),使用了其最小集版本,位于/includes/文件夾下。很多開發(fā)者使用Google服務(wù)器托管的JQuery以便提升性能和減小下載腳本的延遲時(shí)間。這樣做可以提升站點(diǎn)性能。
<script type="text/javascript" src="/includes/eop/jquery-1.2.6.min.js"></script>
whitehouse.gov網(wǎng)站使用GZIP壓縮. 所有網(wǎng)站文本都采用了GZIP壓縮,顯著地提升了性能。
未壓縮大小: 48218 bytes壓縮后大小: 8370 bytes節(jié)省帶寬: ~80%
whitehouse.gov網(wǎng)站使用Vary: Accept-Encoding. 在HTTP頭中添加Vary: Accept-Encoding是一種強(qiáng)制代理不向不能解碼GZIP的客戶端發(fā)送GZIP內(nèi)容的手段。
whitehouse.gov網(wǎng)站使用Cache-Control: private和max-age. 它使用了”max-age=85895“,大約1 天。這樣,html頁面應(yīng)該只會(huì)在你的計(jì)算機(jī)中緩存1天。
whitehouse.gov網(wǎng)站使用Web Trends Live追蹤技術(shù). WebTrends聲稱是“領(lǐng)先的網(wǎng)頁分析和客戶為中心智能市場(chǎng)營(yíng)銷解決方案(leading provider of web analytics and consumer-centric marketing intelligence solutions)。”
whitehouse.gov網(wǎng)站使用meta keywords標(biāo)記. 這樣做很奇怪,因?yàn)镮nternet上的訪問者很少有不知道這里是干什么的。meta標(biāo)記如下:
<meta name="keywords" content="President, Barack Obama, White House,United States of America, 44th President, White House history, President Obama,Barck, Barek, Barak, Barrack, Barrak, Obma, Barack" />
這樣并不會(huì)對(duì)提升whitehouse.gov網(wǎng)站的Google PageRank有多少貢獻(xiàn)。我認(rèn)為搜索Barack Obama的用戶無論如何都會(huì)被導(dǎo)引到這個(gè)網(wǎng)站的。
whitehouse.gov網(wǎng)站使用ViewState. 這是一個(gè)隱藏表單,允許網(wǎng)站在瀏覽器中存儲(chǔ)服務(wù)器端數(shù)據(jù)。ASP.NET自動(dòng)解析發(fā)送到瀏覽器的ViewState信息。瀏覽器不應(yīng)該解析這個(gè)信息。
whitehouse.gov網(wǎng)站使用WebResource.axd. 這是ASP.NET生成的一個(gè)腳本文件。通常它們不能被有效地緩存,并且我發(fā)現(xiàn)它們的確降低了性能。
whitehouse.gov網(wǎng)站包含了很多空白字符. 如果你的瀏覽器啟用了GZIP,這并不會(huì)帶來性能影響,但是如果去掉這些空白字符,網(wǎng)站代碼可以減小20%以上。
whitehouse.gov網(wǎng)站包含注釋標(biāo)簽. 網(wǎng)站使用了很多HTML注釋分割頁面代碼區(qū)域。如果能將這些注釋寫在服務(wù)器端代碼中,可以在編譯頁面時(shí)不將注釋編譯在最終頁面代碼中,從而提升效率。
<!-- Start --><!-- End -->
whitehouse.gov網(wǎng)站包含很長(zhǎng)很長(zhǎng)的ASP.NET ID. 頁面中的很多元素包含非常長(zhǎng)的ID,是浪費(fèi)帶寬的主要因素之一。這些長(zhǎng)ID可以很容易地在服務(wù)器端替換成短ID。
<a id="ctl09_rptNavigation_ctl00_rptNavigationItems_ctl01_hlSubNav"...
whitehouse.gov網(wǎng)站使用的GIF多于PNG. 網(wǎng)站使用的GIF圖片多于PNG圖片。PNG格式的圖片可以更加優(yōu)化,從而節(jié)省帶寬和消耗。網(wǎng)站中使用了兩個(gè)GIF動(dòng)畫。
whitehouse.gov網(wǎng)站使用了5個(gè)層疊式樣式表(stylesheets)文件和12個(gè)JavaScripts腳本文件. 如果能把這兩類文件合并成兩個(gè)文件,網(wǎng)站可以更快而且更輕量級(jí)。當(dāng)然這是針對(duì)訪問首頁的訪客而言。奇怪的是,用于修飾管理頁面的層疊式樣式表也被加載進(jìn)了普通用戶的訪問中:
/* admin styles *//* cms */.adminNavigation {width:996px; position:relative; z-index:100;}
whitehouse.gov網(wǎng)站使用了高度壓縮的JPG. 如果你距離屏幕較遠(yuǎn),或者視力不是那么好,這些圖片看起來還行。開發(fā)者對(duì)JPG圖片采用了高度壓縮。這里顯示的圖片被放大并且輕微地二次壓縮過。
[singlepic=18465]
whitehouse.gov網(wǎng)站使用了image sprites技術(shù). 這項(xiàng)技術(shù)可以大幅提升站點(diǎn)性能,因?yàn)樗鼘⑷舾蓚€(gè)小圖片合并成了一張圖片。這是一項(xiàng)先進(jìn)的技術(shù)。采用了image sprites技術(shù)的圖片是”nav-sprite.png“.
whitehouse.gov網(wǎng)站使用了Packer. Dean Edward的Packer是一個(gè)用于壓縮JavaScript文件的工具。JavaScript腳本將在被下載時(shí)自動(dòng)解壓縮,這是一項(xiàng)很差的優(yōu)化手段, 因?yàn)橥鵍avaScript經(jīng)過GZIP壓縮之后,比經(jīng)過YUI壓縮器(YUI Compressor)壓縮之后更小。[參見 jquery-plugins.js]
eval(function(p,a,c,k,e,d)...
使用Packer的決定不像是一個(gè)深入了解GZIP或者文本壓縮技術(shù)的人做出的。壓縮之前的文件確實(shí)變小了,然而這導(dǎo)致了最終需要被下載的文件變大了。[http://dean.edwards.name/packer/]
whitehouse.gov大小821 KB, 在我的線路上(cable modem)使用了1.58秒完成加載。這個(gè)數(shù)字大約是新的、基于圖片的網(wǎng)站的平均值。
加載時(shí)間: 1.58 seconds總計(jì)大小: 821 KB
whitehouse.gov網(wǎng)站包含了幾個(gè)隱藏鏈接. 在源文件里,大部分是在JavaScript中,大約嵌入了6個(gè)鏈接。這樣,這些幸運(yùn)的人就得到了來自白宮網(wǎng)站的外鏈(譯者注:PageRank 9?。??。?/p>
www.youngpup.nethttp://sorgalla.com/jcarousel/http://billwscott.com/carousel/http://www.codylindley.com
whitehouse.gov網(wǎng)站使用了一個(gè)不透明的favicon.ico. 為了站點(diǎn)在加入書簽后具有更好的視覺效果(譯者注:對(duì)很多非IE瀏覽器而言,無論是否加入書簽,favicon文件都會(huì)顯示在標(biāo)簽欄),一個(gè)具有透明背景的favicon是更好的選擇。這項(xiàng)改變對(duì)于一個(gè)知道怎么修改的人來說可以在10分鐘內(nèi)完成。
結(jié)論是,whitehouse.gov網(wǎng)站還是很吸引人的。雖然它并不算是一個(gè)非常有效率的站點(diǎn),并且過多地注意了視覺效果。一個(gè)網(wǎng)站優(yōu)化專家可以在幾天之內(nèi)將它的加載速度提升到現(xiàn)在的兩倍。
最后,記住本屆政府和奧巴馬總統(tǒng)并不是寫這些代碼的人。