feat(ecommerce): revalidar el storefront al instante tras editar precios
Antes el precio actualizado en Medusa tardaba hasta ~60s (o más, con
varias réplicas del frontend sin cache handler compartido) en verse en
el front, por el revalidate:60 del fetch a /store/products.
Ahora:
- Nueva ruta app/api/revalidate en el storefront que llama a
revalidateTag("medusa-products") al recibir un POST autenticado con
el header x-revalidate-secret.
- Nuevo subscriber en el backend Medusa (product.updated,
product-variant.updated/created/deleted) que llama a esa ruta usando
STOREFRONT_URL (ya existe en commerce-config) y un REVALIDATE_SECRET
compartido entre ambos servicios.
- secrets.template.yaml documenta la nueva clave REVALIDATE_SECRET en
commerce-secrets y commerce-storefront (mismo valor en ambos).
Requiere reaplicar commerce-secrets y commerce-storefront con el script
actualizado en el repo scripts (fix/revalidate-secret-scripts) para que
el REVALIDATE_SECRET exista en el cluster.
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
import { revalidateTag } from "next/cache";
|
||||
|
||||
export async function POST(request: Request) {
|
||||
const secret = request.headers.get("x-revalidate-secret");
|
||||
|
||||
if (!secret || secret !== process.env.REVALIDATE_SECRET) {
|
||||
return Response.json({ message: "Invalid secret" }, { status: 401 });
|
||||
}
|
||||
|
||||
revalidateTag("medusa-products");
|
||||
|
||||
return Response.json({ revalidated: true, tag: "medusa-products" }, { status: 200 });
|
||||
}
|
||||
@@ -22,6 +22,11 @@ stringData:
|
||||
|
||||
JWT_SECRET: CAMBIAR
|
||||
COOKIE_SECRET: CAMBIAR
|
||||
|
||||
# Debe ser el MISMO valor que REVALIDATE_SECRET en el Secret
|
||||
# commerce-storefront: el subscriber de Medusa lo envía como header
|
||||
# x-revalidate-secret al invocar POST /api/revalidate en el storefront.
|
||||
REVALIDATE_SECRET: CAMBIAR
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
@@ -30,3 +35,6 @@ metadata:
|
||||
type: Opaque
|
||||
stringData:
|
||||
MEDUSA_PUBLISHABLE_KEY: pk_CAMBIAR_DESPUES_DE_CREARLA_EN_MEDUSA
|
||||
|
||||
# Mismo valor que REVALIDATE_SECRET en commerce-secrets.
|
||||
REVALIDATE_SECRET: CAMBIAR
|
||||
|
||||
Reference in New Issue
Block a user