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.

Cache Control no funciona correctamente con Spring Boot, Zuul Proxy y Angular iFrames.

Estoy tratando de almacenar en caché los recursos estáticos para la aplicación Angular (versión 10) que se llama en un iframe desde mi aplicación Angular principal. Tengo seguridad de Spring en mi capa de REST en ambas aplicaciones (aplicación principal y la aplicación que se llama en el iframe). Además, estoy utilizando el proxy de Zuul en mi aplicación principal para enrutar la solicitud a la aplicación del iframe.

El control de caché para los recursos estáticos funciona correctamente en la aplicación principal, pero para la aplicación del iframe obtengo dos entradas de control de caché en el encabezado de respuesta. Parece que el navegador da preferencia a no almacenar en caché en lugar de max-age.

  • cache-control: no-cache
  • cache-control: max-age=350, must-revalidate, private (esto es lo que he configurado en mi aplicación secundaria usando WebMvcConfigurer).

No puedo entender la causa de la entrada de control de caché no-cache. ¿Puede ser debido al uso de iframe en Angular? No encontré ninguna configuración que agregue esto explícitamente.

He desactivado por completo la política de control de caché de la seguridad de Spring para descartar cualquier alteración del encabezado de respuesta por parte de la seguridad de Spring.

http.headers().cacheControl().disable();

También he utilizado la siguiente configuración de Zuul para pasar los encabezados descendentes sin ninguna modificación por parte del proxy de Zuul.

sensitiveHeaders: (en blanco)
ignore-security-headers: false

Esto parece funcionar bien según lo verificado desde los encabezados de depuración de Zuul en la respuesta.

¿Alguna idea de lo que me estoy perdiendo o haciendo mal?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    A partir de la información proporcionada, parece que el problema podría estar relacionado con el propio iframe. Los navegadores generalmente tratan a los iframes como entidades separadas y tienen su propia configuración de caché. Es posible que el navegador esté dando preferencia a la configuración de no caché para los recursos del iframe.

    Una posible solución podría ser agregar directamente el encabezado de control de caché en el archivo HTML que se carga en el iframe. De esta manera, la configuración de control de caché se aplicará específicamente a los recursos del iframe.

    Otra opción podría ser utilizar una técnica de eliminación de caché para los recursos del iframe. Esto podría implicar agregar un parámetro de consulta a la URL de los recursos del iframe, lo que obligará al navegador a obtener la versión más reciente del recurso en lugar de utilizar la versión en caché.

    Por último, podría valer la pena verificar si hay otros encabezados que estén siendo agregados por el servidor backend o el proxy inverso que podrían afectar la configuración de control de caché. Podría ser necesario eliminar o modificar esos encabezados para obtener el comportamiento deseado de control de caché.

Comments are closed.