2011-07-20 30 views
0

我正在編寫一個類似於酒店或飛行取景器的網絡應用程序。我看過例如http://www.momondo.com/過濾AJAX查詢數據的最佳方式在哪裏?

該網站向您展示了1700家酒店,您可以過濾。您可以選擇3次啓動,重新啓動3次,刪除2次啓動,房間互聯網,價格範圍,...但過濾器似乎不使用網絡對數據庫進行另一次查詢。

它在客戶端的瀏覽器中過濾結果嗎?

您認爲如何?瀏覽器支持1700家酒店加載內存的信息?

回答

0

現代網絡瀏覽器支持什麼被稱爲'localstorage'或'Web Storage'。

這基本上允許您將一堆數據加載到客戶機中,並在本地使用數據庫操作。如果您的數據集大小合理(小於幾MB),這可能很有效,因爲您沒有嘗試在服務器上執行所有操作的擴展問題。

如果你正在處理大量的數據集,你會提高瀏覽器的限制,不得不讓人們重新配置他們的瀏覽器,但你可能不會讓他們一次顯示500MB的數據,所以無論如何,從網絡的角度來看,將數據劃分爲更小的塊可能會更有效。

至於「最佳」解決方案......它可能取決於他們將需要多少數據相對於整個數據集。我正在處理一些數千萬條記錄的數據庫,因此我過濾服務器端,但如果他們想在初始搜索後進行額外的過濾,最好是在客戶端進行,以便卸載處理和減少網絡流量。

+0

例如,1600文本與酒店信息的結果將不會有問題性能爲過濾器沒有? – Rom

+0

@Joe localstorage或webstorage在所有瀏覽器上都受支持嗎? – Awea

+0

@Awea:目前正在使用的所有瀏覽器?但是,您可以使用JavaScript檢測對localstorage的支持,然後使用備用方法或優雅地降級,如果您無法在客戶端執行此操作。 – Joe

0

它在客戶端的瀏覽器中過濾結果嗎?

我不這麼認爲。也許你可以用ajax調用一個腳本來響應過濾的數據來顯示。 我認爲客戶的瀏覽器更輕鬆^^。

您怎麼看?瀏覽器支持1700家酒店加載內存的信息?

是的,它必須與光DATAS但長延時鉅額DATAS(大陣列* 1700)的工作 你可以只發酒店數量有限與阿賈克斯調用的腳本過濾誰DATAS發送。

+0

那麼你認爲當用戶想要過濾時,更好的解決方案是對數據庫的一個查詢嗎? – Rom

+0

例如:一個查詢得到相應的城市(自動完成),另一個查詢與選定的城市和互聯網在房間的ID,等等... – Awea

1

是的,你可以一直避免使用網絡,如果你確定1700左右是你的酒店總數。當然,瀏覽器可以處理。只要離線處理dom,你應該沒問題(下面有更多解釋)。當然,隨着酒店數量的增加,您可能會考慮將過濾移到服務器端。

所以關鍵是做離線的dom變化。我的意思是瀏覽器需要一些時間來重新繪製dom,並且每當你做任何dom改變時重新繪製dom。因此,如果你正在做1760個jQuery元素中的.hide()和.show(),那麼這將是相當緩慢的原因。

解決方案:在所有酒店元素上使用jquery.detach(),然後執行隱藏/顯示。與...不同。刪除()它會保留綁定到這些元素的任何事件,當你將它們添加回dom時。通過隱藏/顯示「脫機」(當它們脫離dom時),只會在你將它們添加回來時使dom重新繪製(昂貴的操作)。

相關問題