Hola @angel_96,
Vamos a abordar tus problemas con la caché en PrestaShop 8.2.8.
1. Problema de Redis ('Class Redis not found'):
Como bien señala @martabcn, este error indica que la extensión PHP ext-redis no está cargada o disponible para el intérprete de PHP que utiliza PrestaShop. Aunque un php -m en la línea de comandos pueda mostrarla, es crucial que esté activa para el entorno web. Debes:
- Verificar
phpinfo(): Crea un archivo info.php con <?php phpinfo(); ?> en la raíz de tu tienda y busca la sección 'redis'. Si no aparece, la extensión no está activa para tu web.
- Configuración del Servidor: Asegúrate de que el módulo
ext-redis esté habilitado en el php.ini correspondiente a tu versión de PHP y que el servicio Redis esté corriendo y accesible en el host y puerto especificados (normalmente 127.0.0.1:6379).
- Conexión por Socket vs. TCP/IP: Si Redis está en el mismo servidor, la conexión por socket (
/var/run/redis/redis.sock) suele ser más eficiente que por TCP/IP (127.0.0.1:6379). PrestaShop te permite configurar esto en Parámetros Avanzados > Rendimiento. Si usas socket, asegúrate de que la ruta sea correcta y que los permisos permitan al usuario del servidor web acceder a él.
PrestaShop maneja la configuración de Redis internamente una vez que la extensión está cargada y el servicio activo. El código que compartiste fallará si la clase Redis no existe. Una implementación más robusta para un módulo o un chequeo custom sería así:
// Ejemplo de cómo PrestaShop gestiona la conexión a Redis internamente
// (no para modificar el core, sino para entender la lógica)
if (extension_loaded('redis')) {
try {
$redis = new \Redis();
// Los parámetros _PS_CACHE_REDIS_SERVER_, _PS_CACHE_REDIS_PORT_ etc.
// se definen automáticamente por PrestaShop desde el Back Office.
$host = defined('_PS_CACHE_REDIS_SERVER_') ? _PS_CACHE_REDIS_SERVER_ : '127.0.0.1';
$port = defined('_PS_CACHE_REDIS_PORT_') ? _PS_CACHE_REDIS_PORT_ : 6379;
$timeout = 1; // Un timeout bajo evita bloqueos si Redis no responde
Este código muestra cómo una conexión a Redis debería ser tratada con robustez, comprobando primero la extensión y luego manejando posibles fallos de conexión. La clave es que la extensión esté cargada en tu php.ini y el servidor Redis sea accesible.
2. Problema de la compresión CCC (JavaScript):
La compresión CCC, especialmente la de JavaScript, puede ser muy agresiva. Si un script tiene errores de sintaxis o depende de un orden de carga muy específico que CCC altera al combinar y minificar, se romperá. Para solucionarlo:
- Desactiva la combinación JS: Ve a Parámetros Avanzados > Rendimiento y desactiva solo la opción "Combinación de JavaScript". Manten las de CSS si quieres. Si esto resuelve el problema, significa que tus scripts de terceros no son compatibles con la combinación. Deberías contactar al desarrollador del módulo o buscar una alternativa.
- Consola del navegador: Abre la consola de desarrollador de tu navegador (F12) y revisa la pestaña 'Console' para ver errores de JavaScript específicos después de que CCC haya actuado. Esto te dará pistas sobre qué script o qué línea está fallando.
Espero que esto te ayude a diagnosticar y solucionar ambos problemas.