Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

161
Visualizações
¿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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda