Files
apps-registry/workloads/ecommerce/next.config.ts
T
devops ce929188ac fix(ecommerce): baja TTL de cache a 5min para /images/brand/*
El header de /images/:path* (7 dias, pensado para fotos de producto
que no cambian) tambien alcanzaba a los assets de marca (logo,
favicon), que si cambian con cada iteracion de identidad visual.

Confirmado en vivo contra shop.cruzcloud.net: Cloudflare seguia
sirviendo el logo de la iteracion anterior 'Navy & Coral'
(fill #122844/#D85A30) mas de 14h despues de que el pod ya corria
v1.0.185 con el logo 'Azul & Amarillo' (#0055B8/#FFC220) --
cf-cache-status: HIT, age: 51378s, last-modified anterior al redeploy.

No es un bug del logo.svg en si (el contenido del archivo ya era
correcto desde la sub-fase 1 de ADR 0008) sino de una politica de
cache compartida con assets que no deberian tener el mismo TTL.
2026-08-28 04:35:18 +00:00

66 lines
1.7 KiB
TypeScript

import type { NextConfig } from "next";
const nextConfig: NextConfig = {
output: "standalone",
poweredByHeader: false,
compress: true,
images: {
formats: ["image/avif", "image/webp"],
minimumCacheTTL: 604800,
deviceSizes: [360, 640, 768, 1024, 1280, 1536],
imageSizes: [64, 96, 160, 256, 384, 560],
remotePatterns: [
{
protocol: "https",
hostname: "media.cruzcloud.net",
pathname: "/ari-products/**",
},
{
protocol: "https",
hostname: "shop.cruzcloud.net",
pathname: "/images/products/**",
},
{
protocol: "https",
hostname: "shop.cruzcloud.net",
pathname: "/images/thumbnails/**",
},
],
},
async headers() {
return [
{
source: "/images/:path*",
headers: [
{
key: "Cache-Control",
value:
"public, max-age=604800, stale-while-revalidate=2592000",
},
],
},
// Assets de marca (logo, favicon) cambian con cada iteracion de
// identidad visual, a diferencia de las fotos de producto -- el
// cache de 7 dias de la regla anterior dejaba servido el logo
// viejo en Cloudflare/navegador durante toda una semana despues de
// cada deploy (ver ADR 0008). Next.js aplica el ultimo header que
// matchee un mismo path, asi que esta regla, al ir despues,
// sobreescribe el Cache-Control solo para /images/brand/*.
{
source: "/images/brand/:path*",
headers: [
{
key: "Cache-Control",
value: "public, max-age=300, must-revalidate",
},
],
},
];
},
};
export default nextConfig;