批一批淘寶首頁的源代碼

[url=http://ued.taobao.com/blog/]淘寶UED[/url]團隊經常寫一些很棒的技術文章,令我印象深刻的有一句話,大意如下:
[quote]雖然這種方法比較hack,但是可以減少2個HTML標籤,考慮到我們是做超大流量的互聯網應用,這樣可以節省大量的帶寬[/quote]

可是打開淘寶首頁,查看源代碼,從大流量互聯網應用來看,有很多地方可以批一批:
1. 內嵌大量的CSS/JS代碼(CSS 25K/JS 18K左右),浪費大量的帶寬,除了一些經常會變動的代碼,完全可以將大部分內容移到外部css/js文件,客戶端可以享受到文件緩存帶來的好處,減少帶寬。

2. 使用了<base target="_blank" />,默認所有的鏈接都在新窗口打開,可是還有很多鏈接指定了target="_blank",浪費帶寬。

3. 源代碼裏面使用了大量的HTML註釋,如果是自動生成的還情有可原,但是這些"<!--搜索框結束-->", "<!--廣告輪播-->" 完全是屬於給開發人員看的,甚至連"<!--海外用戶特殊對待,yuyin,2009-03-05-->"這種屬於版本控制的註釋都丟上來了,還是浪費帶寬。這些完全可在發表到生產環境時通過腳本自動去除,

4. 一些細節,比如給很多元素加了ID,而這個ID既不用在css selector,又沒有JS對它操作。 再比如在頁面最下面用一個白色字體顯示服務器id,而這個東西完全可以寫成註釋的方式,以節省html標籤和相關的CSS代碼。

淘寶的朋友,我知道你們在努力營造一個氛圍:淘寶很重視技術,重視細節。可是這些東西怎麼也不象是一個重視技術細節的團隊搞出來的吧?


======答覆分割線======
[quote="醒來"]
作爲淘寶UED團隊中的一員,我簡單的說明一下:

1. 首頁是淘寶的入口,PV非常高,服務器壓力也大。“快”是第一位的用戶體驗。內嵌css和js就是爲了減少對服務器的http請求數。原因有三: 1)根據研究,會有20%的用戶是無緩存的情況下訪問淘寶網,此時無法利用客戶端緩存。2)減少http連接數可以減少服務器壓力,同時減少無謂的http頭信息的上傳。3) gzip壓縮會大量減少下載量。所以經過對比和權衡,我們選擇內嵌css/js。

2. 首頁是動態生成,有很多CMS維護的內容。很多時候超出我們的控制。我們正努力不斷改善,增強控制能力。

3. 無謂的註釋確實是應該刪除的,不過註釋也會減少跨團隊之間的磨合成本。這也是一個權衡的過程。我們也在不斷改善註釋規範。

4. 試試Ctrl+A
[/quote]
1. 首頁用內嵌css和js確實可以[url=http://developer.yahoo.com/performance/rules.html#num_http]減少http請求[/url],但是這會[url=http://developer.yahoo.com/performance/rules.html#external]增加頁面大小[/url],如何取捨是需要用數據支持的:
內嵌的css/js在gzip之後也有8.6K大小,用外聯的話多2個http header,因爲走CDN服務器,所以沒有cookie等頭信息,通常1個js+1個css請求的頭信息大小在0.5K左右,8.6K * 80% v.s 0.5K * 100%,對比和權衡是如何會選擇後者呢?
至於說到"快",淘寶首頁,已經有9個js, 3個css和100來個iframe/圖片請求,用內嵌的方式減少2個http請求,有意義嗎?
Yahoo在首頁也採用內嵌js/css,但是它只有3個js, 0個css,和20多個圖片請求,這種對比下,用內嵌對於用戶體驗纔算得上改善。

3. 我不是說不寫註釋,而是指發佈到服務器的時候用腳本清理一下,一個正則表達式就可以替換掉了。

4. Ctrl+A能夠讓用戶看到最下面的服務器編號,可是這有什麼用途?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章