【问题标题】:How image are handle by the browser and how to save them without reloading?浏览器如何处理图像以及如何在不重新加载的情况下保存它们?
【发布时间】:2012-03-21 14:35:26
【问题描述】:

为了确定,如果您加载一个页面,假设该页面有 3 张图片。首先参考“/images/1.jpgn”,第二个参考“/images/2.jpg”,第三个参考“/images/1.jpg”。当页面发送到浏览器时,浏览器是否会向服务器发出新的请求并请求图像?如果图像已经被请求(就像我的“让我们说”,它有两次相同的图像)它会再次请求它,或者它会知道这个图像/url已经被加载并且只会从临时检索它?

这导致了我的第二个问题,有没有一种方法可以使用 javascript/jquery 在计算机上保存此图像(下载框打开,就像您正在下载文件一样),而无需再次请求它服务器?

我不知道我是否真的清楚,但总之,我想从缓存中保存页面的图像,而不是请求下载到服务器。

【问题讨论】:

  • 你为什么要这样做而不让正常的缓存机制为你这样做?
  • 这是因为我的图像是由一个运行验证的 php 文件发送的,以便让您看到图像,我想确保当它们已经完成时它不会运行这些验证。

标签: caching browser cache-control


【解决方案1】:

浏览器通常会根据 HTTP 响应标头所说的内容缓存它们可以缓存的内容。也就是说,服务器最终控制了浏览器可以(或应该)缓存的内容,因此通常是服务器配置控制这些内容。

这不仅适用于图像,还适用于所有内容:HTML 页面、CSS、JavaScript 等。

【讨论】:

  • 非常感谢我想知道的。不确定它是否适用于所有内容类型。
【解决方案2】:

这完全取决于服务器如何第一次发送图像(有或没有缓存)。

如果您在浏览器上启用了缓存,浏览器通常会在从服务器请求文件之前检查您的缓存。

【讨论】:

  • 即使图片是通过php文件发送的?
  • 是的,当然 =D 想确保它不依赖于请求的资源类型。
【解决方案3】:

浏览器应该照顾。它不会不断地重新请求同一个文件。

【讨论】:

    【解决方案4】:

    通常,浏览器会看到两个图像具有相同的来源,因此只下载一次。

    但是,如果稍后再次请求相同的图像,浏览器将向服务器发送一个If-Not-Modified-Since 标头。然后服务器可以回复304 Not Modified,此时浏览器使用本地副本“立即下载”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多