Web性能之戰打響 開發者面臨復雜度挑戰
原創【51CTO.com快譯自7月7日外電頭條】Firefox 3.5已經到來,51CTO.com之前曾報道FireFox 3.5將比3.0版快兩倍,據Mozilla基金會說,它的主要優點是速度飛快。新版本的Firefox開源瀏覽器第一次全面使用了TraceMonkey引擎為JavaScript加速,而這以前僅在3.1的測試版中出現過。
這一行動是Mozilla在近來的瀏覽器大戰中使出的最新殺手锏,這同時也表明了瀏覽器廠商們已經開始轉而注重Web應用的性能改善。51CTO.com之前曾報道過Google專家的觀點,JavaScript是網站性能的致命克星;根據Google研究小組的報告,互聯網上,速度最重要!Google已經在去年給Chrome安裝了高性能的JavaScript引擎,而隨后Opera和蘋果也相繼宣布為各自的瀏覽器推出新的JavaScript引擎,微軟也在費力的對IE8進行著優化。
但瀏覽器的單方面表現并不能代表一切。上周流行天王邁克爾杰克遜的突然死訊讓幾乎所有的主要新聞網站的訪客們感受到了延遲,但問題既不是出在瀏覽器,也不是出在超負荷的服務器身上。根據網絡監控機構Keynote Systems的分析,在許多情況下,網站速度減慢的主要原因是廣告網絡和第三方內容提供商的問題,他們自身的網絡無法處理突然增加的流量。
這一事件正巧顯示了Web開發者們越來越關注的一個問題。如今的Web應用通常會整合來自多個來源的內容、數據存儲和服務,而且對云計算越來越大的興趣只會加速這種趨勢。考慮到這些交錯在一起的因素,Web開發者可以真的保證快速敏感的用戶體驗嗎?或者說隨著Web應用的元素越來越錯綜復雜,我們會不會逐漸對應用的性能變得不在意,把問題扔給互聯網來解決?
Web開發者受到的云困擾
制作網頁很容易,但建立高效的Web應用卻難得多。對開發者來說,開發桌面端軟件是更好掌控的工作。你可以通過消滅內存泄漏和提高磁盤訪問效率來優化它的性能。但這一切都不適用于Web應用,這時開發者必須依靠瀏覽器來處理本地資源的效率。
在Web應用中,開發者面臨著變幻莫測的網絡情況。如果用戶訪問的網頁需要從第三方供應商那里讀取圖像,那么總體的用戶體驗就要取決于用戶的瀏覽器、用戶的數據連接方式、Web服務器的輸出管道、Web應用軟件、網絡服務器和圖片提供商之間的管道,還有圖像提供商的服務器軟件等等。一位Web應用開發者通常只負責優化這其中的一個方面。
這是因為在這樣的基于云計算的分布式模式中,他們認為理所當然會有別的開發者去考慮該他負責的問題。但是你怎么能肯定第三方圖像供應商對安全性足夠認真?怎么能確保他們的系統設置了足夠的冗余,有沒有定期備份,這樣才不會在出現意外時無計可施?
更為迫切的問題是外部服務是以什么方式與網頁進行整合。它們大多依賴于外部JavaScript或iframe,或兩者兼有。這兩種技術都會擁堵網頁的onLoad事件,這是造成用戶瀏覽體驗緩慢的一個主要因素。因為這個瓶頸是在JavaScript代碼執行前發生的,所以瀏覽器JavaScript引擎速度的快慢解決不了太大問題。如果網絡本身的負擔就已經過重,那么就不僅是第三方內容的問題了,你的整個應用都會受到影響。
更多關于云開發的報道請參考51CTO.com的策劃專題《SaaS時代的軟件開發》和之前的報道《云服務顛覆開發傳統觀念》。
復雜性的提高導致Web應用風險增加
Web社區正在努力尋找減輕這些問題的方法。例如,新一代的瀏覽器會在等待JavaScript執行的同時裝載其他內容的元素,開發者們找出各種聰明的技巧來消除腳本瓶頸問題。但是,這些單方面的優化無法從根本上解決問題。
“考慮一下這個問題,”Google傳播者Steve Souter說,他也是“高性能網站”和“更快的網站”兩本書的作者,“我們有時會把一大塊的HTML,可能還包括CSS、JavaScript和Flash,一起塞到另一個網頁里……因此這造成網頁性能大幅度降低也并不奇怪,在某些情況下甚至還會導致整個網站癱瘓。”
部分原因在于這樣的整合內容往往缺乏協調的管理和監督。“將第三方內容整合到網頁中本該是一個復雜的項目,在同一家公司里需要兩個團隊協作完成,”Souter說。“比如廣告,兩個團隊需要負責兩個不同的公司。而事實上,設計廣告的開發者可能永遠不會與主網站的建設團隊進行溝通。”
但是這并不是說每個人都要去分擔網站變慢的責任。請放心,在網站變慢時,所有的訪問者都會責怪網站自身,而沒有人會去找外部內容提供商的麻煩。
網絡一步步走向成熟的應用平臺
就目前而言,Web應用的開發者和架構師們應該多去了解一下那些潛在的瓶頸問題,還有那些分布式以及類似云計算的Web應用的自身缺陷。多關注一些相關的書籍和消息,比如51CTO.com上月曾報道的Google面向Web開發者推出了一個網站,專門研究如何提升Web性能,怎樣提升JavaScript的性能;并向Web開發者發布了網頁加速工具Page Speed。
然而從長遠來看,Web服務提供者和消費者們需要共同努力,為今后基于云的互聯網應用制定出標準的做法。互動廣告局(The Interactive Advertising Bureau)為了縮短載入時間已經成立了一個工作組,為廣告提供商們提供最佳實踐。這是一個好的開始,但顯然還有很多工作要做。
Web社區的工作也至關重要,需要提高不僅僅是瀏覽器性能,還有Web開發團隊跨機構合作的能力。隨著網站和服務變得更加互聯,我們必須拿出新的辦法來交流與合作,使分布式的跨網站開發工作可以進行的更加流暢。只有這樣,基于云的新一代網絡才會蓬勃發展,成長為可靠的、一流的應用開發平臺。
【推薦閱讀】
- Google專家:JavaScript是網站性能的致命克星
- Google面向開發者推出網頁加速工具Page Speed
- 緩存設計詳解:低成本的高性能Web應用解決方案
- 高性能Web應用的六個好習慣
- 視頻專題:大型網站架構技術專家談
【51CTO.com譯稿,非經授權請勿轉載。合作站點轉載請注明原文譯者和出處為51CTO.com,且不得修改原文內容。】
原文:For Web apps, performance remains an uphill battle 作者:Neil McAllister