Saltar al contenido
Meeko
Escribe para buscar en las guías y en la referencia de la API. Ábrela desde cualquier página con / o Ctrl K; muévete con las flechas y entra con Intro.
Empezar

Contenidos

En esta página

PageCache

interfaz Desde 1.7.0

Caché HTTP de una página que se renderiza en el servidor (definePage({ cache })). Sólo se aplica en producción, a peticiones GET y HEAD sin sesión: una petición con la cookie de sesión, o una respuesta que pone una cookie, sale como siempre, con no-store.

ts
import type { PageCache } from "@meekojs/meeko/framework";

Código fuente src/app/definitions/define-page.ts:249

Declaración #

ts
interface PageCache<P extends PageSchema | undefined = undefined, S extends PageSchema | undefined = undefined, C = unknown> {
	readonly etag?: (args: PageCacheContext<P, S, C>) => string | number | undefined | Promise<string | number | undefined>
	readonly maxAge?: number
	readonly staleWhileRevalidate?: number
	readonly memory?: boolean | PageMemoryCache
}

Parámetros de tipo #

P extends PageSchema | undefined = undefined

Schema de params, o undefined.

S extends PageSchema | undefined = undefined

Schema de search, o undefined.

C = unknown

Tipo del contexto de la petición.

Ejemplo #

ts
import { definePage } from "@meekojs/meeko/framework";

export const route = definePage({
  cache: { etag: ({ params }) => docs.versionOf(params.slug), maxAge: 60, memory: true },
  load: ({ params }) => docs.get(params.slug),
});

Propiedades #

etag #

propiedad sólo lectura opcional

readonly etag?: (args: PageCacheContext<P, S, C>) => string | number | undefined | Promise<string | number | undefined>

Versión del contenido de la página, que se calcula antes del loader y del render y debe ser barata (una fecha de modificación, un contador). Meeko la combina con el tema, el build y el tipo de respuesta (documento o payload) en un ETag débil; si coincide con If-None-Match, responde 304 sin ejecutar el loader ni el render. Debe cambiar con todo lo que cambia el HTML salvo el tema. undefined deja esta respuesta sin ETag.

maxAge #

propiedad sólo lectura opcional

readonly maxAge?: number

Segundos que el navegador o una CDN pueden servir la copia sin preguntar (max-age). Por defecto, 0.

staleWhileRevalidate #

propiedad sólo lectura opcional

readonly staleWhileRevalidate?: number

Segundos que pueden servir una copia caducada mientras la revalidan (stale-while-revalidate).

memory #

propiedad sólo lectura opcional

readonly memory?: boolean | PageMemoryCache

Guarda en la memoria del proceso el HTML y el payload renderizados, por URL, tema y ETag, y los sirve sin loader ni render mientras etag devuelva lo mismo. Necesita etag. No se aplica a render: "stream", que sólo usa el ETag.

Véase también #

¿Te sirvió esta página?

Añadir un comentario

Se envía al elegir «Sí» o «No». Solo se guardan la página, tu respuesta y el comentario: ni cookies ni datos tuyos.

0 de 2000 caracteres

Editar en GitHub: packages/meeko/src/app/definitions/define-page.ts