2012-04-26 49 views
0

我想知道你認爲什麼是在每個keyup()上搜索表的字段的更好的解決方案。JS自動完成。 AJAX與JS對象/數組

  1. AJAX查詢來搜索數據庫表,返回結果
  2. AJAX查詢來搜索數據庫表,然後將結果存儲在會話中,搜索會話在後續請求
  3. AJAX查詢來搜索數據庫表,然後存儲結果在JS對象/數組中,在隨後的請求中搜索對象/數組

我應該注意,表格可以很容易地達到1000行,但不會增長到超過幾千行。什麼是有效的,以績效爲導向的方式來解決這個問題?

這是一個很好的解決方案嗎?

http://jqueryui.com/demos/autocomplete/

+0

表格內容的靜態程度如何?他們是否經常變更,如果包含變更,是否很重要?此外,如何「龐大」的內容 - 超長字符串,或緊湊整數等。 – 2012-04-26 19:32:45

+0

@Mark Schultheiss嗨馬克。在第一次請求後包含進一步更改並不重要,但表格的內容每天都會更改。內容/每行由3個小字段組成,最多大約100個字符。在MySQL中,它們都是'字符串'。 – 2012-04-26 19:36:36

回答

1

我認爲你最好的選擇(根據你的評論做出一些假設)是將結果緩存在服務器上(不是會話,緩存),然後考慮緩存對象的生命週期。如果你正在做很多客戶端的使用,並且客戶端是瀏覽器,那麼你可以把它發送給客戶端以便在那之後使用。考慮到1000 X 100將是10萬 - 不是很大,但仍然沒有試用。

如果它是一個不太理想的客戶端,如移動設備,您可以考慮一些更適合該設備集的東西。

然而,這是非常主觀的。

編輯:你應該能夠構造這樣的緩存將被多個客戶端使用(如果它們都是相同的數據集),而會話將是每個用戶。

+0

非常感謝,這是一個好主意。 – 2012-04-26 20:33:31

0

延遲查詢的請求,直到你至少有3個字符。結果數量非常低,但如果你想優化你的網頁,你必須考慮有多少用戶將請求發送到服務器,移動或桌面?你需要處理器和內存來處理對象。

+0

將數據存儲在服務器端會話中怎麼樣?然後通過搜索後續查詢來減少對數據庫的調用? – 2012-04-26 19:55:43

+0

它會減少對數據庫的查詢,你是否嘗試過基準測試? – Juan 2012-04-26 20:43:51