2011-09-10 55 views
2

在一個高度AJAX網站中,網頁的內容被AJAX部分更新,它基本上改變了HTML標籤或網頁的一部分。哪一個更高性能:XmlHttpRequest響應爲HTML或JSON?

因此,我們需要做出決定:

  1. 服務器端渲染HTML標籤和響應的XmlHttpRequest返回。瀏覽器JavaScript只是用XHR響應改變容器的innerHTML;

  2. 服務器端以JSON格式返回數據。瀏覽器JavaScript根據JSON呈現HTML,然後更改容器的innerHTML。

從性能角度來看,哪種方法更好?

就性能而言,我指的是最終用戶的感知性能,這受服務器端花費的時間,網絡和客戶端瀏覽器花費的時間影響。

+0

@關閉器:這不是一個真正的問題?我在這裏看到真正的價值。 –

回答

3

最有可能的JSON版本更快,因爲有了它,你必須通過網絡傳輸更少的位。與可能的網絡延遲相比,在瀏覽器中呈現HTML速度很快。只需使用一些預編譯模板的客戶端模板語言即可。像Handlebars.js

另外,如果您想要使用其他功能,JSON更具通用性。我會毫無疑問地使用JSON。

+0

準確地說,我會說。 +1 –

+0

在這種情況下,JSON可能比純HTML大。例如twitter.com是其開放API的Web客戶端。響應中包含一些實際上未在網絡中使用的數據。 –

2

如果我們把客戶端表現出來的公式,還有,你可能要衡量兩件事情:傳輸數據的

  1. 長(因爲網絡是瓶頸這裏迄今爲止,較短的請求無論是從客戶端還是從服務器實現都會更高效)。
  2. 在服務器端生成所述數據所用的時間。

這些指標聽起來就像是使用JSON或HTML非常接近,以至於「忘記它,做更方便的事情」。但是,如果你認真對待每一次性能下降,這些指標就是你應該用來決定的。

+0

在我的實驗中,客戶端渲染(帶鬍鬚和ClousreTemplates)比服務器端渲染花費更多的時間。無論如何,筆記本電腦和臺式機CPU不如服務器強大。 –

+0

@MorganCheng:我假設你並不關心客戶端的性能。如果不是這樣,請編輯該問題以說明問題。 – Jon

+0

已編輯。 「表現」是指最終用戶的感知表現。 –

1

如果您需要發送html格式的數據,我會選擇直接的HTML響應。

使用JSON時,您必須創建一個屬性才能知道它是哪個標記,而另一個則包含它所包含的數據。如果你有很多嵌套標籤,它將開始變得不可讀,並且容易出錯。

或者,您可以發送一個JSON,只包含一個包含所有HTML的字符串的屬性。但是,純HTML仍然是最好的。

無論如何,我不認爲你會看到任何性能差異。

+0

標籤問題很容易處理客戶端模板。無需將HTML搞亂成JSON。這一切都很乾淨簡單。 – Epeli

+0

如果您使用客戶端模板,則爲true。我不是例如。 –

+0

將HTML放入JSON屬性是一個壞主意。 JSON不擅長以長字符串作爲屬性。它傷害了性能。 –

0

我會說性能不是這裏的問題,但應該遵循的最佳實踐。
如果你有一個高度ajax網站,你應該考慮一個SOA架構。
REST在這裏特別有用,因爲您實際上可以請求在您請求的MIME類型上使用這兩種格式。
您應該使用Accept和Content-Type HTTP標頭來請求正確的格式並檢查它是否被正確接收。
因此,這可以讓您變得靈活並根據您的需求選擇最合適的表示。
您應該閱讀有關REST herehere

相關問題