Entiendo, quieres pre-generar el cache de todas las páginas de tu sitio WooCommerce para que estén cacheadas desde el inicio, en lugar de esperar a que los usuarios las visiten. A continuación, te propongo un enfoque para lograr esto utilizando el plugin LiteSpeed Cache y un script que puede recorrer todas las páginas necesarias para generar su cache.
Pasos para Pre-Generar el Cache
- Preparar el Plugin LiteSpeed Cache
- Asegúrate de que el plugin LiteSpeed Cache está instalado y configurado correctamente en tu sitio.
- Crear un Script para Recorrer las Páginas
- Puedes crear un script PHP que recorra todas las páginas de productos y entradas, y que haga una petición HTTP para cada una de ellas, generando así el cache.
Ejemplo de Script PHP
Este script se puede añadir a un archivo PHP y ejecutarlo manualmente desde el navegador o desde la línea de comandos.
<?php
require_once('wp-load.php'); // Asegúrate de que la ruta a wp-load.php es correcta
function fetch_and_cache_all_pages() {
// Obtener todas las páginas de productos
$product_args = array(
'post_type' => 'product',
'posts_per_page' => -1,
);
$products = get_posts($product_args);
foreach ($products as $product) {
$url = get_permalink($product->ID);
wp_remote_get($url); // Hacer petición para generar cache
echo "Cache generated for: $url\n";
}
// Obtener todas las entradas
$post_args = array(
'post_type' => 'post',
'posts_per_page' => -1,
);
$posts = get_posts($post_args);
foreach ($posts as $post) {
$url = get_permalink($post->ID);
wp_remote_get($url); // Hacer petición para generar cache
echo "Cache generated for: $url\n";
}
// Obtener otras páginas necesarias (categorías, páginas estáticas, etc.)
$page_args = array(
'post_type' => 'page',
'posts_per_page' => -1,
);
$pages = get_posts($page_args);
foreach ($pages as $page) {
$url = get_permalink($page->ID);
wp_remote_get($url); // Hacer petición para generar cache
echo "Cache generated for: $url\n";
}
}
fetch_and_cache_all_pages();
?>
Ejecución del Script
- Sube el Script: Sube este script a tu servidor en una ubicación segura. Por ejemplo, podrías llamarlo
generate_cache.php
y colocarlo en el directorio raíz de WordPress. - Ejecútalo: Accede al script desde tu navegador (
http://tusitio.com/generate_cache.php
) o desde la línea de comandos usandophp generate_cache.php
.
Consideraciones de Seguridad
- Acceso: Asegúrate de proteger el acceso a este script, ya sea eliminándolo después de la ejecución o restringiendo el acceso a través de un archivo
.htaccess
o reglas de firewall. - Recursos del Servidor: Ten en cuenta que ejecutar este script puede consumir recursos significativos del servidor, especialmente si tienes muchas páginas y productos. Considera ejecutarlo durante un período de baja actividad del sitio.
Automatización
Si deseas automatizar este proceso, puedes configurar un cron job en tu servidor para ejecutar el script a intervalos regulares. Aquí hay un ejemplo de cómo hacerlo en un servidor Unix/Linux:
- Editar Crontab: Abre el crontab con el comando
crontab -e
. - Añadir el Cron Job: Añade la línea para ejecutar el script a la hora deseada. Por ejemplo, para ejecutarlo cada noche a las 2 AM:
bash 0 2 * * * /usr/bin/php /ruta/a/tu/sitio/generate_cache.php
Con estos pasos, puedes asegurarte de que todas las páginas de tu tienda WooCommerce están cacheadas desde el inicio, mejorando la velocidad y la experiencia del usuario en tu sitio.
Es una buena idea limitar el número de páginas que se cachean en cada intervalo para evitar el consumo excesivo de recursos del servidor. Puedes ajustar la función PHP para que procese un número limitado de páginas por intervalo y luego se autoejecute nuevamente hasta completar el proceso. Esto se puede lograr usando un sistema de colas en conjunto con cron jobs.
A continuación, te presento una implementación de este enfoque.
Ajustar el Script para Procesar Páginas en Intervalos
- Crear el Script de Cache por Lotes:
<?php
require_once('wp-load.php'); // Asegúrate de que la ruta a wp-load.php es correcta
define('CACHE_BATCH_SIZE', 10); // Número de páginas a cachear por intervalo
function cache_pages_batch() {
$batch_offset = get_option('cache_batch_offset', 0); // Obtener el offset actual
$all_pages = array_merge(
get_posts(array('post_type' => 'product', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'post', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'page', 'posts_per_page' => -1, 'fields' => 'ids'))
);
// Calcular el lote actual
$pages_to_cache = array_slice($all_pages, $batch_offset, CACHE_BATCH_SIZE);
foreach ($pages_to_cache as $page_id) {
$url = get_permalink($page_id);
wp_remote_get($url); // Hacer petición para generar cache
echo "Cache generated for: $url\n";
}
// Actualizar el offset
$new_offset = $batch_offset + CACHE_BATCH_SIZE;
if ($new_offset >= count($all_pages)) {
$new_offset = 0; // Reiniciar el proceso si hemos alcanzado el final
}
update_option('cache_batch_offset', $new_offset);
}
// Ejecutar la función de cache
cache_pages_batch();
?>
- Configurar el Cron Job:
Para automatizar la ejecución del script en intervalos regulares, debes configurar un cron job en tu servidor. Aquí hay un ejemplo de cómo hacerlo en un servidor Unix/Linux:
- Editar Crontab: Abre el crontab con el comando
crontab -e
. - Añadir el Cron Job: Añade la línea para ejecutar el script cada minuto: «`bash
- * * * * /usr/bin/php /ruta/a/tu/sitio/generate_cache_batch.php
«`
- * * * * /usr/bin/php /ruta/a/tu/sitio/generate_cache_batch.php
Explicación del Proceso
- Definición de Lote:
CACHE_BATCH_SIZE
define el número de páginas que se cachean en cada ejecución del script. - Offset: Se usa una opción de WordPress (
cache_batch_offset
) para almacenar el offset actual, asegurando que en cada ejecución del script se procesen diferentes páginas. - Ejecución en Intervalos: El cron job configura la ejecución del script cada minuto, cacheando 10 páginas por minuto hasta completar todas las páginas.
Consideraciones de Seguridad
- Acceso: Protege el acceso al script, restringiéndolo a través de reglas de servidor o eliminándolo después de completar el proceso.
- Monitoreo: Monitorea el uso de recursos del servidor durante la ejecución del script para asegurarte de que no cause problemas de rendimiento.
Con esta configuración, puedes cachear todas las páginas de tu sitio WooCommerce de manera eficiente y controlada, evitando sobrecargar tu servidor.
Sí, puedes colocar este script en el archivo functions.php
de tu tema o en un plugin personalizado. Al colocarlo en functions.php
, puedes utilizar un hook de WordPress para ejecutar el script de manera controlada, por ejemplo, utilizando el hook wp_loaded
para iniciarlo cuando el sitio se carga.
Aquí tienes un ejemplo de cómo ajustar el script para que se ejecute desde functions.php
y configure cron jobs para manejar la ejecución periódica:
Ajuste del Script para functions.php
// Definir el tamaño del lote
define('CACHE_BATCH_SIZE', 10);
// Función para cachear páginas por lotes
function cache_pages_batch() {
// Obtener el offset actual
$batch_offset = get_option('cache_batch_offset', 0);
// Obtener todas las páginas, entradas y productos
$all_pages = array_merge(
get_posts(array('post_type' => 'product', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'post', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'page', 'posts_per_page' => -1, 'fields' => 'ids'))
);
// Calcular el lote actual
$pages_to_cache = array_slice($all_pages, $batch_offset, CACHE_BATCH_SIZE);
foreach ($pages_to_cache as $page_id) {
$url = get_permalink($page_id);
wp_remote_get($url); // Hacer petición para generar cache
error_log("Cache generated for: $url");
}
// Actualizar el offset
$new_offset = $batch_offset + CACHE_BATCH_SIZE;
if ($new_offset >= count($all_pages)) {
$new_offset = 0; // Reiniciar el proceso si hemos alcanzado el final
}
update_option('cache_batch_offset', $new_offset);
}
// Programar el cron job para cachear páginas
if (!wp_next_scheduled('cache_pages_batch_hook')) {
wp_schedule_event(time(), 'minute', 'cache_pages_batch_hook');
}
// Hook para ejecutar la función de cache
add_action('cache_pages_batch_hook', 'cache_pages_batch');
// Desactivar el cron job al desactivar el tema (opcional)
function deactivate_cache_cron_job() {
$timestamp = wp_next_scheduled('cache_pages_batch_hook');
wp_unschedule_event($timestamp, 'cache_pages_batch_hook');
}
add_action('switch_theme', 'deactivate_cache_cron_job');
Explicación del Código
- Definición de Lote:
CACHE_BATCH_SIZE
define el número de páginas a cachear en cada ejecución. - Función
cache_pages_batch
: La función obtiene todas las páginas, entradas y productos, y procesa un lote de ellas en cada ejecución. - Programación del Cron Job:
wp_next_scheduled('cache_pages_batch_hook')
: Verifica si el evento ya está programado.wp_schedule_event(time(), 'minute', 'cache_pages_batch_hook')
: Programa la ejecución de la función cada minuto.
- Hook para Ejecutar la Función:
add_action('cache_pages_batch_hook', 'cache_pages_batch')
conecta el evento cron con la funcióncache_pages_batch
. - Desactivación del Cron Job al Desactivar el Tema (Opcional):
deactivate_cache_cron_job
: Función para desprogramar el evento cron cuando el tema se desactiva.add_action('switch_theme', 'deactivate_cache_cron_job')
: Conecta la desprogramación con el eventoswitch_theme
.
Implementación
- Agregar el Código a
functions.php
: Copia y pega el código anterior en el archivofunctions.php
de tu tema activo. - Monitoreo: Verifica los registros de errores de PHP (
error_log
) para asegurarte de que las páginas se están cacheando correctamente y monitorea el uso de recursos del servidor.
Este enfoque permite que el proceso de cacheo se realice de manera controlada y periódica, minimizando el impacto en el rendimiento del servidor y asegurando que todas las páginas estén cacheadas.
Claro, puedes tener el control sobre la generación de cache y programarla para que se ejecute a una hora determinada del día. A continuación, te proporciono un método para implementar esto utilizando functions.php
y un cron job que se puede activar manualmente o programar para ejecutarse a una hora específica.
Paso 1: Crear la Función de Cache por Lotes
Añade esta función a tu archivo functions.php
. Esta función manejará la generación de cache en lotes.
// Definir el tamaño del lote
define('CACHE_BATCH_SIZE', 10);
function cache_pages_batch() {
// Obtener el offset actual
$batch_offset = get_option('cache_batch_offset', 0);
// Obtener todas las páginas, entradas y productos
$all_pages = array_merge(
get_posts(array('post_type' => 'product', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'post', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'page', 'posts_per_page' => -1, 'fields' => 'ids'))
);
// Calcular el lote actual
$pages_to_cache = array_slice($all_pages, $batch_offset, CACHE_BATCH_SIZE);
foreach ($pages_to_cache as $page_id) {
$url = get_permalink($page_id);
wp_remote_get($url); // Hacer petición para generar cache
error_log("Cache generated for: $url");
}
// Actualizar el offset
$new_offset = $batch_offset + CACHE_BATCH_SIZE;
if ($new_offset >= count($all_pages)) {
$new_offset = 0; // Reiniciar el proceso si hemos alcanzado el final
}
update_option('cache_batch_offset', $new_offset);
}
Paso 2: Programar el Cron Job
Añade este código a tu archivo functions.php
para programar el cron job y controlarlo manualmente.
// Programar el cron job para cachear páginas
function schedule_cache_pages_batch() {
if (!wp_next_scheduled('cache_pages_batch_hook')) {
wp_schedule_event(time(), 'hourly', 'cache_pages_batch_hook');
}
}
// Hook para ejecutar la función de cache
add_action('cache_pages_batch_hook', 'cache_pages_batch');
// Función para activar manualmente el cron job
function activate_cache_pages_batch() {
// Ejecutar la función de cache inmediatamente
cache_pages_batch();
}
// Shortcode para activar el cache manualmente desde el navegador
add_shortcode('start_cache', 'activate_cache_pages_batch');
// Desactivar el cron job al desactivar el tema (opcional)
function deactivate_cache_cron_job() {
$timestamp = wp_next_scheduled('cache_pages_batch_hook');
wp_unschedule_event($timestamp, 'cache_pages_batch_hook');
}
add_action('switch_theme', 'deactivate_cache_cron_job');
Paso 3: Programar el Cron Job para una Hora Específica
Para programar el cron job a una hora específica del día (por ejemplo, cada día a las 2 AM), puedes utilizar el siguiente código:
// Programar el cron job para cachear páginas a una hora específica
function schedule_daily_cache_batch() {
if (!wp_next_scheduled('daily_cache_batch_hook')) {
$timestamp = strtotime('02:00:00'); // Hora específica (2 AM)
wp_schedule_event($timestamp, 'daily', 'daily_cache_batch_hook');
}
}
// Hook para ejecutar la función de cache
add_action('daily_cache_batch_hook', 'cache_pages_batch');
// Activar el cron job al activar el tema
add_action('wp', 'schedule_daily_cache_batch');
// Desactivar el cron job al desactivar el tema (opcional)
function deactivate_daily_cache_cron_job() {
$timestamp = wp_next_scheduled('daily_cache_batch_hook');
wp_unschedule_event($timestamp, 'daily_cache_batch_hook');
}
add_action('switch_theme', 'deactivate_daily_cache_cron_job');
Paso 4: Uso Manual del Shortcode
Para ejecutar manualmente el proceso de cacheo, puedes utilizar un shortcode en cualquier página o entrada de WordPress. Simplemente añade [start_cache]
en el contenido de una página o entrada, y cuando visites esa página, se iniciará el proceso de cacheo.
Explicación del Código
- Función
cache_pages_batch
: Maneja la generación de cache en lotes. - Cron Job Diario:
schedule_daily_cache_batch
: Programa el cron job para ejecutarse diariamente a las 2 AM.add_action('daily_cache_batch_hook', 'cache_pages_batch')
: Conecta el evento cron con la función de cacheo.add_action('wp', 'schedule_daily_cache_batch')
: Activa el cron job cuando se carga WordPress.
- Ejecución Manual:
activate_cache_pages_batch
: Función para iniciar manualmente el proceso de cacheo.add_shortcode('start_cache', 'activate_cache_pages_batch')
: Crea un shortcode para ejecutar el proceso manualmente.
- Desactivación del Cron Job: Opcionalmente, puedes desactivar el cron job cuando el tema se desactiva.
Con estos pasos, tienes un control completo sobre el proceso de cacheo y puedes programarlo para ejecutarse a una hora específica del día o iniciarlo manualmente cuando lo necesites.
Correcto, al colocar el shortcode [start_cache]
en cualquier página o entrada y cargar esa página, se iniciará la generación de caché para todos los contenidos de la web (en lotes de 10 páginas por ejecución) y no solo para la página donde se colocó el shortcode. Aquí te dejo una guía paso a paso completa para implementar esta funcionalidad:
Paso 1: Añadir la Función de Cache por Lotes en functions.php
// Definir el tamaño del lote
define('CACHE_BATCH_SIZE', 10);
function cache_pages_batch() {
// Obtener el offset actual
$batch_offset = get_option('cache_batch_offset', 0);
// Obtener todas las páginas, entradas y productos
$all_pages = array_merge(
get_posts(array('post_type' => 'product', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'post', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'page', 'posts_per_page' => -1, 'fields' => 'ids'))
);
// Calcular el lote actual
$pages_to_cache = array_slice($all_pages, $batch_offset, CACHE_BATCH_SIZE);
foreach ($pages_to_cache as $page_id) {
$url = get_permalink($page_id);
wp_remote_get($url); // Hacer petición para generar cache
error_log("Cache generated for: $url");
}
// Actualizar el offset
$new_offset = $batch_offset + CACHE_BATCH_SIZE;
if ($new_offset >= count($all_pages)) {
$new_offset = 0; // Reiniciar el proceso si hemos alcanzado el final
}
update_option('cache_batch_offset', $new_offset);
}
Paso 2: Programar el Cron Job y Añadir el Shortcode
Añade el siguiente código en functions.php
para programar el cron job y permitir la ejecución manual a través de un shortcode.
// Programar el cron job para cachear páginas
function schedule_cache_pages_batch() {
if (!wp_next_scheduled('cache_pages_batch_hook')) {
wp_schedule_event(time(), 'hourly', 'cache_pages_batch_hook');
}
}
// Hook para ejecutar la función de cache
add_action('cache_pages_batch_hook', 'cache_pages_batch');
// Función para activar manualmente el cron job
function activate_cache_pages_batch() {
// Ejecutar la función de cache inmediatamente
cache_pages_batch();
}
// Shortcode para activar el cache manualmente desde el navegador
add_shortcode('start_cache', 'activate_cache_pages_batch');
// Desactivar el cron job al desactivar el tema (opcional)
function deactivate_cache_cron_job() {
$timestamp = wp_next_scheduled('cache_pages_batch_hook');
wp_unschedule_event($timestamp, 'cache_pages_batch_hook');
}
add_action('switch_theme', 'deactivate_cache_cron_job');
Paso 3: Programar el Cron Job para una Hora Específica
Si deseas que el cache se genere automáticamente a una hora específica (por ejemplo, a las 2 AM cada día), puedes ajustar el cron job de la siguiente manera:
// Programar el cron job para cachear páginas a una hora específica
function schedule_daily_cache_batch() {
if (!wp_next_scheduled('daily_cache_batch_hook')) {
$timestamp = strtotime('02:00:00'); // Hora específica (2 AM)
wp_schedule_event($timestamp, 'daily', 'daily_cache_batch_hook');
}
}
// Hook para ejecutar la función de cache
add_action('daily_cache_batch_hook', 'cache_pages_batch');
// Activar el cron job al activar el tema
add_action('wp', 'schedule_daily_cache_batch');
// Desactivar el cron job al desactivar el tema (opcional)
function deactivate_daily_cache_cron_job() {
$timestamp = wp_next_scheduled('daily_cache_batch_hook');
wp_unschedule_event($timestamp, 'daily_cache_batch_hook');
}
add_action('switch_theme', 'deactivate_daily_cache_cron_job');
Paso 4: Uso del Shortcode
Para ejecutar manualmente el proceso de cacheo, puedes utilizar el shortcode [start_cache]
en cualquier página o entrada de WordPress. Simplemente añade el shortcode en el contenido de una página o entrada, y cuando visites esa página, se iniciará el proceso de cacheo.
[start_cache]
Resumen
- Función
cache_pages_batch
: Esta función maneja la generación de cache en lotes. - Cron Job Diario:
schedule_daily_cache_batch
: Programa el cron job para ejecutarse diariamente a las 2 AM.add_action('daily_cache_batch_hook', 'cache_pages_batch')
: Conecta el evento cron con la función de cacheo.add_action('wp', 'schedule_daily_cache_batch')
: Activa el cron job cuando se carga WordPress.
- Ejecución Manual:
activate_cache_pages_batch
: Función para iniciar manualmente el proceso de cacheo.add_shortcode('start_cache', 'activate_cache_pages_batch')
: Crea un shortcode para ejecutar el proceso manualmente.
- Desactivación del Cron Job: Opcionalmente, puedes desactivar el cron job cuando el tema se desactiva.
Con estos pasos, tienes control total sobre cuándo y cómo se generan las cachés de tus páginas, permitiendo tanto la programación automática a una hora específica como la ejecución manual cuando lo desees.
Para verificar si el shortcode para generar la caché está funcionando correctamente, puedes seguir estos pasos:
Paso 1: Añadir Mensajes de Registro (Logging)
Puedes añadir mensajes de registro en la función cache_pages_batch
para registrar las URLs que se están cacheando. Esto te permitirá verificar que el proceso de cacheo se está ejecutando.
phpCopiar código// Definir el tamaño del lote
define('CACHE_BATCH_SIZE', 10);
function cache_pages_batch() {
// Obtener el offset actual
$batch_offset = get_option('cache_batch_offset', 0);
// Obtener todas las páginas, entradas y productos
$all_pages = array_merge(
get_posts(array('post_type' => 'product', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'post', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'page', 'posts_per_page' => -1, 'fields' => 'ids'))
);
// Calcular el lote actual
$pages_to_cache = array_slice($all_pages, $batch_offset, CACHE_BATCH_SIZE);
foreach ($pages_to_cache as $page_id) {
$url = get_permalink($page_id);
wp_remote_get($url); // Hacer petición para generar cache
error_log("Cache generated for: $url"); // Registrar la URL cacheada
}
// Actualizar el offset
$new_offset = $batch_offset + CACHE_BATCH_SIZE;
if ($new_offset >= count($all_pages)) {
$new_offset = 0; // Reiniciar el proceso si hemos alcanzado el final
}
update_option('cache_batch_offset', $new_offset);
}
Paso 2: Verificar el Registro de Errores
Después de ejecutar el shortcode [start_cache]
en una página, verifica el registro de errores de PHP para asegurarte de que las páginas se están cacheando correctamente. Puedes encontrar el registro de errores en el archivo error_log
de tu servidor web, generalmente ubicado en el directorio raíz de tu servidor o en la carpeta de registros.
Paso 3: Añadir un Mensaje de Confirmación en la Página
Puedes modificar la función activate_cache_pages_batch
para que muestre un mensaje de confirmación en la página cuando el shortcode se ejecute.
phpCopiar códigofunction activate_cache_pages_batch() {
// Ejecutar la función de cache inmediatamente
cache_pages_batch();
return "Cache generation started.";
}
add_shortcode('start_cache', 'activate_cache_pages_batch');
Ahora, cuando añadas el shortcode [start_cache]
en una página y la visites, deberías ver el mensaje «Cache generation started.» en la página, indicando que el proceso se ha iniciado.
Paso 4: Verificar el Resultado en el Navegador
Para asegurarte de que el shortcode está funcionando, sigue estos pasos:
- Añadir el Shortcode: Añade
[start_cache]
en una página o entrada de WordPress. - Visitar la Página: Visita la página donde has añadido el shortcode.
- Verificar el Mensaje: Asegúrate de que el mensaje «Cache generation started.» aparece en la página.
- Comprobar el Registro de Errores: Revisa el archivo
error_log
para verificar que las URLs se están registrando, lo cual indica que las páginas están siendo cacheadas.
Paso 5: Verificar el Caché en el Plugin LiteSpeed Cache
Después de ejecutar el shortcode y generar el caché, puedes verificar en el panel de administración de LiteSpeed Cache para asegurarte de que las páginas se están cacheando correctamente.
- Ir a LiteSpeed Cache: Navega a LiteSpeed Cache en el panel de administración de WordPress.
- Verificar Páginas Cacheadas: Comprueba las páginas cacheadas en la sección correspondiente del plugin.
Siguiendo estos pasos, podrás verificar que el shortcode está funcionando correctamente y que las páginas de tu sitio se están cacheando según lo esperado.
Sí, puedes crear una página en el panel de control de WordPress para visualizar las URLs que han sido cacheadas correctamente. Para ello, puedes hacer uso de un menú personalizado en el administrador de WordPress y almacenar la información de las URLs cacheadas en las opciones de WordPress. A continuación, te muestro cómo hacerlo:
Paso 1: Mejorar la Función de Cache por Lotes para Almacenar URLs Cacheadas
Modifica la función cache_pages_batch
para almacenar las URLs cacheadas en una opción de WordPress.
define('CACHE_BATCH_SIZE', 10);
define('CACHE_MAX_EXECUTION_TIME', 30); // 30 segundos
function cache_pages_batch() {
$start_time = time(); // Registrar el tiempo de inicio
// Obtener el offset actual
$batch_offset = get_option('cache_batch_offset', 0);
$cached_urls = get_option('cached_urls', array());
// Obtener todas las páginas, entradas y productos
$all_pages = array_merge(
get_posts(array('post_type' => 'product', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'post', 'posts_per_page' => -1, 'fields' => 'ids')),
get_posts(array('post_type' => 'page', 'posts_per_page' => -1, 'fields' => 'ids'))
);
// Calcular el lote actual
$pages_to_cache = array_slice($all_pages, $batch_offset, CACHE_BATCH_SIZE);
$cached_count = 0;
foreach ($pages_to_cache as $page_id) {
if ((time() - $start_time) > CACHE_MAX_EXECUTION_TIME) {
// Si excede el tiempo máximo de ejecución, salir del bucle
break;
}
$url = get_permalink($page_id);
wp_remote_get($url); // Hacer petición para generar cache
error_log("Cache generated for: $url");
// Almacenar la URL en la lista de URLs cacheadas
$cached_urls[] = $url;
$cached_count++;
}
// Actualizar el offset
$new_offset = $batch_offset + $cached_count;
if ($new_offset >= count($all_pages)) {
$new_offset = 0; // Reiniciar el proceso si hemos alcanzado el final
}
update_option('cache_batch_offset', $new_offset);
update_option('cached_urls', $cached_urls); // Guardar las URLs cacheadas
// Registrar el progreso
error_log("Batch cached: $cached_count pages. New offset: $new_offset.");
}
Paso 2: Crear una Página en el Panel de Control para Ver las URLs Cacheadas
Añade el siguiente código a functions.php
para crear una página en el administrador de WordPress donde puedas ver las URLs cacheadas.
// Añadir un elemento de menú en el panel de control
function cache_urls_menu() {
add_menu_page(
'Cached URLs', // Título de la página
'Cached URLs', // Título del menú
'manage_options', // Capacidad requerida
'cached-urls', // Slug del menú
'display_cached_urls', // Función que muestra el contenido
'dashicons-schedule', // Icono del menú
20 // Posición del menú
);
}
add_action('admin_menu', 'cache_urls_menu');
// Función para mostrar las URLs cacheadas
function display_cached_urls() {
$cached_urls = get_option('cached_urls', array());
echo '<div class="wrap">';
echo '<h1>Cached URLs</h1>';
echo '<table class="wp-list-table widefat fixed striped">';
echo '<thead><tr><th>URL</th></tr></thead>';
echo '<tbody>';
foreach ($cached_urls as $url) {
echo '<tr><td>' . esc_url($url) . '</td></tr>';
}
echo '</tbody>';
echo '</table>';
echo '</div>';
}
Explicación del Código
- Función
cache_pages_batch
:- Almacena las URLs cacheadas en la opción
cached_urls
.
- Almacena las URLs cacheadas en la opción
- Menú Personalizado:
cache_urls_menu
: Añade un nuevo elemento de menú en el panel de control de WordPress.
- Función
display_cached_urls
:- Muestra las URLs cacheadas en una tabla dentro del panel de control de WordPress.
Paso 3: Verificar el Menú en el Panel de Control
- Acceder al Panel de Control: Inicia sesión en el panel de control de WordPress.
- Ver el Menú: Busca el menú «Cached URLs» en el menú principal de administración.
- Ver las URLs Cacheadas: Haz clic en «Cached URLs» para ver la lista de URLs que se han cacheado correctamente.
Paso 4: Opciones Adicionales de Control
Para asegurarte de que las opciones se gestionan correctamente, puedes añadir funciones para limpiar o reiniciar el progreso:
// Función para limpiar las URLs cacheadas
function clear_cached_urls() {
update_option('cached_urls', array());
}
// Añadir botón para limpiar las URLs cacheadas
function display_cached_urls() {
$cached_urls = get_option('cached_urls', array());
echo '<div class="wrap">';
echo '<h1>Cached URLs</h1>';
echo '<form method="post" action="">';
echo '<input type="hidden" name="clear_cache" value="1">';
echo '<input type="submit" class="button button-primary" value="Clear Cached URLs">';
echo '</form>';
if (isset($_POST['clear_cache']) && $_POST['clear_cache'] == 1) {
clear_cached_urls();
echo '<div class="updated"><p>Cached URLs cleared.</p></div>';
}
echo '<table class="wp-list-table widefat fixed striped">';
echo '<thead><tr><th>URL</th></tr></thead>';
echo '<tbody>';
foreach ($cached_urls as $url) {
echo '<tr><td>' . esc_url($url) . '</td></tr>';
}
echo '</tbody>';
echo '</table>';
echo '</div>';
}
Este código añade un formulario con un botón para limpiar las URLs cacheadas, proporcionando así un control adicional sobre el proceso de caché.
La ubicación donde se guarda la caché depende del sistema de caché que estés utilizando. En el caso de WordPress y LiteSpeed Cache, la caché se guarda en el servidor en directorios específicos gestionados por el plugin LiteSpeed Cache. Aquí te doy una visión general de dónde se pueden encontrar estos archivos y cómo se gestionan:
LiteSpeed Cache
LiteSpeed Cache guarda la caché en el servidor dentro del directorio de tu instalación de WordPress. Aquí están los pasos para localizar estos archivos:
- Directorio de Caché:
- LiteSpeed Cache guarda los archivos de caché en el directorio
wp-content/cache/litespeed/
.
- Estructura del Directorio:
- Dentro del directorio
litespeed
, encontrarás subdirectorios organizados de acuerdo a la estructura de tu sitio y las configuraciones específicas del plugin.
- Ejemplo de Ruta:
- Si tu sitio está instalado en
/var/www/html/mi-sitio
, la caché de LiteSpeed se encontraría en/var/www/html/mi-sitio/wp-content/cache/litespeed/
.
Verificar la Caché
Puedes verificar que los archivos de caché se están generando correctamente navegando a este directorio a través de FTP o utilizando el administrador de archivos de tu panel de control de alojamiento.
Administrar la Caché desde el Panel de Control
LiteSpeed Cache ofrece opciones para gestionar la caché directamente desde el panel de control de WordPress:
- Panel de Administración de LiteSpeed Cache:
- Navega a
LiteSpeed Cache
en el menú de administración de WordPress. - Aquí encontrarás opciones para purgar la caché, ver el estado de la caché, y ajustar configuraciones.
- Ver el Estado de la Caché:
- En el panel de LiteSpeed Cache, puedes ver información sobre la cantidad de archivos en caché y otra información relevante.
Funcionalidades Adicionales de Control
Para mejorar la gestión de la caché, puedes usar la API de LiteSpeed Cache o comandos específicos para purgar o actualizar la caché. Aquí tienes un ejemplo de cómo purgar la caché usando código PHP:
if (function_exists('litespeed_purge_all')) {
litespeed_purge_all();
error_log('LiteSpeed Cache purged.');
}
Puedes añadir este código a una función en functions.php
y llamarla cuando necesites purgar la caché.
Resumen
- Ubicación de la Caché:
wp-content/cache/litespeed/
. - Verificar Caché: Utiliza FTP o el administrador de archivos de tu hosting para verificar la existencia de los archivos de caché.
- Administrar Caché: Usa el panel de control de LiteSpeed Cache en WordPress para gestionar la caché.
- Control Adicional: Usa funciones PHP para purgar o actualizar la caché cuando sea necesario.
Espero que esto te ayude a entender dónde se guarda la caché y cómo gestionarla efectivamente. Si tienes alguna pregunta adicional o necesitas más detalles, no dudes en preguntar.
Saber más es tu mejor estrategia
Servicios para tiendas online Woocommerce
Servicios especializados para cubrir tu tienda online Woocommerce. Incidencias, reparaciones, optimización de velocidad, ajustes de seguridad, SEO, mantenimiento, nuevas integraciones.
¿Nos ponemos a trabajar en tu Tienda Online WooCommerce?
Rellena este formulario o escríbeme un email y explícame en que puedo ayudarte con tu tienda online WooCommerce.