Я почти закончил создание веб-сайта WordPress, и главная проблема, сдерживающая запуск, — это очень много времени, которое требуется для выполнения пользовательских запросов.
Я включил кеширование в браузере, а также в php и gziping, а также с помощью плагина кеша W3 Total и попробовал другие плагины кеширования с минимальным успехом.
Также подняли время ожидания и память в php.ini и wp-config.
Главная страница, с которой у меня возникла проблема, http://www.qbhitlist.com/qbhitlist/quarterbacks/ но домашняя страница и две другие страницы рейтинга тоже медленные.
http://www.qbhitlist.com/qbhitlist/rankings/qbhl-top-50/
http://www.qbhitlist.com/qbhitlist/rankings/qbhl-premium-player-rankings/
Я понимаю, почему (опрашиваю более 7000 пользователей), но я не знаю, как это сделать.
Так есть ли способ сохранить основной запрос в файл json или глобальный массив, или lazyload запрос после загрузки страницы? Или любое другое решение, которое радикально уменьшит время загрузки страницы / улучшит производительность.
Любой совет будет принята с благодарностью.
Вы делаете это не правильно. Вы не должны сбрасывать все эти данные на одной странице одновременно, как это.
Даже если вам придется сократить время загрузки и запустить сайт в режиме реального времени, вам придется выполнять множество запросов, попадающих в базу данных, как только количество одновременно работающих пользователей возрастет. Я предполагаю, что база данных не будет обрабатывать такой трафик.
Попробуйте сохранить запрос в промежуточной таблице, над которой у вас больше контроля, и получить данные в битах. Отобразите первые 50 элементов, затем укажите ссылки на следующие 50 элементов, используя ajax или обычную нумерацию страниц без ajax, и время загрузки уменьшится, и у вас не возникнет проблем при работе сайта.
Вы можете хранить HTML в переходном процессе. Установите срок действия до 0
и удаляйте переходный процесс программно каждый раз, когда вы обновляете список, чтобы он восстанавливался.
Образец кода:
function get_qb_list() {
$qb_list = get_transient( 'qb_list' );
if( false === $qb_list ) {
$qb_list = 'HTML GOES HERE';
set_transient( 'qb_list', $qb_list, 0 );
}
return $qb_list;
}
Переходные процессы хранятся в таблице параметров wp. Узнайте больше о переходных API Вот.