Almacenamiento en caché de página completa: la necesidad de velocidad

Publicado: 2020-10-02
speed - Full-Page Caching - The Need For Speed -

El almacenamiento en caché de sitios web y el almacenamiento en caché de página completa son técnicas para acelerar el tiempo de carga de los sitios web. Es una práctica muy común que se usa en casi todas partes debido a las ganancias masivas que aporta al rendimiento del sitio web. El almacenamiento en caché funciona haciendo que el servidor web sea mucho más eficiente en su trabajo. El almacenamiento en caché de página completa es una forma más avanzada de almacenamiento en caché, por lo que para comprender el almacenamiento en caché de página completa, comencemos con el almacenamiento en caché normal y construyamos desde allí.

Joe's Auto-Parts Shop: un sitio web estático

1 - Full-Page Caching - The Need For Speed -

Imagínate Joe. Es un tipo que posee y dirige un gran almacén lleno de piezas de automóviles. Al frente del almacén hay un mostrador donde llegan los clientes para comprar sus repuestos. Cuando un cliente llega a comprar algunas piezas, la transacción sigue este procedimiento:

  1. El cliente le entrega a Joe una lista de piezas de automóviles.
  2. Joe busca la primera parte y la pone sobre el mostrador.
  3. Joe busca la segunda parte y la pone sobre el mostrador.
  4. Y así hasta el final de la lista.
  5. El cliente paga y se va.

Entonces, ¿cómo se aplica esto a un sitio web estático?

Un sitio web estático es aquel que no utiliza bases de datos, scripts PHP ni ningún otro programa. Piense en un sitio web simple que solo tiene páginas HTML e imágenes. Joe y su almacén representan las partes de este sencillo sitio web de la siguiente manera:

  • El almacén es el servidor físico.
  • Joe es el software del servidor web, por ejemplo, Apache
  • Las piezas de automóviles son los archivos que componen un sitio web, por ejemplo, imágenes y archivos HTML.

El procedimiento para servir este sitio simple es:

  1. Un navegador solicita una página web de Apache que se ejecuta en el servidor.
  2. Apache lee el primer archivo del disco y lo envía al navegador.
  3. Apache lee el segundo archivo del disco y lo envía al navegador.
  4. Y así sucesivamente hasta que haya recogido todo.
  5. El navegador muestra la página web completa.

Esta configuración funciona bien para sitios web pequeños pero falla rápidamente bajo presión.

Joe se pone ocupado: el almacenamiento en caché salva el día

2 - Full-Page Caching - The Need For Speed -

El sistema de Joe funciona bien hasta que comienza a estar ocupado. De hecho, está tan ocupado que pasa la mayor parte de su tiempo caminando desde el mostrador hasta el almacén y no puede mantenerse al día con todos los nuevos clientes.

Joe podría comprar un almacén adicional y contratar a otra persona para que trabaje allí y satisfaga la demanda adicional. Pero esto es costoso y no maximiza los recursos que ya tiene. En cambio, Joe piensa en cómo podría hacer que su proceso sea más eficiente en el almacén que tiene.

Joe se da cuenta de que el 90 % de las piezas que busca para los clientes son una de solo 10. Por lo tanto, decide guardar esas 10 piezas debajo del mostrador donde pueda tomarlas de inmediato cuando alguien las solicite. Ahora puede atender la mayoría de las solicitudes de los clientes directamente desde el mostrador sin tener que ir al almacén. Esto es mucho más rápido.

El almacenamiento en caché hace algo muy similar en un servidor web. Al igual que el regreso de Joe al almacén, la acción más lenta cuando se entregan archivos estáticos es cargar el archivo desde el dispositivo de almacenamiento. Lo que hace el almacenamiento en caché es mantener los archivos solicitados con más frecuencia en la RAM, donde se puede acceder a ellos miles de veces más rápido que leerlos desde el almacenamiento.

Este tipo de almacenamiento en caché funciona muy bien para imágenes y otros archivos estáticos, pero WordPress es un sitio web dinámico con scripts PHP y base de datos.

Introduzca el almacenamiento en caché de página completa.

La vida de Joe se complica: PHP, bases de datos y almacenamiento en caché

joe - Full-Page Caching - The Need For Speed -

Se abre un nuevo taller de Toyota en la misma ciudad que Joe y usan a Joe para suministrar las piezas de repuesto. Esto es excelente para Joe, excepto por un problema, Toyota solo pide piezas por su número de pieza de Toyota. Le dan a Joe un catálogo enorme para que pueda buscar los números de pieza de Toyota y compararlos con las piezas en su almacén cada vez que recibe un pedido de ellos.

Pero esto hace que Joe sea más lento de nuevo.

Cada vez que tiene que buscar la pieza de Toyota en el catálogo, le toma mucho tiempo. Incluso si es una de las piezas debajo del mostrador, no puede simplemente alcanzarla porque primero tiene que buscar el número de pieza de Toyota en el catálogo. Su antiguo sistema de mantener las 10 piezas más solicitadas debajo del mostrador todavía está ayudando, pero las búsquedas en el nuevo catálogo ahora son el gran cuello de botella.

Joe vuelve a pensar en esto y encuentra una solución. Se da cuenta de que la mayoría de los pedidos de Toyota son de un pequeño grupo. Así que escribe una hoja de trucos con los números de pieza de Toyota más comunes y sus piezas correspondientes y la pega en la encimera.

Ahora no necesita usar el catálogo para la mayoría de los pedidos de Toyota, puede echar un vistazo a la hoja de trucos y convertir el número de pieza de Toyota casi instantáneamente en una pieza que puede buscar.

Los sitios de WordPress tienen un problema similar al de Joe. WordPress construye cada página web cuando lo solicita el navegador. Las páginas HTML que carga su navegador no existen hasta que se las pide a WordPress.

Así es como WordPress crea una página de su sitio:

  1. Un navegador solicita una página web de WordPress.
  2. Un script PHP acepta la solicitud y consulta la base de datos para lo que necesita para construir la página.
  3. La base de datos busca y devuelve toda la información al proceso de PHP.
  4. El script PHP construye la página con esa información y la envía al navegador.

Esto es mucho trabajo y es la razón por la que los sitios web de WordPress sin caché necesitan muchas veces más recursos informáticos que los sitios web estáticos.

Al igual que Joe, su sitio de WordPress recibe solicitudes de las mismas páginas con mucha frecuencia, como la página de destino de su sitio, ya que esta página se sirve cada vez que llega un nuevo visitante. En una configuración sin caché, WordPress tiene que procesar esta solicitud con scripts PHP y realizar consultas a la base de datos para cada visitante, aunque crea exactamente la misma página cada vez.

Esto genera una gran cantidad de trabajo duplicado.

El almacenamiento en caché de página completa resuelve este problema. Se da cuenta de que una determinada solicitud y la página que se genera son siempre las mismas, por lo que almacena en caché una copia de la página en la memoria RAM. También mantiene una hoja de trucos de las solicitudes que crearon esas páginas, de modo que cuando un visitante solicita una página que generó antes, la sirve directamente desde la RAM en lugar de volver a crearla.

Esto reduce significativamente la carga de trabajo del servidor web al pasar por alto muchos procesos de PHP y búsquedas en bases de datos y al servir páginas generadas previamente directamente desde la RAM. Esto puede brindarle un sitio web dinámico de WordPress que es casi tan eficiente como un sitio web estático.

El almacenamiento en caché y el almacenamiento en caché de página completa son tecnologías excelentes que aprovechan los recursos de su servidor web para maximizar la eficiencia de su servidor web y brindarle un sitio de WordPress ágil.