Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

135
Vistas
La API de caché de CloudFlare Worker no almacena los resultados de recuperación

Acabo de pasar un día entero en este simple trabajador y no he llegado a ninguna parte.

He seguido los ejemplos de Cache API en el sitio de CloudFlare y también he rastreado las publicaciones de StackOverflow, pero todavía no estoy en ninguna parte.

Esta publicación ( Problema con la API de caché de trabajo de Cloudflares ) parecía ser lo que necesitaba, pero no ayudó.

Esencialmente, todo lo que intento hacer es almacenar en caché ciertas páginas durante un período de tiempo utilizando la API de caché. Eventualmente tendré que hacer cachés específicos por código de país (es por eso que estoy usando trabajadores y no reglas de página), pero por ahora todo lo que intento hacer es hacer que la API de caché básica funcione como prueba.

Aquí está el código, es básicamente el mismo código del ejemplo en su sitio

manejador.ts

 export async function handleRequest(event: FetchEvent): Promise<Response> { const { request } = event const cacheUrl = new URL(request.url) const cacheKey = new Request(cacheUrl.toString(), request) const cache = caches.default let response = await cache.match(cacheKey) if (!response) { console.log('NO CACHE MATCH') // If not in cache, get it from origin response = await fetch(request) // Must use Response constructor to inherit all of response's fields response = new Response(response.body, response) response.headers.append('Cache-Control', 's-maxage=10') event.waitUntil(cache.put(cacheKey, response.clone())) } return response }

índice.ts

 import { handleRequest } from './handler' addEventListener('fetch', (event) => { event.respondWith(handleRequest(event)) })

Soy consciente de que no puede usar la API de caché en el dominio workers.dev, por lo que implementé el trabajador en un dominio personalizado para que tenga acceso a la API.

Yo he tratado

  • Cerrar sesión de la respuesta de cache.put - nada
  • Cambiar la clave de caché de un objeto de respuesta a una URL (cadena) - nada
  • Directamente esperando el cache.put - nada
  • Usando un espacio de nombres de caché personalizado (así que espere caches.open('pages')) - nada

Básicamente, solo obtengo errores de caché y la solicitud se envía a mi servidor web. Puedo ver el registro de la consola, todo funciona bien, simplemente nunca almacena en caché o nunca encuentra el caché.

Es increíblemente difícil de depurar y casi no se devuelve información de estos métodos. cache.put no devuelve nada, cache.match no devuelve nada. Bien podrían ser objeto de burla.

Estoy usando wrangler para compilar/publicar, y todo funciona bien allí.

¿Alguien puede ayudar aquí?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Creo que su código parece bastante sencillo/tiene sentido. Entonces, me parece que la siguiente posibilidad es algún tipo de problema de datos (por ejemplo, con el formato de respuesta). Algunos encabezados, como Cache-Control y específicamente Set-Cookie afectarán si se pueden almacenar en caché: https://developers.cloudflare.com/workers/runtime-apis/cache#headers

¿Puedes verificar que tu respuesta no contenga algo que la haga imposible de almacenar en caché? Si puede compartir la respuesta completa, o solo los encabezados, eso también ayudaría.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda