it-swarm-pt.tech

Por que é o lar (muito) mais lento que as?

Eu estou tentando ajustar um site wordpress que sofre tempos de carregamento lento, e descobri que a home page parece levar muito mais tempo para carregar. Não é devido ao conteúdo, porque eu estou apenas considerando o tempo que leva para o pedido de base terminar (visível via firebug no firefox).

Também tentei copiar o código index.php em uma página personalizada, e o mesmo código exato carrega em cerca de 1 segundo enquanto o home principal carrega em cerca de 7. Eu notei que as páginas individuais carregavam mais rápido, e no começo eu pensei que era devido a a diferença no conteúdo, mas depois desse teste não tenho certeza do que está causando isso.

Há muita coisa que o wordpress faz nos bastidores apenas para o índice principal? Existe alguma outra maneira de explicar essa situação e, mais importante, consertá-la para que a home page carregue mais rápido?

UPDATE - SOLUÇÃO SUJA

Depois de várias tentativas cegas, criei uma nova página chamada home que usa index.php como modelo personalizado (não uma cópia, o mesmo arquivo). Eu redirecionei qualquer chamada para o caminho base para ele (via reescrita interna do wordpress) e tenho a mesma página inicial de antes, apenas carregada em 1/6 do tempo. Enquanto estou feliz com o resultado, eu realmente gostaria de entender o que está acontecendo.

OUTRA ATUALIZAÇÃO

Então, o ponto parece ser que eu não posso usar uma página dinâmica (em wordpress 'sentido) com este site, ele só funciona bem com uma página personalizada "estática" onde insiro conteúdo através de várias funções, o Loop normal faz a casa muito lento (com alto limite de memória) ou apenas em branco (limite de pouca memória, o script falha).

Como sugerido em essa questão , criei uma página estática vinculada a uma página personalizada e ela funciona bem. Eu também criei uma página de blog (novamente com um modelo personalizado) que também funciona bem (onde "bom" significa que mostra minha página de teste vazia contendo apenas um Word e nenhum código)unlessespecifico como "Postagens" em admin -> Configurações de leitura. Em outras palavras, parece que assim que o wordpress vê uma página dinâmica (aquela que supostamente contém o Loop principal) ela faz algo muito pesado que consome muito ram.

Ainda procurando a causa disso, eu posso contornar isso, mas eu realmente gostaria de entender qual é o problema.

Editar: recompensa adicionada

Mais informações: Eu tentei desativar todos os plugins, o wordpress é atualizado para a versão mais recente.

EDIÇÃO ADICIONAL: ÍNDICES DE TABELA

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

Depois de quase 4 anos voltei a isso e finalmente encontrei o problema. Acontece que o site tinha muitos artigos TODOS marcados como pegajosos. Devido à maneira incrivelmente estúpida que o wordpress usa para marcar postagens fixas (um array serializado em wp_options), o loop principal da home page dinâmica levou um tempo incrivelmente longo. Limpar o campo sticky_posts na tabela corrigiu o problema.

2
Matteo Riva

Eu discordo com os dois comentários anteriores.

O uso de uma home page estática resulta em WP usando uma varredura de índice na chave primária da tabela de posts, contra uma varredura de índice (oh ocasional) em post_date, status ou post_parent na tabela de posts.

Em essência, a home page está inativa devido ao projeto pobre do banco de dados no WP. O esquema possui índices multicolumn ridículos nas tabelas de taxonomia que o MySQL simplesmente ignora uma vez que você tenha uma quantidade significativa de posts. O fato de usarmos uma mesa demais para taxonomias também não ajuda.

No banco de dados, adicione com segurança índices em:

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)

Não será perfeito, mas pelo menos WP poderá usar planos de loop aninhados baseados em índice em sua página inicial ...

Ah, e ... se você estiver usando algum tipo de postagem personalizada na sua página inicial, você também precisa adicionar:

posts(post_status,post_date DESC)

Senão nenhum índice será utilizado para a consulta principal por causa das cláusulas OR.

7
Denis de Bernardy

Por padrão, não há diferença para o desempenho da página inicial. Existe, no entanto, a possibilidade de que algum plugin faça algo lento apenas nessa página.

Existem muitos plugins para o perfil WP performance. Eu costumo usar WP Tuner mas parece estar quebrado para a última versãoWP, então não tenho substituto imediato para sugerir.

A maneira mais simples é o modelo de embalagem cheio de marcadores de tempo/memória.

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

É bruto, mas muitas vezes permite identificar a localização onde ocorre a desaceleração.

5
Rarst

Primeiro, verifique os quereis do WOrdPress e as imagens, scripts e folhas de estilo incluídos. Você pode verificar as consultas com o plugin Debug Queries e você se torna mais informações sobre sua instalação e erros com o plugin Debug Objects .

0
bueltge

Se a home page demorar muito para ser carregada, é provável que você tenha um plug-in ou uma função no tema que está fazendo uma solicitação remota em algum momento em que a página inicial está renderizando.

Eu faria uma busca recursiva através de seu diretório wp-content para chamadas para 'wp_remote_' para procurar por quaisquer funções que possam estar causando isso.

0
prettyboymp