Home Projects Portfolio Dashboard Export PDF Log in

Optimizando el rendimiento: Implementación de caché de respuestas en el proyecto devlog-ist/landing

En el proyecto devlog-ist/landing, nos enfrentamos recientemente a un desafío de rendimiento provocado por un alto tráfico de bots que saturaban nuestros recursos al indexar filtros de etiquetas en las páginas de portafolio de nuestros usuarios.

Para mitigar este problema, implementamos una estrategia de almacenamiento en caché de respuestas mediante un middleware personalizado, actuando como una segunda línea de defensa detrás de nuestras reglas de caché en la red de distribución de contenido (CDN).

La solución: Middleware de Caché

Creamos el middleware CachePortfolioResponse, diseñado para interceptar solicitudes de usuarios anónimos y servir respuestas precomputadas con un tiempo de vida (TTL) de 60 segundos. La clave de caché se construye de forma dinámica basándose en el identificador del inquilino, la ruta, los parámetros de consulta ordenados y la configuración regional.

public function handle($request, Closure $next)
{
    if ($request->user() || !$request->isMethod('GET')) {
        return $next($request);
    }

    $cacheKey = $this->generateCacheKey($request);

    return Cache::remember($cacheKey, 60, function () use ($request, $next) {
        $response = $next($request);
        $response->headers->remove('Set-Cookie');
        return $response;
    });
}

Consideraciones clave

  1. Integridad de sesión: Nos aseguramos de eliminar el encabezado Set-Cookie antes de almacenar la respuesta. Esto evita que la información de sesión de un usuario se filtre y se replique en las cachés de otros usuarios.
  2. Seguridad: La implementación detecta usuarios autenticados, quienes omiten completamente la caché para garantizar siempre contenido en tiempo real.
  3. Analíticas: El middleware se posiciona estratégicamente para que los eventos de seguimiento de visitas sigan ejecutándose incluso cuando la respuesta es servida desde la caché.

Esta implementación asegura una experiencia mucho más rápida para los visitantes finales y protege nuestros servidores contra picos de carga innecesarios.

Optimizando el rendimiento: Implementación de caché de respuestas en el proyecto devlog-ist/landing
Gerardo Ruiz

Gerardo Ruiz

Author

Share: