2012-04-27 63 views
0

我正在加載一個大小爲50 kb的頁面,它內部有一個web服務調用。我在這裏面臨的問題是,在初始加載期間,需要花費相當多的時間,並且在頁面呈現之前存在輕微的掛起。jQuery加載函數掛起問題

如何克服這一點?否則,是否有任何可用於加載函數的替代方法可以更好地執行?

+0

當你說加載時,你是否在頁面調用期間使用jQuery.load函數來通過AJAX加載這個webservice調用?或者你是否說你在頁面的初始渲染過程中調用了web服務? – 2012-04-27 16:15:59

+0

第二個。 – 2012-04-30 18:13:23

回答

3

如果我理解正確,頁面的加載取決於這個Web服務,這實際上是你的瓶頸。

你基本上有兩種選擇。

選項1 - 緩存

如果你打電話不具備Web服務是100%及時瞭解每一個負載,你可能緩存響應。我現在不知道你是怎麼做的,但如果它是第三方服務,你可以寫一個簡短的代理程序,每分鐘調用一次,並將響應保存到磁盤,然後你的頁面將會把它讀取出來從。另外,如果你不想編寫自己的代理服務,你可以使用像Squid這樣的緩存內部網絡連接的東西,所以如果你的應用程序通過Squid查詢某些東西,它會緩存對該服務器的響應。 t時間段。

選擇2 - AJAX

如果它的東西,不能被緩存(即是與網頁上的會員信息),你可以看看使用jQuery異步加載頁面。

而不是加載web服務預渲染的細節,你可以使用$ .ajax();函數加載它,然後在JavaScript完全加載後用JavaScript更新頁面。

如果它是第三方在不同的域上,您必須在自己的系統上構建代理,以便您可以調用您網站的AJAX URL,然後調用Web服務。


出了他們兩個,我會認真考慮,如果你能去的選項1。緩存響應會大大加快應用程序的速度,並且如果它是高流量應用程序,將減輕對Web服務的壓力。

選項2仍然不錯,許多亞馬遜這樣的大品牌都在應對這些問題。