Я начал свое путешествие по ускорению автозаполнения jQuery сегодня днем и решил, что, вероятно, было бы неплохо начать memcaching всего. Как предлагается в этой статье: Ускорение автозаполнения .
Однако я все еще сталкиваюсь с медленным временем отклика даже после установки и использования Memcached.
Проблема в моем случае в том, что я имею дело с чрезвычайно длинными списками, в моем случае, более 6700 отдельных членов. (Все роды или роды всех растений)
Узким местом, кажется, является построение таблицы и заполнение клиентского списка, и это не вызвано извлечением информации из 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
EOT;
?>