2012-07-11 74 views
0

我正在放置一个画廊页面,图像显示在fancyBox。实际的图像是大文件,所以我正在运行一个php脚本来重新调整服务器端的原始图像文件的大小,并为fancyBox输出一个更小,更轻的版本。这样做的结果意味着图像的URL有一个像“/images/photo.php?image=001.jpg”。Fancybox自定义URL图像预加载

这样做意味着fancyBox必须强制进入图像模式,正如它通常所期望的.jpg文件一样,但它取而代之的是.php脚本。这个效果很好,但确实会造成fancyBox不再预加载下一张和前一张图片的问题。我最初的计划是使用更小/更轻/更快的加载图像,因为PHP脚本重新调整图像的尺寸需要一些时间,并且会在点击下一页和实际显示的新图像之间产生令人讨厌的延迟。能够预加载下一个/上一个将会有很大的帮助。

有没有人有任何想法,如果有可能强迫fancyBox预加载下一个图像,无论它指向的文件类型?

作为一个方面说明,不运行服务器端脚本来重新调整图像的大小会导致fancyBox和一些浏览器放弃加载图像并非常快地耗尽大量内存......每张图像大约2MB在重新调整大小之前。

任何意见赞赏。

+1

这与您的预加载问题无关,但您应该绝对缓存图像的调整大小版本,而不是为每位访问者重新处理它们。有这样的图书馆,看看http://phpthumb.sourceforge.net/ – pixelistik 2012-07-11 12:59:01

+1

为什么你不尝试用fancybox打开它们之前处理图像?一个php脚本可能会将重新调整后的版本写入另一个目录,然后让fancybox从那里加载它们。 – JFK 2012-07-11 15:49:18

回答

0

试试这个:

$(".fancybox").fancybox({ 
    type: 'image' 
}); 

的fancybox默认猜测URL的内容。使用其指定的内容type

0

这个问题是我相信浏览器的具体情况。我正在研究完全相同的事情(通过预加载的Lightbox通过一个Lightbox动态调整大小),并发现虽然动态图像按预期进行了预加载,但Chrome仍然坚持在显示时再次加载它们。预加载在Firefox上运行良好。我猜这与Chrome检测到内容是动态的有关,但我没有进一步调试。

由于我在动态调整大量图片的动态调整大小方面存在同样的问题,因此我切换到将图片大小调整为磁盘,并使用我的主php文件中的函数直接链接到磁盘上调整大小的图像。这意味着Chrome开始正确处理预加载。