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