Html 角度:当图像被删除并重新添加时,它不会';不创建新请求,并且不';不尊重缓存控制头

Html 角度:当图像被删除并重新添加时,它不会';不创建新请求,并且不';不尊重缓存控制头,html,angular,caching,browser-cache,cache-control,Html,Angular,Caching,Browser Cache,Cache Control,我有一个非常简单的角度项目,有一个间隔,可以在几秒钟后添加一个图像并删除它 图像有一个标题缓存控制:最大年龄:60 我正在监视页面发送的请求,我看到它在第一次添加图像时只创建一个请求 在第一个请求之后,页面永远不会验证图像的新鲜度。 因此,如果我在服务器上替换映像,客户端将永远无法获得新映像 原因是什么?我能做什么 样本项目: 这可能不是最好的解决方案,但您可以通过对查询应用半随机查询参数来欺骗浏览器,使其认为源已更改 在本例中,图像将加载查询参数?cacheBust=CURRENT_TIMES

我有一个非常简单的角度项目,有一个间隔,可以在几秒钟后添加一个图像并删除它

图像有一个标题
缓存控制:最大年龄:60

我正在监视页面发送的请求,我看到它在第一次添加图像时只创建一个请求

在第一个请求之后,页面永远不会验证图像的新鲜度。 因此,如果我在服务器上替换映像,客户端将永远无法获得新映像

原因是什么?我能做什么

样本项目:

这可能不是最好的解决方案,但您可以通过对查询应用半随机查询参数来欺骗浏览器,使其认为源已更改

在本例中,图像将加载查询参数
?cacheBust=CURRENT_TIMESTAMP

每次更改图像/切换其可见性时,时间戳都将更新为新值


如果图像更改频繁,则需要在图像url中添加一些随机字符串,以便每次它都会获取新图像

如果图像更改频繁,则添加当前时间戳

如果图像更改为天,则可以根据日期添加新的随机字符串


如果您的图像名称是动态的,我的意思是您将从服务器获取图像名称,然后每次更改图像名称,以便获得新图像。

我的回答:这是不可能的


很可能,brwoser有一个缓存结尾来保存图像,即使在它从DOM中删除之后也是如此。因此,当我再次将图像添加到DOM中时,浏览器不会创建新请求。

这似乎确实是最好的解决方案。这是一个浏览器问题,不是角度问题,但您可以通过在图像URL的末尾添加一个查询字符串来缓存半身像。@EliezerBerlin是对的。这是一个浏览器问题。但是中的解决方案对我来说不太好,因为我不想每次都查询一个新图像。@JudahA…如果你想让浏览器重新下载图像,那么就添加一个查询字符串,或者强制刷新页面。。。否则他不会尝试重新下载图像,因为他已经在缓存中了。我不想每次都查询一个新图像。我想尊重并遵循http
缓存控制
标题。请参阅前面的答案和我的评论。