मैंने आज दोपहर के पहले jQuery की स्वत: पूर्णता को गति देने की अपनी यात्रा शुरू की, और निर्णय लिया कि सब कुछ शुरू करने के लिए शायद यह एक अच्छा विचार था। जैसा कि इस आलेख में सुझाया गया है: Speeding up autocomplete।jQuery ऑटोकंपलेट (अपरिहार्य रूप से लंबी सूचियों) को तेज करना
हालांकि, मैं अभी भी मेमकैड स्थापित करने और उपयोग करने के बाद भी धीमी प्रतिक्रिया समय से निपट रहा हूं।
मेरे मामले में समस्या यह है कि मैं अपने मामले में असाधारण रूप से लंबी सूचियों से निपट रहा हूं, व्यक्तिगत सदस्य। (सभी पीढ़ी या सभी पौधों की genuses)
टोंटी तालिका का निर्माण और क्लाइंट-साइड सूची को आबाद करने जा रहा है, और यह Memcached से जानकारी प्राप्त करने के कारण नहीं है।
यदि कोई और इस विशेष समस्या में चला गया है, तो मुझे इसे हल करने के लिए एक चालाक तरीका सुनना अच्छा लगेगा। मैं नीचे अपना कोड पोस्ट करूंगा।
नोट: यह विशेष पृष्ठ आम जनता के लिए अनुपलब्ध है, और मुझे पता है कि कुछ अंतरंग सुरक्षा छेद हैं।
require_once 'oo/Database.php';
$mysqldb = new Database;
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect to memcache");
$sql = "SELECT DISTINCT `Genus` FROM importlist.plants";
$key = md5('query'.$sql);
$result = $memcache->get($key);
//check if we got something back
if($result == null) {
//fetch from database
$result = $mysqldb->rawSelect($sql)->getResult();
//set to memcache, expires after 1 hour
$memcache->set($key,$result,0,3600);
}
//Result array
$Genera = ($memcache->get($key));
//Add required "quotation marks" for autocomplete
foreach ($Genera as &$Genus){
$Genus = '"'.$Genus[Genus].'"';
}
$Genera = implode($Genera,',');
//PHP to generate jQuery
echo <<< EOT
<script>
$(function() {
var availableTags = [$Genera];
$("#tags").autocomplete({
source: availableTags
});
});
</script>
EOT;
?>
<input id="tags" />
पता नहीं है कि यह इसे गति देगा, लेकिन आप memcache को दूसरी कॉल करने के बजाय '$ Genera = $ result' सेट करने में सक्षम होना चाहिए। या बेहतर अभी तक, '$ Genera' – jprofitt
के बजाय अपने 'foreach() 'में' $ परिणाम 'का उपयोग करें, क्या आप पेज लोड के बाद डेटा को पॉप्युलेट करने के लिए या उपयोगकर्ता से स्वतः पूर्ण होने का प्रयास करने से पहले AJAX अनुरोध का उपयोग कर सकते हैं? – jmort253
ऐसा लगता है कि आप एक सरणी के जेसन नोटेशन बनाने का अनुकरण कर रहे हैं। शायद 'json_encode' आपको foreach की तुलना में बेहतर गति देगा। हालांकि, आपको सबसे पहले यह पता लगाना चाहिए कि कोड के उस हिस्से का कौन सा हिस्सा इतना समय लेता है। कुछ मेट्रिक्स चलाकर पहले बाधा का पता लगाएं। – hakre