2009-12-12 52 views
3

我进行动态切换的背景图像工作的图像。当然,他们需要预先加载以及时显示。我正在预加载它们,随着图像加载,我可以在FireBug中进行跟踪。当背景图像切换时,我看到图像在FireBug中再次下载。预加载图像设置没有在FireFox

这里是我的网址:http://www.morganpackard.com/siteRoot/

奇怪的是,如果我重新加载页面,一切正常。我正在采取的步骤如下:

1)清除火狐高速缓存 2)重新加载页面 图像加载缓慢,并且显然不被预加载或缓存。每次图像交换时,图像都会再次下载。 3)现在没有清除缓存 图片载入和交换瞬间,一切都按预期再次重新加载页面。

因此,它看起来像我将不得不重装之前,Firefox会从缓存中读取图像。这是怪人。有任何想法吗?

注:我的图片是巨大的。当然,我会压缩它们,但是要先将这个预加载排序。

回答

2

使用HttpFox进行检查,我是而不是在初始加载后,您会看到更多的http请求 - 当您点击左右时显示您的背景图片。如果我点击“刷新”,图像重新加载。我认为这是正确的,你期望的。但请注意,在页面刷新上重新加载页面及其资源(如图像,CSS等)取决于您的浏览器/插件工具中指定的响应标题和任何覆盖项。看看pragma:no-cache和W3C Cache-Control(第14.9节)

编辑:随着萤火虫,我am看到重新加载,当我点击。这大概是Firebug的人造物。关闭萤火虫,你不会有重新加载。

+0

我已经变成萤火关闭,并且图像仍然加载缓慢。在Safari中按预期工作,但不是Firefox。 – morgancodes 2009-12-12 18:58:16

4

我没看过你的代码,但预压工作,您必须将图像添加到文档DOM,否则就被垃圾收集积极。

+0

嗯。但经典的JS预加载只是创建JS图像对象,而不会将它们添加到DOM。为了确保,我尝试将我的图像附加到dom上,使它们可见。所以我在屏幕上看到了ImageA,显然是在DOM中加载的,但是当我将背景设置为ImageA时,它会在再次下载时暂停。 – morgancodes 2009-12-12 18:55:14

+0

我认为尼古拉斯是正确的;我通常将预加载的图像添加到从视图中移除的DOM元素。 – Upperstage 2009-12-12 20:41:47

+0

当你设置你的背景图片时,你确定你使用的网址与你刚才预载的图片相同吗?您可以尝试使用image.src(因为图像是您预先加载的图像),在加载图像时也一定要这样做。 否则我不知道。 – 2009-12-13 00:23:49