1

当您在 Google Chrome 中设置背景图片(您可能还包括使用 img 标签 - 虽然我还没有测试过)并且服务器不要求缓存它时,Google Chrome 将访问服务器要求再次图像(即使它已经在页面中 - 我已将此作为错误提交,但它被设置为 wontfix)。有没有办法可以绕过这个(最好使用 jQuery)?

我已将图像加载到 javascript Image 对象中(因为计划是将其放置在画布上)所以我想我可以用它做一些事情(但使用 javascript 状态将 Image 对象设置为 div 背景图像)。

将服务器设置为要求浏览器缓存文件并不理想,因为它是动态生成的(我知道 ?_rand=123 技巧,但更喜欢纯客户端解决方案)。

4

2 回答 2

0

为每个设置了 属性的图像创建一个 CSS 类background-image,然后将className元素的 设置为与要显示的图像对应的类。

在 JSBin 上查看此技术的实际应用:http: //jsbin.com/oruros/1。在 Chrome 中打开网络面板并查看 -没有多次请求图像

如果您想动态执行此操作,请使用此处概述的技术之一来创建 CSS 类:如何使用 Javascript 创建 <style> 标记

于 2013-04-05T04:04:55.013 回答
0

将一个对象换成另一个。

如果您说预缓存图像不会为您解决此问题(如果没有看到您的实际页面和服务器,我们很难知道),那么您唯一的其他潜在解决方案是将实际图像作为其背景图像的对象进行预缓存然后将您当前的对象换成已经加载了背景的对象。如果您披露了您尝试更改背景图像的实际 HTML,我们可以更具体地建议如何做到这一点。

但是,这只是一种解决方法,因为解决此问题的更正确方法是使客户端能够在您需要缓存时使用来自服务器的正确标头进行缓存。然后,当您不想要缓存时,您可以随时通过在 URL 中附加一些内容来破坏缓存,但是如果您指示浏览器不要通过标头进行缓存,那么它会听您的,并且您无法解决那。

于 2012-04-16T00:09:36.887 回答