2010-01-30 68 views
14

我试图找出一种方法来缓存我的画廊脚本中的下一个和以前的图像......我想知道这是否是一个很好的方法来做到这一点。另外,有没有办法为下载的图像手动指定缓存时间?是否仍会下载并缓存style =“display:none”的图像?

+0

这是可能的JavaScript,但我更喜欢这个解决方案更好(如果它的作品)。 – Thomas 2010-01-30 19:12:03

回答

33

display: none图像将被下载并缓存在客户端上。然而,JavaScript的已经有一个明确的预载图片的方式:

var nextImage = new Image(); 
    nextImage.src = "your-url/newImage.gif"; 

这将预加载图像没有它显示给用户。

1

我认为它会被下载,并因此被缓存,因为图像可能会在CSS甚至到达之前被加载。

如果浏览器变得太聪明,像position:absolute; left:-9999px; top:-9999px应该是一个不错的选择。

+2

不能说我是他的黑客粉丝。 – Finglas 2010-01-30 20:00:14

+0

这是一个黑客行为。幸运的是,似乎没有必要。但不再需要CSS黑客的日子确实是一个快乐的日子...... – Thomas 2010-01-30 20:03:46

2

我不确定缓存行为与display: none(它可能会在不同的浏览器之间有所不同),但您可以通过在JavaScript中创建图像对象来显示图像到浏览器的缓存中,而不显示它。直到您将其添加到页面后,图像才会显示。

var image = new Image(); 
image.src = 'example.com/image' 

关于“有什么办法来手动指定缓存时间下载图像?”,有,但是这涉及在图像传送到浏览器中的HTTP响应。谷歌有一个很好的入门:https://developers.google.com/speed/articles/caching