Caché estático: qué es y cómo funciona

Publicado: 2022-06-30

Las estrategias de almacenamiento en caché son complicadas, por lo que nuestro Gerente de soporte, Ryan Belisle, se tomó un tiempo para explicar una forma de usar el almacenamiento en caché estático para ofrecer un sitio más rápido.

Sigue leyendo para aprender:

  • ¿Qué es el contenido estático de caché?
  • Beneficios de la caché estática.
  • Limitaciones del almacenamiento en caché estático.
  • Cómo implementar el almacenamiento en caché estático.
  • Cómo deshabilitar el almacenamiento en caché estático.

En el comercio electrónico, pocas cosas son más miserables que pagar por una campaña promocional y verla brillar, solo para ver que su sitio colapsa y se quema durante lo que debería ser su mejor momento. A veces, las promociones superan sus expectativas y sus medidas proactivas no son suficientes. ¿Entonces que?

Una táctica para obtener más rendimiento de su sitio en el último minuto es un método llamado almacenamiento en caché estático.

¡Aviso! No recomendamos adoptar un enfoque de última hora para hacer frente a los picos previstos en el tráfico web. Esto es para cuando ya haya aplicado las mejores prácticas para optimizar su infraestructura o aplicación, y sus resultados de marketing superen cualquier expectativa.

¿Qué es el contenido estático de caché?

Si bien hay muchas formas de almacenamiento en caché disponibles, el almacenamiento en caché estático es un método para convertir la página generada por la solicitud de un usuario en un documento HTML para atender cualquier solicitud posterior a esa misma página.

En lugar de que el servidor interprete el código del sitio, consulte la base de datos y devuelva un documento HTML al cliente y finalmente cargue la página, el almacenamiento en caché estático guarda un solo resultado de los dos primeros pasos y proporciona ese documento a cualquier otra persona que realice la solicitud. .

Beneficios del almacenamiento en caché estático

Si bien el almacenamiento en caché básico y estático puede tener un efecto profundo, específicamente en las siguientes áreas:

  • Reduzca los gastos generales : en lugar de tener que generar procesos PHP para manejar las solicitudes a las páginas del sitio, el servidor web solo enviará el documento HTML directamente a la solicitud en la página almacenada en caché estática.
  • Proporcione una "página de destino" para todo el tráfico de clics : en lugar de gastar recursos para cualquier persona que visite su página de inicio o siga un enlace a una URL específica, esto proporciona la página en caché de forma predeterminada sin interferir con el funcionamiento normal de otras páginas en el sitio .

Limitaciones del almacenamiento en caché estático

Sin embargo, quiero señalar que el almacenamiento en caché estático tiene limitaciones y, en general, solo debe usarse como una solución temporal. Tenga en cuenta:

  • Un caché estático es solo eso: estático. Cualquier cambio realizado en el sitio no se reflejará en las páginas almacenadas en caché de esta manera.
  • La información como "artículos en el carrito" u otros datos almacenados en los archivos de sesión de sus clientes no funcionarán en estas páginas.

Cómo implementar el almacenamiento en caché estático

Si bien hay algunas formas diferentes de implementar el almacenamiento en caché estático, estos son los pasos básicos para hacerlo manualmente:

1. Inicie sesión en su servidor con SSH.

2. Cree un directorio separado en su webroot para almacenar los documentos HTML utilizados en el caché estático.

3. Usando cURL o Wget, realice solicitudes a las páginas de destino y guárdelas en el directorio bajo sus respectivos nombres URI (índice, productos, etc.)

4. Agregue reescrituras en la parte superior de su archivo .htaccess para redirigir las solicitudes a los archivos de caché estáticos, como los siguientes:

[código]
RewriteCond %{REQUEST_URI} ^/?example_category$ [NC]
RewriteRule .* https://www.domain.tld/static/example_category.html [R=302,L]
[/código]

Alternativamente, también podría escribir un script para manejar este proceso. El siguiente ejemplo le permite crear un archivo con una URL separada en cada línea. Luego se leerán estas URL para generar su caché estática:

