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

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

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

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

UPDATE - DIRTY SOLUTION

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

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

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

Как было предложено в этом вопросе , я создал статический дом, связанный с пользовательской страницей, и он отлично работает. Я также создал страницу блога (опять же с настраиваемым шаблоном), который также отлично работает (где «отлично» означает, что он показывает мою пустую тестовую страницу, содержащую только одно слово и без кода) , если Я не указываю его как " Страница сообщений "в admin -> Чтение настроек. Другими словами, похоже, что как только 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`)
6 голосов | спросил Matteo Riva 11 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 11 Sep 2010 19:10:54 +0400 2010, 19:10:54

5 ответов


2

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

ответил Matteo Riva 29 62014vEurope/Moscow11bEurope/MoscowSat, 29 Nov 2014 23:51:07 +0300 2014, 23:51:07
7

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

Использование статической домашней страницы приводит к WP с использованием сканирования индекса в первичном ключе таблицы posts, vs (так часто) сканирование индекса в 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.

ответил Denis de Bernardy 28 72010vEurope/Moscow11bEurope/MoscowSun, 28 Nov 2010 06:58:13 +0300 2010, 06:58:13
5

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

Существует множество плагинов для характеристики производительности 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 );

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

ответил Rarst 11 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 11 Sep 2010 19:20:07 +0400 2010, 19:20:07
0

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

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

ответил prettyboymp 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 12 Sep 2010 05:50:22 +0400 2010, 05:50:22
0

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

ответил bueltge 29 12010vEurope/Moscow11bEurope/MoscowMon, 29 Nov 2010 21:55:40 +0300 2010, 21:55:40

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132