gpt4 book ai didi

http - 为什么 Firefox 不重新下载页面上已有的图像?

转载 作者:可可西里 更新时间:2023-11-01 15:27:13 25 4
gpt4 key购买 nike

我刚刚读了这篇文章:https://developer.mozilla.org/en/HTTP_Caching_FAQ

我想了解 Firefox 的行为(我猜还有其他一些浏览器):

如果我获取任何网页并尝试在 javascript 中多次插入相同的图像,即使我指定所有需要的 header 说“永远不要使用缓存”,图像也只会下载一次。 (见文章)

我知道有变通办法(比如在 url 末尾添加查询字符串等) 但为什么 firefox 会那样做,如果我说图像不必缓存,为什么当我尝试重新插入时,图像仍然从缓存中获取?

另外,什么缓存用于此? (我猜是内存缓存)

例如,这种行为对于动态包含是否相同?ANSWSER 是 NO :) 我刚刚测试了它,每次将脚本附加到 DOM 时,js 脚本的相同 header 都会让 firefox 重新下载它。

PS:我知道你想知道为什么我需要这样做(多次附加相同的图像并强制重新下载,但这是我们应用程序的工作方式)

谢谢


好的答案是:firefox 会将当前页面加载的图像存储在内存缓存中,即使您指定他不必缓存它们也是如此。

您无法更改此行为,但这很奇怪,因为它与 javascript 文件不同

有人可以解释或链接到描述 firefox 缓存如何工作的文档吗?

最佳答案

您在这里处理的只是部分缓存问题。

通过 URL 引用图像来嵌入图像的整个想法是,您可以多次引用同一个 URL,而让浏览器只加载一次。

基本上,如果您编写 HTML(比如 index.html):

<img src="hello.jpg" />
<img src="hello.jpg" />

在这种情况下,浏览器只调用 2 个 HTTP 请求:一个用于 index.html,第二个用于 hello.jpg

您在这里需要做的是“假装”图像是从不同的 URL 加载的。为此,有多种方法。

可能最简单的解决方案是在 URL 的末尾添加一个额外的前缀。例如,如果你想加载一张图片两次,你可以添加:

<img src="hello.jpg?1" />
<img src="hello.jpg?2" />

这将导致浏览器发送一个 HTTP 请求来检索每个图像:一个用于 hello.jpg?1,第二个用于 hello.jpg?2。然而,某些 Web 服务器/浏览器可能仍会对此进行优化,并仅发送一个请求来简单地检索 hello.jpg

如果这不起作用,您还可以按照另一个答案中的建议尝试通过 PHP 等脚本传递图像。

关于http - 为什么 Firefox 不重新下载页面上已有的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2192174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com