在angular 7应用程序中可以通过编程方式清除缓存吗?

时间:2019-07-12 09:55:41

标签: javascript angular

我有一个可以延迟加载图像的组件,第一次加载页面时会使用延迟加载来显示图像,但是如果刷新或重新加载或关闭然后打开选项卡,则我的图像是预加载的已加载,因为它现在是从缓存中获取的。有什么办法可以停止在angular 7中缓存组件?

2 个答案:

答案 0 :(得分:1)

如果这只是出于开发目的,则可以在开发人员工具中禁用缓存。我不知道您为什么要为现场站点这样做吗?您可能会强迫用户每次加载组件时都抓取图像,这会降低性能。

答案 1 :(得分:0)

缓存不是由Angular完成,而是由您的浏览器完成。加载图像后(并取决于响应的标题),您的浏览器将对其进行缓存,以便下次可以更快地加载它。这通常是个好方法。

不确定为什么不希望它们被缓存,但是您有不同的选择。在这里,您可以很好地了解HTTP缓存:https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching静态资产的缓存配置通常由您的Web服务器完成,并且取决于您所使用的Web服务器(nginx,Apache,IIS,节点等)。

另一种选择是将随机查询字符串附加到图像URL。该HTTP缓存系统通过使用图像URL作为资源密钥来对其进行标识来工作。因此,您可以执行以下操作:

<img src="./yourimagefolder/yourimage.jpg?r=putherearandomstring">

这样,您的图片资源“ Id”在每个请求中都会有所不同。 (每次加载页面时,您需要在示例中使用不同的随机字符串来更改示例中的“ putherearandomstring”字符串。