Intereting Posts
Добавить новую страницу с предварительно выбранным родителем Попытка получить имя файла Загрузка изображения с помощью ссылки «Установить изображение» на лицевой стороне Предельный цикл для будущих событий Loop Разделить две колонки форма пользовательского поиска для пользовательских сообщений Удаление опции текста заголовка из бэкэнд Измените тип содержимого заголовков на wp_remote_post Обновить страницу администрирования виджета сброса скрытого класса jQuery Создание отдельных страниц для профилей авторов и списков сообщений автором Будет ли current_user больше не глобальным? Как фильтровать get_adjacent_post ()? Неверный URL-адрес в сортируемых заголовках столбцов и разбиении на страницы в администраторе, когда за прокси-сервером подсчитывать количество просмотров сообщения, исключая собственные просмотры Пользовательская разбивка на страницы с использованием ошибки 404 WP_Query

Почему дома (много) медленнее, чем другие страницы?

Я пытаюсь настроить сайт WordPress, который страдает медленными временами загрузки, и я узнал, что на домашней странице требуется намного больше времени для загрузки. Это не из-за контента, потому что я просто рассматриваю время, необходимое для завершения базового запроса (можно просматривать через firebug в firefox).

Кроме того, я попытался скопировать код index.php на пользовательскую страницу, и тот же самый точный код загрузится примерно через 1 секунду, в то время как основной дом загружается примерно в 7. Я заметил, что отдельные страницы загружаются быстрее, и сначала я думал, что это связано с тем, разница в содержании, но после этого теста я не уверен, что вызывает это.

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

ОБНОВЛЕНИЕ – ДЛИТЕЛЬНОЕ РЕШЕНИЕ

После многих попыток слепых я создал новую страницу с именем home, которая использует index.php как пользовательский шаблон (а не копию, тот же файл). Я перенаправил любой вызов базового пути на него (через внутреннюю переписку wordpress), и у меня есть та же самая страница, что и раньше, только что загруженная в 1/6 раза. Пока я доволен результатом, мне очень хотелось бы понять, что происходит.

ДРУГОЕ ОБНОВЛЕНИЕ

Таким образом, кажется, что я не могу использовать динамическую (в WordPress) страницу с этим сайтом, она отлично работает только с пользовательской «статической» страницей, где я вставляю содержимое через различные функции, обычный Loop делает дом либо очень медленный (с большим ограничением памяти) или просто пустой (ограничение на низкую память, сбой сценария).

Как было предложено в этом вопросе , я создал статический дом, связанный с пользовательской страницей, и он отлично работает. Я также создал страницу блога (опять же с настраиваемым шаблоном), который также отлично работает (где «штраф» означает, что он показывает мою пустую тестовую страницу, содержащую только одно слово и без кода), если я не укажу его как «Страница сообщений» в админке -> Чтение настроек. Другими словами, похоже, как только WordPress увидит динамическую страницу (ту, которая должна удерживать главный Loop), она делает что-то очень тяжелое, которое съедает много барана.

Все еще ищут причину этого, я могу обойти это, но я действительно хотел бы понять, в чем проблема.

Изменить: добавлена ​​награда

Дополнительная информация: я попытался отключить все плагины, WordPress обновлен до последней версии.

ДАЛЬНЕЙШАЯ РЕДАКТИРОВКА: ТАБЛИЧНЫЕ ИНДЕКСЫ

wp_posts:

 PRIMARY KEY (`ID`), KEY `type_status_date` (`post_type`,`post_status`(1),`post_date`,`ID`), KEY `post_status_date_gmt` (`post_status`(1),`post_date_gmt`), KEY `post_date` (`post_date`), KEY `post_date_gmt` (`post_date_gmt`), KEY `post_parent` (`post_parent`), KEY `post_name` (`post_name`), KEY `post_status` (`post_status`), KEY `post_author` (`post_author`), FULLTEXT KEY `post_related` (`post_name`,`post_content`), FULLTEXT KEY `post_content` (`post_content`,`post_title`), 

wp_term_relationships:

 PRIMARY KEY (`object_id`,`term_taxonomy_id`), KEY `term_taxonomy_id` (`term_taxonomy_id`) 

wp_term_taxonomy:

 PRIMARY KEY (`term_taxonomy_id`), UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`), KEY `taxonomy` (`taxonomy`) 

Solutions Collecting From Web of "Почему дома (много) медленнее, чем другие страницы?"

Я прошу отличаться от предыдущих двух комментариев.

Использование статической домашней страницы приводит к тому, что WP использует сканирование индекса в первичном ключе таблицы сообщений, а также (так часто) сканирование индекса на post_date, status или post_parent в таблице сообщений.

По сути, домашняя страница мертва медленно из-за плохой структуры базы данных в WP. Схема имеет смехотворные многоколоночные индексы в таблицах таксономии, которые MySQL просто игнорирует, если у вас есть значимое количество сообщений. Тот факт, что мы слишком много используем таблицу для таксономий, тоже не помогает.

В базе данных безопасно добавьте индексы на:

 CREATE INDEX extra_posts ON posts (post_type,post_status,post_date DESC) CREATE INDEX extra_term_rel ON term_relationships(term_taxonomy_id,object_id) CREATE INDEX extra_term_tax ON term_taxonomy(taxonomy,term_taxonomy_id,term_id) 

Это не будет идеально, но по крайней мере WP сможет использовать индексы на основе индексов вложенных циклов на вашей главной странице …

О, и … если вы используете какой-либо пользовательский тип сообщения на своей главной странице, вам также нужно добавить:

 posts(post_status,post_date DESC) 

Иначе никакой индекс не будет использоваться вообще для основного запроса из-за предложений OR.

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

Существует множество плагинов для характеристики производительности WP. Обычно я использую WP Tuner, но, похоже, он разбит на последнюю версию WP, поэтому я не предлагаю немедленную замену.

Простейшим способом является шаблон упаковки, полный маркеров времени / памяти.

 printf( '%d queries in %.3f seconds, using %.2fMB memory', get_num_queries(), timer_stop( 0, 3 ), memory_get_peak_usage() / 1024 / 1024 ); 

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

После почти 4 лет я вернулся к этому и, наконец, нашел проблему. Оказывается, на сайте было много статей, обозначенных как липкие. Из-за невероятно тупым способом WordPress использует, чтобы отметить липкие сообщения (сериализованный массив в wp_options), основной цикл динамической домашней страницы занял очень много времени. Устранение поля sticky_posts в таблице sticky_posts проблему.

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

Я бы сделал рекурсивный поиск в вашем каталоге wp-content для вызовов в wp_remote_ для поиска любых функций, которые могут быть причиной этого.

Сначала проверьте quereis WOrdPress и включенные изображения, скрипты и таблицы стилей. Вы можете проверить запросы с помощью Debug-запросов плагина, и вы получите больше информации о своих установках и ошибках с помощью модулей Debug Objects .