es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Aún se accede al contenido después de purgar la caché del edge.

Tengo este enlace de la API que está almacenado en la caché de Cloudflare en el borde, y cada vez que los datos se actualizan, el backend enviará a la API de Cloudflare para purgar este enlace.

Cuando lo intento con Postman, funciona perfectamente bien, obtengo “MISS” cuando llegan nuevos datos y se almacenan en caché cuando intento recuperarlos después.

Pero cuando construyo un sitio web frontend utilizando fetch, sin importar cuánto lo intente, siempre obtendré “HIT” en la caché de Cloudflare, aunque en Postman obtengo “MISS”.

(Imagen) Postman “MISS”: enlace

(Imagen) Fetch siempre “HIT”: enlace

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual siempre obtienes una respuesta de “HIT” al usar fetch en el sitio web frontend es porque Cloudflare almacena en caché la respuesta basada en las cabeceras de la solicitud. Cuando haces una solicitud usando Postman, se envían diferentes cabeceras en comparación con cuando haces una solicitud usando fetch en el sitio web frontend.

    Para resolver este problema, puedes agregar cabeceras de control de caché a tu solicitud fetch. Al hacer esto, le estás diciendo a Cloudflare cómo debe almacenar en caché la respuesta. Puedes hacer esto agregando las siguientes cabeceras a tu solicitud fetch:

    fetch('tu-enlace-de-api', {
      headers: {
        'Cache-Control': 'no-cache, no-store, must-revalidate',
        'Pragma': 'no-cache',
        'Expires': '0',
      }
    })
    

    La cabecera no-cache le indicará a Cloudflare que siempre valide la respuesta. Esto significa que Cloudflare verificará si hay una nueva versión de la respuesta disponible antes de devolver la respuesta almacenada en caché. Agregar estas cabeceras a tu solicitud fetch debería resolver el problema de obtener siempre una respuesta de “HIT”.

Comments are closed.