Intereting Posts
Как получить дополнительную ссылку для сообщений Загрузить настройки настроек загрузки при загрузке wp.media через javascript Получение пользовательского размера изображения в функциях Нестандартный пользовательский экран администратора не сохраняется, если только функция manage_options пользователя Сохранять значения, сгенерированные через API, как термины таксономии Изменение размера изображения до определенного размера (отношение X-Y) Используйте разные файлы javascript для каждой страницы на веб-сайте Тема WordPress по умолчанию css Панель администратора (панель инструментов) не отображается в пользовательском файле PHP, который загружает WordPress Название динамической категории в сообщении запроса Рекомендуемое изображение на странице, заданной как «Страница сообщений» в «Настройки»> «Чтение» Возвращать только содержимое в поле excerpt в цикле Отображение содержимого страницы в архиве категории (archive.php) Отображение категорий детей в карусели Исчезновение исчезло

Очень медленный запрос

Этот запрос работает, но он занимает 20 секунд для запуска на выделенном сервере Quad Core … Как я могу это оптимизировать?

$slides=get_posts( array('post_type' => 'any', 'numberposts' => 5, 'orderby' => 'date', 'order' => 'desc', "tax_query" => array( "relation" => "OR", array( "field" => "id", "terms" => array(36), "taxonomy" => "category", "operator" => "IN" ), array( "field" => "id", "terms" => array(36), "taxonomy" => "music-categories", "operator" => "IN" ), array( "field" => "id", "terms" => array(36), "taxonomy" => "video-categories", "operator" => "IN" ), array( "field" => "id", "terms" => array(36), "taxonomy" => "mixtape-categories", "operator" => "IN" ) ) ) ); 

Solutions Collecting From Web of "Очень медленный запрос"

Чтобы проверить, медленный ли запрос или что-то еще замедляет его, попробуйте запустить ваш запрос непосредственно в базе данных и посмотрите, сколько времени он занимает там.

 <?php echo $GLOBALS['wp_query']->request; ?> 

Это показывает вам последний запрос, который WordPress запускал в вашей базе данных.

Если запрос действительно медленный в базе данных, попробуйте кэшировать результаты, запуская этот конкретный запрос только один раз в час или около того. Обычно я делаю это с меню, но он работает с чем угодно. Использование переходных процессов для сохранения выходного HTML.

Я написал об этом методе здесь .

Если вам нужен другой вывод для разных таксономий, попробуйте добавить TermID в имя переходного процесса.

Вы можете удалить переходные процессы либо на «update_post», либо на их истечение через определенное время.

  1. Используйте явные типы сообщений, т. 'post_type' => array('post','music'...) . Прямо сейчас ваши запросы проверяют изменения и вложения, а также, вероятно, половина сообщения в вашей БД.

  2. Из вашего кода кажется, что вы должны заранее знать, какая таксономия имеет отношение к вашему запросу (маловероятно, что термин номер 36 имеет соответствующее значение во всех четырех таксономиях). Вы должны запрашивать только соответствующие таксономии.

  3. Если вам просто нужны 5 последних опубликованных сообщений, то, возможно, вам стоит рассчитать их на лету, когда будут добавлены новые сообщения, избегая использования запроса.

     add_action('publich_post','my77483_change_cache'); function my77483_change_cache($post_id,$post) { if (not meeting criteria) return; $chached = get_option('my77483_query_cache'); if (count($cached) == 5) array_shift($cached); // remove the oldest post. $cached[] = $post_id; update_option('my77483_query_cache',$cached); } 

Таким образом, ваш запрос будет

 $chached = get_option('my77483_query_cache'); $posts = get_posts('post__in' => $cached); 

Единственная проблема заключается в том, что делать в случае удаления, тогда, возможно, вам следует запустить оригинальный запрос, но это должно быть очень редкое событие.