角度:移除并重新添加图像后,它不会创建新请求,也不会使用缓存控制标头 示例项目:

问题描述

我有一个非常简单的角度项目,其间隔是周期性添加图像并在几秒钟后将其删除

图片标题Cache-control: max-age: 60

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

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

原因是什么,我能做什么?

示例项目:

https://stackblitz.com/edit/angular-cache-control?file=src%2Fapp%2Fapp.component.html

解决方法

这可能不是最佳解决方案,但是您可以通过向查询应用半随机查询参数来欺骗浏览器,以考虑更改源。

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

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

https://stackblitz.com/edit/angular-cache-control-rhcqh5?file=src/app/app.component.html

,

如果图像更改频繁,那么您需要在图像url中添加一些随机字符串,以便每次获取新图像时都使用

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

如果图像更改为几天,则可以基于日期添加新的随机字符串。

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

,

我的回答:不可能。

brwoser可能有一个缓存结尾,即使在将其从DOM中删除后,该结尾仍保存该图像。因此,当我将他的图像再次添加到DOM时,浏览器不会创建新请求。