2012-12-02 44 views
0

我正在設計一個向Web客戶端以及移動客戶端(階段2)提供數據/信息的服務器。數據將填充圖表;將每天的股票價格繪製成5年以上(顯示最小值/最大值/平均值)。使用AJAX檢索大量數據圖

1]如果我向客戶端發送3000個數據點,那就發送大量數據,然後繪圖。相反,如果我在服務器上構建圖形,我可以將PNG發送給客戶端。哪個更好?

2]繪製5年以上的每一點都是不好的做法嗎?有沒有辦法讓MySQL一次平均5個數據點(天)並返回呢?

仍處於設計階段,但我意識到這個決定會真正影響應用性能。

回答

0

你能估計你要發送的數據量嗎? 3000個數據點可以是12K(每個float 4個字節)和100K(文本格式的時間戳+值)之間的任何值。雖然12K不算什麼,但100K很重要,尤其是對於移動設備。

處理時間也很重要。與在畫布上生成圖表相比,使用某種低級語言在服務器上生成數據並返回PNG將效率更高。

但是你應該考慮解決你的圖表問題。如果你想繪製3000點,你至少需要水平3000像素。這些天最大的屏幕達到2560 pixels width,這意味着你永遠不能顯示所有的數據,你必須隱藏一些點。移動設備上的情況更糟糕。力爭200-300像素的寬度,並且至少減少兩倍的數據點。

話雖這麼說,我建議以下辦法:

  • 計算平均不超過100-200個數據點返回到瀏覽器(平均必須是聰明的,這樣你就不會寬鬆一些有趣的極端)。

  • 使用幾十種的JavaScript在瀏覽器上

  • 圖表庫,一旦你需要更詳細的信息之一,用戶可以在圖表中,這將要求數據服務器在更高的分辨率放大。

+0

我傾向於返回圖形,但後來我將負擔轉移到後端以計算運行平均值,或平均每5個數據點。是否有MySQL命令來平均每5點並返回? – TSG