2013-10-22 65 views
1

業務的Web應用程序,我需要爲我們的公司將使用摺疊式菜單(如jQuery UI的手風琴)。阿賈克斯負載:意見要求

我想用jQuery的鏈接點擊事件手風琴菜單,並與阿賈克斯.load速記動態加載的內容。 目前我正在處理一個內部對話,其中有人提到Ajax比普通的瀏覽器請求慢。

現在我的問題是:這是真的,考慮到:

  • 手風琴狀內容的加載時間應該快(/ CSS /手風琴/頭開頭只加載一次的所有腳本);
  • Ajax請求不影響任何服務器操作的性能;

如果我真的可以使用瀏覽器請求 - 它真的會更快嗎?

似乎非常不直觀,使用手風琴使用它作爲只是顯示在每個頁面刷新靜態元素。

我以前建造的原型,使用Ajax負荷加載HTML和JavaScript的div容器,它加載速度作爲一個正常的瀏覽器將請求。

+0

每個AJAX負載請求通常會比一整頁的請求,這通常也意味着更快有較少的從服務器每次下載(只要你真的只是獲取你所需要的內容,而不是整個頁面更小並在'load()'中抓取它的一部分。還有*感知的*表現要考慮;在單頁面/ AJAX應用程序中,容器頁面將首先渲染,然後是動態內容。用戶越早看到他們越快樂。 –

+0

這是我的疑問:「不是整個頁面,並搶得負載()內的某些部分」 如果我取了可以使用插件和jQuery腳本PHP頁面,會發生什麼?在我製造的原型中,我沒有注意到任何性能損失。 由於HTML和腳本加載到DOM,他們也每輛集裝箱裝載有新的內容(所以DOM不會在這個意義上生長)及時更換。 – Trace

+0

對於初學者來說,「一個瀏覽器請求」== GET,這是'.load()'在幕後用'new XMLHttpRequest()'做的事情。不同之處在於,您的ajax請求可以與頁面的「主流」並行運行,而不是單個同步負載。我沒有看到它的任何缺點。就動態加載的頁面上的腳本而言:即使將它們添加到腳本標記中,它們仍將被緩存(作爲所提取的HTML頁面的一部分),假設您不設置「cache:false」明確。 – Johan

回答

1

作爲一個答案,一個Ajax請求確實比一個頁面經常要求小。

您有幾種選擇,你可以 - 預取數據,其存儲在一個數組或對象,並加載它的onclick滑塊,

或簡單地使用AJAX,不過,這將創造另一個請求其,如果你有很多用戶可能會拖慢你的網站。

預加載數據到HTML在隱藏層,或經由直接js.php到一個數組/對象將是取決於內容的大小的最有效方式。

知道,AJAX加載的內容不被搜索引擎收錄,將是搜索引擎不那麼友好。

+0

謝謝,這是沒有必要的,因爲我們正在處理業務應用程序。我不確定是否預加載數據是一個好主意,因爲它會通過我想要動態加載的多個頁面來增加DOM。您是否認爲在許多用戶的情況下,Ajax負載會在常規瀏覽器請求中失去性能? – Trace

+0

是的,因爲你的服務器將不得不處理更多的請求,因此預加載。我提到的其中一個選項是將其注入到一個js.php文件中,該文件將包含在動態頁面中,當呈現時這將是有效的JS(PHP可以呈現任何類似HTML/CSS/JS的內容),這將具有不會堵塞DOM並仍然提供快速檢索數據的方式。 – SidOfc

+1

@KimGysen一個選項是創建一個ajax請求 - >將數據保存在'$ .cache'中,並在用戶單擊菜單時獲取所需的任何內容。這會將每個用戶的請求數增加到2,但會使頁面加載速度更快。 – Johan