ExtJs性能優(yōu)化
在使用ExtJs過程中,性能一直是一個(gè)比較頭疼的問題,從用戶的角度來看,就一個(gè)字:慢。從技術(shù)的角度來說,這個(gè)“慢”字可以分為兩種,加載“慢”和渲染“慢”。想分辨這兩種情況很容易:如果居于網(wǎng)不慢而互聯(lián)網(wǎng)上慢,說明是加載慢;如果Chrome不慢而IE慢,就是渲染慢。還有另一種情況:越用越慢,這個(gè)“慢”通常是內(nèi)存泄露造成的。
針對以下這三種情況討論一下解決方案:
1,加載慢
1.1 減少要加載的東西
不要?jiǎng)硬粍?dòng)就ext-all.js,extjs是可以定制的,如果你用不到tree,就不要包含這個(gè)組件了。ExtJs的官網(wǎng)上有詳細(xì)的定制方法和工具。
1.2 給出合適的用戶提示
把Js后置,然后前面做一個(gè)加載的提示。如果像Gmail那樣給出進(jìn)度條,或者像很多網(wǎng)游那樣來點(diǎn)圖片或者Tips啥的就更好了,說不定用戶還會覺得怎么加載這么快,我還沒看清楚呢,呵呵。
1.3 用的時(shí)候再加載
動(dòng)態(tài)加載,參考使用ExtJs開發(fā)MIS系統(tǒng)(2):Js的動(dòng)態(tài)加載。
1.4 只加載一次
別用iframe了,如果你的靜態(tài)內(nèi)容過期做的不好,瀏覽器會經(jīng)常再不厭其煩的從服務(wù)器下載同樣的東西。
1.5 對你的Js添加過期標(biāo)記
ext-base.js、ext-all.js都可以設(shè)置很長的過期時(shí)間,甚至永不過期(如果你不換extjs的版本)。這點(diǎn)對所有靜態(tài)內(nèi)容都很有用,如何設(shè)置過期標(biāo)記請垂詢Google。
2,渲染慢
2.1 少加載少解析、晚加載晚解析
1.1,1.3,1.4都對改善渲染慢的情況有效——加載的少了自然渲染的快了。
2.2 別用iframe
iframe不僅僅可能會使瀏覽器加載兩遍,還一定會使瀏覽器解析兩遍,放棄它吧,真的。
2.3 精心設(shè)計(jì)你的Js代碼
例如緩存getElementByID()的結(jié)果、編譯查詢表達(dá)式之類的東西,這個(gè)純看Js功力。
2.4 可能的話,讓用戶換個(gè)瀏覽器吧
Chrome比IE的Js渲染快是數(shù)量級上的差異!構(gòu)造一個(gè)40列,50行的復(fù)雜GridPanel試試,你就會深有體會了……對于企業(yè)內(nèi)部的MIS系統(tǒng),換瀏覽器還是具有可能性的。
3,內(nèi)存泄露
對于Js這樣具有垃圾回收特性的語言來說,如果出現(xiàn)了內(nèi)存泄露,那么就只有一種可能:引擎有問題!不幸的是,這個(gè)問題我們沒有辦法,但是有很多技巧可以避開……還是問Google吧:“JavaScript 內(nèi)存泄露”,這個(gè)問題夠再寫一個(gè)系列的了。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。