JCrop 缓存图像
Posted
技术标签:
【中文标题】JCrop 缓存图像【英文标题】:JCrop caching image 【发布时间】:2010-10-10 20:01:00 【问题描述】:我正在尝试使用图像列表来实现 Jcrop。目前,当您单击要裁剪的链接时,灯箱会加载带有图像和所有裁剪工具的 ajax 调用,并且一切正常。我已经测试了数据库中的多个图像,并且看起来都不错。
但是,一旦我裁剪图像并且灯箱关闭,如果我再次尝试裁剪图像,它仍然会显示原始图像,而不是新裁剪的图像。 jCrop 中是否有缓存图像的东西,如果有,我可以将其关闭,以便每次通过 ajax 调用它时都会提取新图像? (刷新页面确实会将图像更新为正确的图像,但这会破坏我在此页面上使用的其他一些功能。)
提前致谢!
【问题讨论】:
【参考方案1】:我建议在来自服务器的图像数据发生变化时更改 URL - 否则您将多次遇到缓存问题。缓存控制是不够的 - 一些浏览器会忽略该指令。
我不确定您运行的是什么服务器端平台,但here's an easy solution if it is Windows/IIS。
【讨论】:
如果您无法控制服务器端,您可以在获取的网址中添加时间戳:myurl += ?timestamp= new Date().getTime();什么的。【参考方案2】:图像可能保存在浏览器的缓存中。这可以通过服务器端的 Cache-Control 标头来避免:
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: max-age=0
这无论如何都会阻止缓存。
【讨论】:
好的,我有第一个,现在已经添加了另外两个,但它仍然无法正常工作。事实上,我现在注意到硬刷新并不总是给我正确的图像。一切都说它正在寻找正确的地方......我只是不明白。 JCrop 可以将图像作为临时文件存储在某处吗? 对不起,你能解释一下吗?我不明白。我相信 jcrop 实际上是在使用 php 来操作图像,但是如果我尝试再次加载图像而不刷新页面(例如 $.post()),它会以某种方式被操作,它会显示原始未裁剪的图像而不是新版本的图像。我的假设是正在进行某种缓存,但是在实现缓存控制标头之后,我仍然没有任何乐趣,所以我不知所措...... 嗯,Jcrop 是一个 javascript 库,在服务器端,你可以拥有 PHP、.net、java 或其他任何东西。我相信您所描述的问题并非特定于 Jcrop。也许如果您可以发布一些代码,我们可以为您提供更好的帮助。【参考方案3】:我也面临同样的缓存问题。我在 ajax 上传后使用了 colorbox/fancybox 裁剪窗口。但是如果我选择另一个图像,也会有相同的图像。但是当我裁剪图像时,它会裁剪正确的图像,但裁剪窗口中显示的图像是旧的。
我花了很多时间来解决这个问题。 您只需随意更改图片名称,这样就可以解决 EI 缓存问题,您将始终获得新上传的图片。
问候, 极途
【讨论】:
以上是关于JCrop 缓存图像的主要内容,如果未能解决你的问题,请参考以下文章