防止图像文件被添加到浏览器缓存

Posted

技术标签:

【中文标题】防止图像文件被添加到浏览器缓存【英文标题】:Preventing image files being added to browser cache 【发布时间】:2020-11-16 18:22:34 【问题描述】:

我的应用程序将图像文件呈现给用户(用于摄影比赛评审)。它可能会在单个会话期间呈现数千个相当大的文件。 为了呈现每张图片,我使用 AJAX 通过网络服务获取一个 URL,然后将其显示为

$("#imgImage").prop('src', resp.URL);

我担心用户浏览器中的存储空间使用情况。是否将每个图像添加到缓存中,如果是,我该如何防止它? 我有元指令

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Expires" content="-1" />

但由于页面本身不是每次都重新加载,我不确定它们是否有效。

【问题讨论】:

【参考方案1】:

您需要让服务器将这些标头与提供 图像 的 HTTP 响应一起发送。在您的页面中,它们仅适用于您的页面,而不适用于图像。

请注意,如果您的页面再次显示相同的图像(用户可以返回吗?我希望能够),客户端将不得不重新下载它。如果它很大,或者它们在计量连接上,那可能并不理想。

【讨论】:

谢谢,但图像不是作为 HTTP 响应出现的 - URL 是通过 Web 服务获取的,我更改了 DOM 中的 src 属性 @ilens - 正确 - 设置 src 会触发 HTTP 请求,并且您会为缓存标头提供对该请求的响应。唯一的例外是它是 data://file:// URL。如果它是data:// URL,则数据在 URL in 中,因此缓存标头不相关。如果是file:// URL,我不得不承认我不知道浏览器是否缓存了这些(我希望不会,这没有意义),但你也不能在这些上设置任何缓存标头。 @ilens - 没关系。 @ilens - 再次使用与页面相同的方案(http:https:,大概)触发对服务器的请求,这将涉及响应,这就是您设置响应标头。 对不起,我在这里遗漏了一些东西......我的服务器端代码没有被调用,所以我可以设置响应头吗?

以上是关于防止图像文件被添加到浏览器缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Web 浏览器对缓存文件发出“If-Modified-Since”请求?

应用程序缓存或浏览器缓存

html 防止CSS缓存。添加样式表以及上次更新的时间。如果数字更改,浏览器将更新CSS而不是使用缓存的ver

如何防止浏览器缓存json文件

ReactJS:如何防止浏览器缓存静态文件?

禁用某些图像的缓存