他在一個非常緩慢的GWT應用優化性能,提示爲移動瀏覽器
也許可以一些你分享他們的GWT移動開發的經驗?
我們正在開發一個漂亮的互動式網站,其中有許多可點擊的面板/按鈕,並且遇到巨大的瀏覽器遲緩問題。這是一個虛擬的不走,導航到下一頁有時需要一分鐘。
它可能是一個架構弱點:每個元素都是一個可能包含子視圖的視圖。並且每個視圖都由來自服務器的DTO支持。也許這樣的深層對象圖太多了,但我們正在努力專注於優化視圖渲染的效率,因爲拆分組件中的所有東西的想法對我們來說是非常寶貴的:)以下是我關心的一些問題,但有可能更多。
由於從谷歌I/O 2010大會視頻提示,我試圖用UiBinder的構建部件。但是這並沒有帶來很大的速度提升。我們使用很多面板 - HTMLTable,HTMLPanel,VerticalPanel, - 因爲承載其他視圖的每個視圖都應該以某種方式附加它們。可以用新的CellList替換它們是否有一些好處,或者是一個簡單的HorizontalPanel已經足夠輕量級了嗎?
頁面上可點擊小部件丟失。雖然一般建議是削減小部件,但我們確實需要它們來處理onMouseDown事件。什麼是最少的CPU密集型可點擊組件 - 帶有MouseDown處理程序的VerticalPanel,一個Button等?
一旦用戶點擊一個按鈕,就會發出PRC請求。我注意到,如果PRC調用停止了一段時間,那麼點擊按鈕的樣式呈現比單擊按鈕之後立即進行RPC調用要快得多。是否有一種模式指示如何觸發不會干擾樣式呈現的RPC調用。
性能分析報告(Firebug和Speedtracer)表明setInnerHTML()和add()調用了大部分負載。當視圖附加到他們的父母時應該調用add(),我不知道爲什麼setInnerHTML需要這麼長時間(根據視頻演示,他們應該非常快速)。有沒有合理的方法來優化add()調用?我真的想不出有辦法做到這一點。
我欣賞每一個建議。謝謝。
是的,我知道新的基於單元格的小部件,但仍然沒有得到他們有用的情況。我將一組對象附加到HTMLPanels/HTMLTables。這些小部件是否說CellList比HTMLPanel更適合佈局? – d56 2010-10-17 11:59:45
如果對象可以用類似於http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellTable的方式表示,那麼基於單元格的小部件可能更適合HTMLTables。我認爲基於Cell的小部件是在顯示大量數據的基礎上構建的,所以他們可能會更有效地處理添加數據,然後再使用標準小部件。 – 2010-10-17 18:31:23