it-swarm-es.com

¿Por qué es el hogar (mucho) más lento que otras páginas?

Estoy tratando de sintonizar un sitio web de wordpress que sufre tiempos de carga lentos, y descubrí que la página de inicio parece tardar mucho más en cargarse. No se debe al contenido porque solo estoy considerando el tiempo que demora la finalización de la solicitud (visible a través de FireBug en Firefox).

También intenté copiar el código index.php en una página personalizada, y el mismo código exacto se carga en aproximadamente 1 segundo, mientras que el hogar principal se carga en aproximadamente 7. Noté que las páginas individuales se cargaron más rápido, y al principio pensé que se debía a La diferencia en el contenido, pero después de esta prueba no estoy seguro de lo que está causando esto.

¿Hay muchas cosas que wordpress hace entre bastidores solo para el índice principal? ¿Hay alguna otra manera de explicar esta situación y, lo que es más importante, corregirla para que la página de inicio se cargue más rápido?

ACTUALIZACIÓN - SOLUCIÓN SUCIA

Después de muchos intentos ciegos, creé una nueva página llamada home que usa index.php como plantilla personalizada (no una copia, el mismo archivo). Redirigí cualquier llamada a la ruta base hacia ella (a través de la reescritura interna de wordpress) y tengo la misma página de inicio que antes, solo la cargué en 1/6 del tiempo. Aunque estoy contento con el resultado, realmente me gustaría entender qué está pasando.

OTRA ACTUALIZACIÓN

Así que el punto parece ser que no puedo usar una página dinámica (en el sentido de wordpress) con este sitio, solo funciona bien con una página "estática" personalizada donde inserto contenido a través de varias funciones, el Loop normal hace que la casa sea muy lento (con límite de memoria alto) o simplemente en blanco (límite de memoria bajo, secuencia de comandos falla).

Como se sugiere en esta pregunta , creé una casa estática vinculada a una página personalizada y funciona bien. También creé una página de blog (de nuevo con una plantilla personalizada) que también funciona bien (donde "bien" significa que muestra mi página de prueba vacía que contiene solo una palabra y ningún código)a menos queLo especifico como "Página de publicaciones" en admin -> Configuración de lectura. En otras palabras, parece que tan pronto como WordPress ve una página dinámica (la que se supone que contiene el bucle principal) hace algo muy pesado que consume mucha memoria RAM.

Aún buscando la causa de esto, puedo solucionarlo pero realmente me gustaría entender cuál es el problema.

Edición: recompensa añadida

Más información: Intenté deshabilitar todos los complementos, WordPress se actualiza a la última versión.

EDICIÓN ADICIONAL: ÍNDICES DE TABLA

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

Después de casi 4 años volví a esto y finalmente encontré el problema. Resulta que el sitio tenía muchos artículos TODOS marcados como pegajosos. Debido a la manera increíblemente tonta que WordPress usa para marcar publicaciones adhesivas (una matriz serializada en wp_options), el bucle principal de la página de inicio dinámica tomó un tiempo increíblemente largo. Borrar el campo sticky_posts en la tabla solucionó el problema.

2
Matteo Riva

Me permito disentir con los dos comentarios anteriores.

El uso de una página de inicio estática resulta en WP usando un escaneo de índice en la clave principal de la tabla de publicaciones, frente a un escaneo de índice (oh ocasional) en post_date, status o post_parent en la tabla de posts.

En esencia, la página de inicio es muy lenta debido al mal diseño de la base de datos en WP. El esquema tiene índices ridículos de varias columnas en las tablas de taxonomía que MySQL simplemente ignora una vez que tienes una cantidad significativa de publicaciones. El hecho de que estemos usando una tabla demasiado para las taxonomías tampoco ayuda.

En la base de datos, agregue índices en forma segura en:

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)

No será perfecto, pero al menos WP podrá usar planes de bucles anidados basados ​​en índices en su página principal ...

Ah, y ... si está utilizando cualquier tipo de publicación personalizada en su página principal, también necesita agregar:

posts(post_status,post_date DESC)

De lo contrario, no se utilizará ningún índice para la consulta principal debido a las cláusulas OR.

7
Denis de Bernardy

Por defecto no hay ninguna diferencia para el rendimiento de la página de inicio. Sin embargo, existe la posibilidad de que algún complemento haga algo lento solo en esa página.

Hay muchos complementos para perfilar WP rendimiento. Usualmente uso WP Tuner pero parece estar roto para la última WP versión, así que no tengo un reemplazo inmediato para sugerir.

La forma más sencilla es empaquetar la plantilla llena de marcadores de tiempo/memoria.

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

Es crudo, pero a menudo permite localizar la ubicación donde ocurre la desaceleración.

5
Rarst

Al principio, verifique los requisitos de WOrdPress y las imágenes, scripts y hojas de estilo incluidos. Puede consultar las consultas con el complemento Debug Queries y obtener más información sobre su instalación y errores con el complemento Debug Objects .

0
bueltge

Si la página de inicio tarda tanto en cargarse, lo más probable es que tenga un complemento o una función en el tema que realiza una solicitud remota en algún momento cuando la página de inicio se está mostrando.

Haría una búsqueda recursiva a través de su directorio de contenido de wp para las llamadas a 'wp_remote_' para buscar cualquier función que pueda estar causando esto.

0
prettyboymp