我打算爲一個站點使用jquery自動完成功能,並且已經實現了一個測試版本。我現在使用ajax調用來爲每個字符輸入檢索一個新的字符串列表。問題在於它在新的列表填充之前變得相當慢,1.5s。什麼是快速實現自動填充的最佳方式?我使用cakephp,只是做了一個查找,並有10個項目的限制。如何提高Jquery自動完成的性能
回答
This article - 關於如何flickr自動完成是一個很好的閱讀。我有幾個「哇」的閱讀經驗。
「這個小工具下載的200ms下您的聯繫人,在JavaScript中的所有 的列表,在 (這是真實的,即使對於 成員10000個聯繫人)。在 爲了獲得這個級別的 性能,我們必須完全重新考慮 服務器向客戶端發送數據的方式。「
在這種情況下速度的真正問題我相信是在數據庫上運行查詢所花費的時間。如果沒有辦法提高查詢速度,那麼也許可以擴展搜索範圍,使其包含更多具有高度排名結果的項目,您可以對每個其他字符執行一次搜索,並在客戶端過濾20-30個結果。
這可能會改善性能的外觀,但在1.5秒時,我會先嚐試提高查詢速度。
除此之外,如果你能給我們更多的信息,我可能會給你一個更具體的答案。
祝你好運!
1.5秒間隔是非常廣泛的差距,爲自動完成服務提供服務。
- 首先優化您的查詢和db 連接。嘗試保持你的數據庫連接 與內存緩存存活。
- 如果您的 服務被高度用於忽略重新提取,請使用結果緩存方法。
- 使用客戶端緩存(JS列表)來保留客戶端上的舊請求。如果用戶輸入並擦除,它將很有用。結果將來自前端緩存而不是後端點。
- 正則表達式在客戶端過濾不會很貴,你可以給它一個機會。
在做一些優化之前,您應該首先分析瓶頸在哪裏。嘗試找出每個步驟(輸入→請求→數據庫查詢→響應→顯示)需要多長時間。也許CakePHP實現有一個延遲,不會爲輸入的每個字符發送請求。
PHP/SQL上的服務器端速度很慢。
請勿使用PHP/SQL。我用C++編寫的自動完成,並使用哈希表進行查找。見表現here。
這是Celeron-300電腦,FreeBSD,Apache/FastCGI。
而且,你看,在巨大的字典上運行得很快。 10,000,000條記錄不是問題。
此外,支持優先級,動態轉換和其他功能。
自動完成本身並不慢,儘管您的實現當然可以。我首先要檢查的是延遲選項的值(請參閱jQuery文檔)。接下來,我會檢查你的查詢:你可能只會帶回10條記錄,但你是否正在做一個巨大的表掃描來獲得這10條記錄?你是否將數據庫中的大量記錄帶回集合,然後從集合中取出10個項目,而不是在數據庫上進行服務器端分頁?一個簡單的索引可能會有所幫助,但是您必須進行一些測試才能確定。
嘗試預加載您的列表對象,而不是實時查詢。
此外,默認情況下,自動完成延遲時間爲300毫秒。
也許去除延遲
$(".selector").autocomplete({ delay: 0 });
- 1. 如何提高自動完成性能
- 2. jQuery自動完成:預緩存查詢以提高性能?
- 3. jQuery自動完成性能
- 4. 如何提高jquery自動完成插件
- 5. jquery ui自動完成性能
- 6. jQuery - 自動提示/完成?
- 7. 提高JNA性能自動
- 8. JQuery自動完成功能
- 9. 提交動作的jquery自動完成
- 10. 提高jQuery拖動動畫的性能
- 11. jquery提到jquery ui自動完成
- 12. 如何提高jQuery的性能
- 13. 如何提高jQuery的性能
- 14. JQuery的自動完成表單提交
- 15. Solr與MySQL性能的自動完成
- 16. jQuery的輸入自動完成功能
- 17. jQuery的自動完成功能+ MYSQL
- 18. PHP中的jQuery自動完成功能
- 19. jQuery的自動完成源php功能
- 20. 帶自動完成功能的jQuery Grid
- 21. jQuery的自動完成功能在IE
- 22. jQuery的自動完成功能問題
- 23. jQuery的自動完成功能問題
- 24. 使用jQuery的自動完成功能
- 25. 與PHP的Jquery自動完成功能
- 26. JQuery的RoCom自動完成功能2.3.9
- 27. 使用Jquery自動完成提交
- 28. JQuery自動完成提交更改
- 29. jquery ui自動完成顯示提示?
- 30. Jquery自動完成提交表單
是否包括1.5秒的自動完成的等待時間(即,它會等待,以確保你不會打字額外字符的時間)? – Powerlord 2009-05-04 16:34:01
這個查詢是什麼樣的? 1.5個10個項目的速度非常慢。看到我下面關於SOLR的其他評論。像數百萬行的魅力一樣爲我們工作。 – Ligemer 2013-04-23 02:05:47
最好的改進...使用選定的jquery插件! – 2016-10-18 15:57:08