¿Cómo funciona el caché en WordPress?


La memorización de caché puede dar la impresión de que es el “santo grial” para todos los problemas de rendimiento. No es de extrañar que las personas levanten una ceja cuando dicen “deja de usar caché” en mis presentaciones, reuniones o talleres. Para algunos, especialmente en la comunidad de WordPress, me convertí en el tipo que odia el almacenamiento en caché. Por lo tanto, es hora de aclarar lo que realmente quiero decir sobre este tema, cuándo y por qué debería usarse. Y quizás lo más importante, cuando no use la memoria en caché, y busque soluciones alternativas. ¿Cuándo debe usar el almacenamiento en caché de la página completa? Comencemos con el más grande de ellos. Memoria de caché de toda la página o simplemente almacenamiento de la página en caché. Una técnica por la cual almacena temporalmente una versión pre-general de una página para entregar exactamente el mismo código (HTML) a los visitantes en un tiempo limitado. Así es como funciona todo el almacenamiento de la página:
El visitante visita ABC.com/page. Esta página no está en caché y toca PHP y se genera a partir de la base de datos. Antes de recibir el visitante A, también se almacena en el caché de la página completa, con un vencimiento de 10 minutos.
Visitante B Visite ABC.com/Page 2 minutos después del visitante A y, por lo tanto, se sirve con la misma página, pero esta vez directamente desde caché. Las páginas ofrecidas al visitante A y B son idénticas.
El visitante C visita ABC.com/Page 15 minutos después del visitante A y, debido a que la versión almacenada en el caché de la página ahora ha expirado, la solicitud alcanza el PHP nuevamente y la página se regenera como para el visitante A.
Debido a que todos los que visitan esta página en el período de tiempo en que hay una página válida en caché, la página se puede entregar muy rápidamente.Casi no se utiliza ningún recurso para entregar una página almacenada en caché y, por lo tanto, el almacenamiento de la página completa puede mejorar el rendimiento y, lo que es más importante, la escalabilidad.Puede sonar muy atractivo, pero todo el almacenamiento de la página tiene grandes desventajas. Si desea proporcionar contenido dinámico, personalizado o diferente a los diferentes usuarios, esto debe resolverse con JavaScript (AJAX) que se ejecuta después del documento que HTML se entrega al visitante.Esto puede funcionar bien, pero aún requiere una solicitud adicional al servidor.Si usa su memoria en caché para evitar escribir el código rápido, continuará encontrando problemas con sus solicitudes dinámicas de AJAX.
El hecho de que algo funcione rápidamente para ti no significa que sea rápido para todos. Los sitios web no tienen un solo punto de entrada, y los visitantes vienen a su sitio a través de una variedad de páginas. Esto es especialmente cierto para WooCommerce, donde los visitantes usan Google y vienen a través de páginas de productos. O, si ejecuta Google Shopping en el catálogo completo con enlaces directamente a las páginas de productos. Para resolver este problema, algunas personas incluso intentan remediarlo “preparando” el caché de toda la página usando Spider para indexar todo el sitio para garantizar que cada página se almacene en caché de antemano. En la práctica, esto no funciona bien. Es vulnerable, difícil de configurar y configurado correctamente, difícil de mantener y requiere tiempo y completamente inútil. Perfora el control sobre el rendimiento real de su sitio web y cómo funciona el código (o no funciona como debería). Si está utilizando el caché de toda la página, pierde su significado, ese es el tiempo de respuesta real de su sitio y qué tan bien su código muestra que la falta de enfoque en el rendimiento real es la razón principal por la cual los sitios están atascados en los días como Black Friday o cuando se distribuyen grandes campañas.
¿Qué pasa con los complementos de caché como W3 Total Cache? Los complementos de WordPress como W3 Total Cache funcionan como todas las demás páginas caché. Almacenan una versión de una página previa al general en el sistema de archivos o en la memoria y la proporcionan a los usuarios hasta que expiran. W3 Total Cache es utilizado por 1 millón de sitios web, pero eso no significa que sea una buena idea. Especialmente no si usa alojamiento rápido. W3 Total Cache es un complemento muy grande y, para la mayoría de los sitios, agrega solo mucho código innecesario. Más código significa que más cosas pueden salir mal. Si realmente tiene que hacer el caché de toda la página, esto no debe hacerse en la parte de PHP de su aplicación porque PHP es lento. La memorización de caché de la página completa debe hacerse como cerca del usuario en el servidor web (NGINX en nuestro caso). W3 Total Cache habla sobre la carga de las páginas en menos de 2 segundos, mostrando un tema como veintes. Para ser claro; Una prueba similar en nuestros servidores se entregará en aproximadamente 100 milisegundos sin usar caché, no en segundos.
Entonces, ¿cuándo debe usar el almacenamiento en caché de la página completa y por qué? La memorización de caché de toda la página se realizó para escalas de los sitios web con mucho tráfico para administrar más fácilmente los aumentos del tráfico. El recuerdo de toda la página en caché se inventó cuando las personas usaban Internet, especialmente para leer artículos de noticias. Generar contenido único para cada visitante no se detecta para los periódicos de noticias, porque sus páginas son en gran medida estáticas con actualizaciones raras. Para este escenario, el almacenamiento en caché de la página completa es perfecta, pero los sitios web de hoy son más parecidos a aplicaciones. Si piensa en almacenar toda la página, debe probar ServBolt Optimizer. De hecho, es el caché más rápido para WordPress. Los sitios web contemporáneos son más complejos, dinámicos y cada vez más personalizados. El código es cada vez más complejo y no siempre es una buena idea agregar mecanismos aún más complejos (leer almacenamiento de caché) sobre el código ya complejo. En la práctica, agregará otra capa de tecnología que introduzca nuevos puntos de defectos únicos, requiere mantenimiento dedicado, actualizaciones y operaciones. Hará que los errores sean más difíciles de resolver, y el desarrollo general es más difícil (más caro). Si confía en su rendimiento de almacenamiento en caché de página completa, puedo cerrarlo para garantizar que la solución colapsará si el almacenamiento de caché ya no funciona.
La respuesta a la pregunta es, por lo tanto, escribir un buen código y consulta y tener en cuenta que la solución debe escalarse. Está bien usar el almacenamiento en caché de la página completa para administrar los picos de tráfico repentinos, como lo hicieron y aún hacer periódicos de noticias. Debería ser posible desactivar el caché de toda la página en un día normal, con tráfico normal, sin ponerse nervioso. Y si hace las cosas correctamente, debería poder deshabilitar el mantenimiento de toda la página en caché y en los días con mucho tráfico, sin bloquear su sitio. En ServBelt, la gran mayoría de las tiendas trabajan sin caché completo, incluso en días con tráfico pesado, como Black Friday. WordPress Object Cache: lo usa sin saber que muchas personas no saben que el caché de objetos de WordPress se usa en casi todo el sitio- WordPress. Y sí, el caché de objetos es efectivo incluso si no usa un caché externo, como Memcached o Redis. ¿Cómo funciona el caché de objetos de WordPress?
Realice una solicitud de valores postmeta usando get_post_meta ()
WordPress ejecuta la solicitud y obtiene el resultado de la base de datos y almacena automáticamente el resultado en los objetos (memoria, RAM)
Obtenga el resultado y úselo en algún lugar de su código
Más adelante en su código, haga otra solicitud get_post_meta () para obtener los mismos datos
WordPress ya tiene esto en el caché de objetos y lo devuelve directamente sin consultar la base de datos nuevamente
La página se entrega al visitante y el caché de los objetos se vacía (memoria liberada)
No todas las funciones de WordPress guardan sus resultados en caché de objetos, pero get_post_meta () sí. Esto se debe al hecho de que la tabla _postmeta en la base de datos puede crecer muy grande, y las solicitudes pueden volverse costosas (use muchos recursos de cálculo). Como desarrollador, puede agregar solo los resultados de la memoria caché de objetos, así que reutilice lo mismo Los datos más tarde serán más rápido. Si escribe sus propias consultas con, por ejemplo, wp_query, deberá almacenar los resultados en caché de objetos solo. Sin embargo, es importante tener en cuenta que, como con todo el almacenamiento de caché, no puede confiar en él. Por lo tanto, asegúrese de no escribir un código que asuma que sus resultados están en caché de objetos. Puede verificar el rendimiento del caché de objetos y el número de consultas en la base de datos instalando un complemento como un monitor de consulta. En mis pruebas con un WooCommerce regular, una tasa de caché de objetos normal es de entre 95% y 98%.
Cómo usar la memoria caché de objetos de WordPress para sus propias reinas $ resultado = wp_cache_get (‘some_unique_name’);
if (false === $ resultado) {
$ result = $ wpdb-> get_results ($ consulta);
wp_cache_set (‘a name_unic’, $ resultado);
}
// hacer algo con $ resultado; Lo que hace este ejemplo de código es intentar obtener un resultado $ y luego verificar si realmente hay un resultado $. Wp_cache_get () devuelve falso si no existe. Si no hay datos, ejecutamos la consulta para nuestros datos y luego los almacenamos con wp_cache_set () para que esté disponible para futuras solicitudes.
Pero, ¿qué pasa con el caché de objetos externos, como Memcached y Redis? Un caché de objeto externo puede ofrecer lo que se llama con mayor precisión “caché de objetos persistentes”. Este es un caché de objetos que no se eliminan entre las vistas de la página, por lo que mantienen sus datos en diferentes vistas de la página. Idea inteligente, ¿verdad? Pero, como de costumbre, con la memoria en el caché, no es tan simple. El potencial potencial de rendimiento del uso de un caché persistente se limita al acceso que pierde el caché de objetos. Usando la tasa de acceso predeterminada de 95% -98% de caché no personal, el potencial de aumento del rendimiento es entre el 2% y el 5% de la demanda. Además, un caché externo agregará una latencia adicional, ya que es una aplicación externa, por lo que disminuirá el 95-98% que se han servido directamente en el PHP antes. La ganancia neta de las ganancias adicionales de latencia + rendimiento del caché de objetos externos a menudo se vuelve negativa para las tiendas de comercio electrónico.
Incluso si usa un caché de objetos externos, no puede confiar en que la información existe cuando escribe el código.
Si es adicto a un caché externo para que las páginas se carguen a una velocidad decente, significa que su código es estúpido, que las consultas de la base de datos son demasiado pesadas o que hay demasiadas. El verdadero problema está en su código, no en qué tan rápido responde la base de datos. Por lo tanto, no debe usar Band-Aid Memcached o Redis.
Si usa una base de datos rápida que está optimizada y usa el índice, no necesita un caché externo.
Si no necesita un caché de objetos externos, puede ser dañino usar una dañina puede ser su extensión, pero a menudo lo es. Esto realmente se aplica a todas las tecnologías que incluye en su pila web, que no necesita. Si lo tiene, la oportunidad de hacerse adicto a él es genial, incluso si realmente no lo necesita. Si es adicto a él, aumente las posibilidades de que algo salga mal. Además, cada pieza de tecnología agregada en la pila requiere instalación, configuración, mantenimiento, actualización de seguridad e introduce otro defecto único. Los transitorios pueden ser buenos, pero también pueden destruir el sitio web por WordPress y una variedad de complementos, y el concepto es bastante simple. Realice una solicitud y guarde el resultado o partes en la base de datos para una reutilización adicional. A diferencia del caché de objetos, no necesita ninguna tecnología adicional para hacerlo persistente en las vistas de la página, porque los datos se almacenan en la base de datos. Los transitorios pueden tener un tiempo de vencimiento o no, esa es su elección. Personalmente, no me gusta el uso excesivo de los transitorios y hay muchas razones para que los Assitrini se guarden en la tabla de WordPress. Esta tabla ya se usa intensamente, y la escritura excesiva en _options puede introducir problemas de bloqueo (cola).
El uso excesivo de los transitorios dará como resultado una tabla grande _opiones. Cada vista de página depende de esta tabla, y una tabla de opciones grande puede reducir el rendimiento para todas las vistas de la página.
Los transitorios que no caducan se interrogarán en cada carga de página (carga automática) a través de wp_load_alloptons (). Esto reducirá el rendimiento a todas las vistas de la página. Pero se dice que los transitorios pueden ser excelentes para el rendimiento si se usan correctamente. Si interroga los datos que a menudo se usan y cambia raramente, puede ser una buena idea almacenar el resultado en transitorios. Es mucho más fácil para WordPress tomar el valor de la tecla X en la tabla de opciones, que ejecutar selecciones en otras tablas. Pero si usa los transitorios, se asegura de vigilar la tabla _opions para asegurarse de no crecer salvaje y asegurarse de implementar la limpieza de los transitorios que ya no usa o ha expirado. Y nunca use transitorios para datos que requieran actualizaciones frecuentes, destruirá el rendimiento. El almacenamiento en caché del fragmento es bueno si el fragmento de caché se usa correctamente es un tipo de almacenamiento de caché en el que almacena un artículo, parte de una página o algo que es costoso de generar y/o a menudo se usa. Muchos han optado por implementar la función de Mark Jaquith para hacer almacenamiento en caché de fragmentos en WordPress. El fragmento de almacenamiento en caché significa almacenar un resultado (salida HTML) para que se pueda entregar mucho más tarde. La idea es tan simple, tan increíble. Puede elegir qué elementos memorizar en el caché y no debe mantener el resultado completo en el caché, como la página completa. La forma en que lo hace en WordPress es equivalente al almacenamiento en caché de objetos, ya que no hay límites para los datos que puede almacenar en caché. Por lo tanto, se aplican los mismos principios;

Nunca confíe en que algo se almacene en caché, asegúrese de no depender de él y concéntrese en su código en lugar de tomar el pedido rápido de caché. Muchos implementan el almacenamiento en caché de fragmentos basados ​​en memoria. Pero para que esto tenga un efecto, se requiere un caché de objeto externo para que los elementos estén disponibles en las vistas de la página (ver arriba). Recomiendo el uso suave del fragmento de caché y el almacenamiento de datos en transitorios. En la práctica, esto le dará los mismos resultados en términos de rendimiento, sin agregar tecnología adicional a su pila. Por lo tanto, ahorra los transitorios $ output = get_ransient (‘o
$ output = ‘algunos datos’;
set_ransient (‘a key_unic’, $ output, 3600);
}
// Haga algo con $ salida En este ejemplo de código, leemos $ salida de un tránsito y prueba si existe $ salida. Si get_ransient () devuelve False, genere los datos y guárdelos en un transitorio para su uso posterior.
¡Regístrese para nuestro boletín!
Reciba actualizaciones de nuestro blog, así como anuncios sobre nuevos servicios en su cuadro de correo electrónico. Es la forma más fácil de mantenerse al día con las noticias. Sin spam, por supuesto.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *