2012-03-14 29 views
2

一般來說,在服務器端或JavaScript端進行大量數據計算,性能會更好嗎?服務器端或Javascript計算?

我有一堆數據,我在頁面上顯示 - 我想知道如果我應該格式化/解析/計算服務器端(在Python中)的數據並返回一個模板或如果我應該返回數據,並做所有我的JavaScript計算/格式化?

做出這些決定時是否有任何一般的經驗法則?

我正在計算的東西的例子 - 將時間戳轉換爲日期。

+1

對於像日期那樣的每個用戶可能處於不同時區的內容,將其放在客戶端上可使您的頁面更加緩存。 – 2012-03-14 16:25:31

+1

如果您可以將計算卸載到用戶,那麼效果會更好。但是如果calc是一個數據的負載,那麼你將不得不平衡服務器CPU時間節省比例。將原始數據發送到客戶端的帶寬成本增加。 – 2012-03-14 16:25:40

回答

2

這很大程度上取決於您正在嘗試做什麼。如果圖表是動態和動畫的,用js做客戶端可能是唯一的選擇。這也取決於你有多少數據。如果你有超過10MB的原始數據,我不會推薦在js中使用它。

2

首先你應該考慮改變你的數據格式來存儲數據來顯示。它應該已經以便捷的方式存儲起來 - 根本不需要任何處理。

如果您仍然需要重新計算數據,請考慮在服務器端進行此操作,因爲這樣可以緩存此結果(例如,在mamceched中),因爲在每次刷新頁面時計算它們都沒有意義。

最糟糕的選擇是重新計算它們的客戶端,因爲這可能很難在客戶端瀏覽器上發現明顯的性能問題(例如,在較大的數據上),並且您可能無法在測試環境中看到這類問題(您可以看到你的服務器正在減速,但很難看到有些客戶端渲染你的頁面非常慢 - 除非他們寫信給你)。

1

除了dk所陳述的事實之外,您還應該記住,您在客戶端進行的計算更可能失敗,因爲客戶可能不滿足某些先決條件。想想殘疾的JavaScript或不可靠的互聯網連接。一旦離開服務器,您一般無法控制數據。

因此,僅將不重要的計算移動到客戶端是非常明智的。像日期時間形成可能是好的,但不要嘗試用JavaScript解析你的整個網站。即使客戶端禁用了JavaScript,您的網站也應該可以正常工作(並且看起來可以接受)。