Проблема решена!
@ AJ
Первая часть решения заключалась в сохранении массивов из запроса в сеанс (рекомендации AJ).).Это помогло, но не так много (не так много, как я ожидал, сэкономило мне только 0,5 секунды загрузки страницы. Страница загружалась раньше через 4,79 секунды после этой реализации ... через 4,47 секунды.
Эта часть является реальным решением.
в начале моего кода в функция dorpdown У меня был этот код:
$dbh = new PDO(CONFIG_MYSQL_DSN, CONFIG_MYSQL_USERNAME, CONFIG_MYSQL_PASSWORD, array(PDO::ATTR_PERSISTENT => false));
$dbh -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
, что означает, что я создавал новое соединение с БД каждый раз, когда функция вызывалась . Я делал, когда создавал функцию некоторое время назад иПредполагалось, что он будет использоваться только для целей тестирования, потому что на каждой странице у меня есть включаемый файл, который удостоверяется, что я подключен к базе данных. У него есть опция array(PDO::ATTR_PERSISTENT => true
.
Итак, чтобыИзбегайте подключения к БД каждый раз, когда вызывается выпадающая функция. Я установил для $ dbh значение global global $dbh;
в этом включаемом файле, а также установил global $dbh;
в самой функции .загружается ТОЛЬКО 0,6 секунды вместо 4,76, что такое GСОВЕРШЕНСТВОВАНИЕ УЛУЧШЕНИЯ!