2015-08-26 44 views
0

我過去幾週一直在旅行,並發現Ajax用於構建網站的方法存在問題。我瞭解,只請求所需部分的網頁對於服務器來說是最有效的方法,但在信號進出或受到提供商限制的環境中工作時,大多數在此模型上運行的網站變得完全沒有響應,互動成幾分鐘等待。如何修復基於AJAX的網站的性能網絡性能?

在帶寬有限的情況下,最佳性能通常來自網站,它們的所有內容都位於單個頁面上,這些頁面是在發送之前爲用戶構建的。我知道這不是寧靜的方式,但我想知道這個解決方案是否有一箇中間立場。

有沒有辦法批量許多不同的AJAX調用,其中用戶只會發送一個大的調用到服務器,然後服務器會編譯列出的所有東西,然後在一個堆中返回它?還是這種東西還沒有形成一個標準,而定製服務器架構最終還是需要做的?

+0

一種選擇是提供混合解決方案。我的意思是,無論你要求什麼頁面,初始頁面加載完全呈現在服務器端。然後,你在頁面上做的任何事情都需要通過ajax請求來改變UI。如果這些請求中的任何一個失敗,頁面刷新將再次導致服務器呈現整個頁面。除非你的服務器端語言與你的客戶端語言相同,否則你會有一些重複的邏輯,這當然說起來容易做起來難。 –

回答

1

在帶寬非常有限的情況下,您嘗試做的所有事情都會很痛苦。

是的,在這種情況下,通過多次請求(這是非常典型的Ajax單頁應用程序)頻繁地打開到服務器的連接,會比打開到服務器的單個連接的經歷更糟糕。

但是,您需要問問自己,您是否希望自己的Web應用程序能夠滿足快速連接的客戶或迎合連接速度慢的客戶並據此設計您的Web應用程序。如果您只是爲了適應慢速客戶端,那麼對於那些連接速度更快的用戶而言,用戶體驗會受到影響,反之亦然。

您也可以決定通過爲每個版本,以滿足這兩種對象,但它是一個很多額外的工作

我不知道你的web應用程序做什麼。但如果僅僅是「查看」數據,那麼也許你可以從一開始就加載所有數據。但是,如果您的Web應用程序包含大量數據操作功能,那麼您別無選擇,只需使用Ajax並獲得更好的Internet連接。

如果你想一批您的要求將您的網絡應用程序需要這樣設計的,這將允許你點擊「保存」按鈕,將收集所有之前你需要在客戶端做的一切您所做的更改並在1個請求中發送。

您應該始終根據客戶的情況構建您的Web應用程序。如果您經常旅行,那麼這可能會嚴重影響您的問題,並且永遠不會成爲您客戶的問題。在這種情況下,堅持ajax並獲得更好的互聯網連接。

如果客戶是你自己,那麼你可以做任何你想緩解你的痛苦,包括加載一切從一開始。

不幸的是,沒有神奇的解決方案。

希望它有幫助!

+0

保存更改功能可能會有所幫助。 :)我並沒有特別要求我的情況,(個人而言,我會光禿禿的骨頭,把所有東西都放在一個ssh隧道中)我更多地問,因爲我在網上遇到了大量的3G網絡滯後,但仍然存在世界上一些運行在2g上的部分,我很好奇,是否有解決這個限制的軟件解決方案。 – codykochmann