我正在編寫一個類似於酒店或飛行取景器的網絡應用程序。我看過例如http://www.momondo.com/。過濾AJAX查詢數據的最佳方式在哪裏?
該網站向您展示了1700家酒店,您可以過濾。您可以選擇3次啓動,重新啓動3次,刪除2次啓動,房間互聯網,價格範圍,...但過濾器似乎不使用網絡對數據庫進行另一次查詢。
它在客戶端的瀏覽器中過濾結果嗎?
您認爲如何?瀏覽器支持1700家酒店加載內存的信息?
我正在編寫一個類似於酒店或飛行取景器的網絡應用程序。我看過例如http://www.momondo.com/。過濾AJAX查詢數據的最佳方式在哪裏?
該網站向您展示了1700家酒店,您可以過濾。您可以選擇3次啓動,重新啓動3次,刪除2次啓動,房間互聯網,價格範圍,...但過濾器似乎不使用網絡對數據庫進行另一次查詢。
它在客戶端的瀏覽器中過濾結果嗎?
您認爲如何?瀏覽器支持1700家酒店加載內存的信息?
現代網絡瀏覽器支持什麼被稱爲'localstorage'或'Web Storage'。
這基本上允許您將一堆數據加載到客戶機中,並在本地使用數據庫操作。如果您的數據集大小合理(小於幾MB),這可能很有效,因爲您沒有嘗試在服務器上執行所有操作的擴展問題。
如果你正在處理大量的數據集,你會提高瀏覽器的限制,不得不讓人們重新配置他們的瀏覽器,但你可能不會讓他們一次顯示500MB的數據,所以無論如何,從網絡的角度來看,將數據劃分爲更小的塊可能會更有效。
至於「最佳」解決方案......它可能取決於他們將需要多少數據相對於整個數據集。我正在處理一些數千萬條記錄的數據庫,因此我過濾服務器端,但如果他們想在初始搜索後進行額外的過濾,最好是在客戶端進行,以便卸載處理和減少網絡流量。
是的,你可以一直避免使用網絡,如果你確定1700左右是你的酒店總數。當然,瀏覽器可以處理。只要離線處理dom,你應該沒問題(下面有更多解釋)。當然,隨着酒店數量的增加,您可能會考慮將過濾移到服務器端。
所以關鍵是做離線的dom變化。我的意思是瀏覽器需要一些時間來重新繪製dom,並且每當你做任何dom改變時重新繪製dom。因此,如果你正在做1760個jQuery元素中的.hide()和.show(),那麼這將是相當緩慢的原因。
解決方案:在所有酒店元素上使用jquery.detach(),然後執行隱藏/顯示。與...不同。刪除()它會保留綁定到這些元素的任何事件,當你將它們添加回dom時。通過隱藏/顯示「脫機」(當它們脫離dom時),只會在你將它們添加回來時使dom重新繪製(昂貴的操作)。
例如,1600文本與酒店信息的結果將不會有問題性能爲過濾器沒有? – Rom
@Joe localstorage或webstorage在所有瀏覽器上都受支持嗎? – Awea
@Awea:目前正在使用的所有瀏覽器?但是,您可以使用JavaScript檢測對localstorage的支持,然後使用備用方法或優雅地降級,如果您無法在客戶端執行此操作。 – Joe