1

我在网页中加载了一张图片,例如http://example.com/test.jpg on example.com

现在,假设用户通过该页面上的超链接转到存在相同图像的 example.com/testpage.html(使用 src http://example.com/test.jpg),那么浏览器会请求又是来自服务器的那个图像?

PS:我面临的问题是由于大量图像和 javascript,单个 html 页面上的页面渲染速度很慢。所以我打算在之前的referrer url上加载一些图片,这样当用户进入页面时,一些图片已经被加载了。请注意,我不打算通过 js/ajax 异步加载页面。我想做一个简单的重定向到给定的页面并希望已经加载了一些图像。

4

3 回答 3

2

只要域相同,并且您的缓存设置正常,浏览器会发出请求,但会得到304 Not modified响应,并且不需要重新下载整个资产。

于 2012-10-06T23:15:00.093 回答
1

浏览器可能会或可能不会再次请求图像 - 这取决于浏览器、图像的年龄、上次检索的时间等。

当浏览器遇到请求时,它会首先检查它的 URL 缓存

如果该项目在缓存中并且为其设置了明确的到期日期(通过 expires 或缓存控制:max-age),并且该到期是在未来,那么浏览器将使用缓存中的版本。

如果项目在缓存中并且没有未来的到期日期,则浏览器可以使用启发式方法来判断它是否需要发出请求,例如,如果它昨天下载并且文件在 6 个月内没有更改,它可能会决定使用缓存中的版本(目前尚不清楚哪些浏览器对此做了什么)

或者,如果项目在缓存中,浏览器可以执行“if-modified-since”请求,如果自缓存版本的日期以来资源没有更改,则服务器以 304 响应,否则发送文件。

于 2012-10-08T11:03:22.087 回答
0

一个简单的图像引用应该被缓存并且只加载一次。

您应该检查图像的大小 - 也许您有一个巨大的图像(加载速度很慢),它显示得小得多,并且可以在服务器上调整大小。

于 2012-10-06T23:13:32.033 回答