2016-01-25 25 views
1

我有一個Web應用程序運行谷歌應用程序腳本,當用戶搜索一些數據時,我在服務器上生成模板HTML並將其返回給填充表的客戶端(每個錶行是一個手風琴,擴展下來更詳細的信息爲每個項目)。如何更有效地生成大量的HTML

問題是,如果用戶執行返回所有數據的搜索,則HTML生成需要大約20秒。它將〜3.5MB的HTML返回給客戶端。

我試圖利用JQuery模板,但每行可能包含不同的數據,並且該數據的格式可能會定期更改,我有更多的模板比我的網頁。當15行代碼(如「Scriplet」)在服務器上可以創建相同的HTML時,管理大量JQuery模板並不是真正可維護的。

所以我的問題是,如何將大塊數據提供給客戶端並生成HTML而不依賴於每種數據格式的模板?

如果這些描述不夠詳細,請告訴我。

+1

除了時間之外,如果需要這麼長時間的話,這是一個非常沉重的服務器負載。使用限制和分頁結果。發送json而不是html – charlietfl

+0

知道過程的每個部分需要多長時間會很有趣。你的應用程序等待多久返回?從數據恢復到視圖呈現的時間有多長?瀏覽器中可能有開發人員工具可以將其分解。 –

+0

嘿桑迪。我決定測試一下,現在你已經提到過了,平均需要54.8ms的服務器來生成每一行,並且它是相應的HTML。實際上相當長一段時間。我正在研究製作一個「通用」JQuery模板來從客戶端生成html。 –

回答

1

的問題是,HTML生成需要〜20秒

生成在客戶端的HTML。服務器只返回數據。

如果用戶執行返回所有數據的搜索。它將〜3.5MB的HTML返回給客戶端。

不要一次返回所有數據,只返回最小的信息。比如有多少頁面,類別等。 當用戶選擇一個頁面時,客戶端發送一個請求以從服務器獲取詳細信息。

+0

謝謝你,現在最難的部分是如何讓客戶端生成HTML。在服務器端,我可以將一個for循環放入HTML中,並根據數組的大小和內容動態生成HTML。我不認爲我可以用JQuery模板做到這一點。 –

+0

@ douglasg14b確定你可以。現在,單頁應用程序很流行,任何大小的完整網站的所有渲染都完全在一個頁面中完成。一個視圖可能是大桌子,另一個視圖中的圖表...全部沒有頁面重新加載 – charlietfl

+0

我最終跳入angularJS,效果很好。 –

相關問題