Javascript 即使缓存了新映像也会发出http请求?

Javascript 即使缓存了新映像也会发出http请求?,javascript,http,firefox,prototypejs,Javascript,Http,Firefox,Prototypejs,我有一个javascript幻灯片放映,动态创建下一张幻灯片,然后将其移动到视图中。由于图像实际上是精灵,因此src是transparent.png,实际图像通过css中的background:url()进行映射 每次(大多数情况下)脚本创建一个新元素时,Firefox都会对transparent.png发出http请求。我有一个遥远的expires头,Firefox会考虑所有其他文件的过期时间 是否有办法避免这些不必要的请求。即使服务器返回未修改的304响应,如果Firefox尊重动态创建的图

我有一个javascript幻灯片放映,动态创建下一张幻灯片,然后将其移动到视图中。由于图像实际上是精灵,因此src是transparent.png,实际图像通过css中的
background:url(
)进行映射

每次(大多数情况下)脚本创建一个
新元素时,Firefox都会对transparent.png发出http请求。我有一个遥远的expires头,Firefox会考虑所有其他文件的过期时间

是否有办法避免这些不必要的请求。即使服务器返回未修改的
304
响应,如果Firefox尊重动态创建的图像上的过期信息,那就好了

我怀疑如果我注入一个简单的字符串而不是使用
新元素
,这可能会解决问题,但是我在扩展的
元素
对象上使用了一些方法,所以我希望避免在js文件中使用一堆html字符串

这是一个吹毛求疵的问题,但我现在正在进行前端优化,所以我想我会解决它

谢谢

@TJ Crowder这里有两张图片:。第一张显示对trans.png的请求正在激增。第二张显示了一个标题示例。谢谢


@只是想重申一下:真正奇怪的是,它只会在大约一半的时间内发出这些不必要的请求,即使所有图像都是通过相同的逻辑创建的。

我知道这并不能解决为什么Firefox会忽略您的缓存时间,但您始终可以绕过这个问题,而不使用图像标签制作幻灯片。如果删除空的div标签并将精灵作为背景应用,Firefox将不需要再发出任何请求

编辑

根据在的解释,Firefox不会忽略您的缓存时间。如果图像已过期,则浏览器应再次请求图像。如果时间未过期,则浏览器应发出有条件的GET请求。我认为您无法摆脱它


我认为Firefox只有一半的时间发出请求,因为它刚刚收到“304未修改”前一个请求中图像的状态,并希望在后续请求发生得足够快时信任该状态。

这是一个缓存问题。有许多方法可以通过更改web服务器添加的响应头来控制浏览器缓存。我通常使用和的组合


如果响应标题中存在冲突或不完整的缓存说明,某些浏览器可能会忽略这些说明并获取最新版本的资源。

是否引用用于图像的URL(如果愿意,请省略服务器名称)以及服务器在图像实际下载时发送的标题?可能是过期标题或其他问题。是否使用内联样式作为背景?我在该响应中没有看到任何标题问题。V.奇怪。