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

159
Vistas
¿Puedo hacer que el navegador respete Cache-Control para imágenes?

Me gustaría actualizar una imagen en una página web cada N segundos. La forma común de hacer esto es agregar ?t= a la fuente de la imagen:

 function refreshImage(){ document.getElementById('img1').src='https://someserver/cam?t='+ new Date(); } window.setInterval(refreshImage,5000);

Sin embargo, esto puede romper servidores proxy de caché como NGINX o CloudFront. Por ejemplo, si la memoria caché incluye t= en la clave de la memoria caché, se mantendrán varias copias en la memoria caché. Podemos excluir t= de la clave de caché, y esto se resuelve, pero aún significa que el navegador regresa a la red en cada solicitud, y el caché del navegador se llenará innecesariamente. Y significa que el proxy tiene que ser diferente para las imágenes.

He visto en otra parte que se supone que esto funciona:

 function refreshImage(){ document.getElementById('img1').src='https://someserver/cam#t='+ new Date(); } window.setInterval(refreshImage,5000);

Pero en mis pruebas, no lo hace.

En su lugar, podemos incluir Cache-Control:no-store en la respuesta de la imagen y hacer esto:

 function refreshImage(){ document.getElementById('img1').src='https://someserver/cam'; } window.setInterval(refreshImage,5000);

Sin embargo, esto rompe los cachés de proxy, diciéndoles que no almacenen la imagen en absoluto.

Preferiría hacer esto de una manera que sea amigable tanto para los cachés de proxy como para el caché del navegador. En mi opinión, sería mejor servir la imagen con, por ejemplo, Cache-Control:max-age=30, y almacenarla en caché durante 30 segundos tanto en el navegador como en el proxy. El navegador no debería tener que agregar una marca de tiempo, y no debería volver a preguntar por 30 segundos, y si otro navegador lo hace, el caché del proxy debería servir su copia por 30 segundos. El origen solo debería ver una solicitud cada 30 s.

Entiendo que probablemente debería simplemente hacer? t = y terminar con eso, pero estoy tratando de entender mejor por qué es así y si hay alguna manera mejor. ¿Estoy malinterpretando lo que debería estar sucediendo aquí? ¿Hay alguna forma de hacer que los navegadores respeten Cache-control:max-age=30 para las solicitudes de imágenes? ¿Algún encabezado de caché que me falta?

about 4 years ago · Juan Pablo Isaza
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