[lenguaje de código = "bash"]
#!/bin/bash
# Validación de argumentos básicos
si [ “$#” -ne 2 ]; después
echo -e “Debe pasar dos argumentos al script.\n\nUso: ./nexcess_static_cache_helper.sh dominio url_list_file\n”
salida 1
fi
# Obtenga algunos datos sobre el dominio
dominio=$1
paginas_archivo=$2
# Crear directorio para páginas estáticas en el directorio actual
cache_dir=./static_cache
si ! [[ -d $dir_caché ]]; después
mkdir $cache_dir
fi
# Descargar páginas estáticas en archivos HTML
URL_list=$(cat $paginas_archivo)
para URL en $URL_list; hacer
request_uri=$(echo $URL | cortar -d/ -f 4-)
if [[ -z “$request_uri” ]]; después
cache_page_name=”índice”
request_uri=”/”
más
cache_page_name=$(echo $request_uri | perl -pe 's,/|\.,_,g')
fi
wget -q $URL -O $cache_dir/$cache_page_name.html
echo “$request_uri $cache_page_name” >> $HOME/temp_url.file
hecho
# Formatear un bloque para el htaccess
eco -e “########”
echo -e “# INICIO: Reescrituras de URL de caché estática generadas el $(fecha)”
eco -e “########”
echo -e “Motor de reescritura activado”
cat $HOME/temp_url.archivo | mientras lee la página uri; hacer
echo “Condición de reescritura %{REQUEST_URI} ^/?${uri}$ [NC]\n”
echo “RewriteRule .* https://www.${domain}/static_cache/$page [R=302,L]\n”
hecho
eco -e “######”
echo -e “# FIN: Reescrituras de URL de caché estática generadas el $(fecha)”
eco -e “######”
rm $HOME/temp_url.archivo
[/código]

Para usar el script anterior:

1. Navegue a la raíz web de su sitio, luego cree un archivo llamado cache_list.txt, o lo que prefiera.

2. Abra el archivo. Agregue la URL para cada página que deba almacenarse en caché estática, usando una nueva línea para cada entrada de URL. Esto debería parecerse a lo siguiente:

[código]
https://www.ejemplo.com/
https://www.ejemplo.com/venta
https://www.ejemplo.com/productos
[/código]

Guarde el archivo, luego cree un archivo con el script anterior y guárdelo como nexcess_static_cache_helper.sh , o el nombre que prefiera.

Hacer el archivo ejecutable:
[código]chmod +x nexcess_static_cache_helper.sh[/código]

Cuando esté listo, ejecute el script, pero reemplace el uso de su propio nombre de archivo y nombre de dominio real:
[código]./nexcess_static_cache_helper.sh ejemplo.com cache_list.txt[/código]

Esto creará un directorio static_cache debajo de su webroot que contiene los documentos HTML que se utilizarán para el caché estático. Además, su terminal mostrará una salida similar a:
[código]
########
# INICIO: reescrituras de URL de caché estática generadas el lunes 18 de septiembre a las 15:49:11 EDT de 2017
########
Motor de reescritura encendido
Reescribir Cond %{REQUEST_URI} ^/?/$ [NC]\n
RewriteRule .* https://www.example.com/static_cache/index [R=302,L]\n
RewriteCond %{REQUEST_URI} ^/?sale$ [NC]\n
RewriteRule .* https://www.example.com/static_cache/sale [R=302,L]\n
RewriteCond %{REQUEST_URI} ^/?productos$ [NC]\n
RewriteRule .* https://www.example.com/static_cache/products [R=302,L]\n
######
# FIN: reescrituras de URL de caché estática generadas el lunes 18 de septiembre a las 15:49:11 EDT de 2017
######
[/código]

Copie el bloque anterior y péguelo en la parte superior de su archivo .htaccess para el sitio, que generalmente debería estar en su directorio actual.

El caché estático ahora debería estar habilitado. Con el espíritu de una buena limpieza, elimine los archivos que generamos en los pasos anteriores:
[código]rm nexcess_static_cache_helper.sh cache_list.txt[/código]

Cómo deshabilitar el almacenamiento en caché estático

Para deshabilitar el almacenamiento en caché estático, elimine el bloque de código colocado dentro del archivo .htaccess.

Además, si necesita volver a generar los archivos, ejecute el script nuevamente y reemplazará los documentos HTML con versiones más nuevas. Recomendaría reemplazar el bloque de código .htaccess también, solo para actualizar la marca de tiempo para referencia futura.

ahora ya sabes

Como se indicó anteriormente, este es solo un método temporal y no debe usarse como su estrategia principal de optimización del rendimiento. Para soluciones a largo plazo, consulte nuestra guía de optimización, implemente un CDN o comuníquese con nuestro equipo de soporte para explorar opciones adicionales, como alojar Magento, WooCommerce o WordPress.

O consulte los paquetes administrados de WordPress de Nexcess para ver cómo puede optimizar el rendimiento de su sitio.