2017-07-14 54 views
0

我正在寻找执行以下步骤来尝试加载图像,如果它失败(因为图像不存在)创建图像,然后加载它。我担心的是第二次加载时,图像将被缓存为失败的图像/ URL,因此不会第二次加载。图像加载失败 - jquery捕获事件并再试一次

步骤: - 尝试加载图像。 - 如果失败 - jQuery捕获事件 - ajax到php,创建图像,移动到位。 - 然后加载图像。 (并且所有未来的用户都可以使用移动到位的已保存图像)。

我试图使用这种方法的原因是20万用户,只有被查看的帐户需要图像(可能是10%) - 因此数据较少。

有没有更好的方式来做我在做什么?

jQuery来检查图像失败:

$("img").on("error", function(){...}); 

感谢

+0

更好的做在服务器通过php,当做出html输出,首先尝试加载图像,如果没有把默认,是一个想法 –

+0

你的意思是使用Curl检查图像?我想到了这一点,但它并不需要对这些页面加载进行持续的Curl调用。 – Adam

+0

@ÁlvaroTouzón是正确的,做服务器端的工作,通过检查图像是否存在,如果不创建图像,服务它! –

回答

1

我不确定我的回答是否正确,所以如果我错了,请随时告诉我任何人。我认为您可以修改图片网址以使版本结束,例如'...?v=4',如果图片加载失败,只需将该用户的版本增加到'...?v=5'即可。您可以使用sessionStorage用于此目的,使用一个唯一的关键字来标识图像本身,并将该值作为计数器,以显示图像无法载入的次数。每次发生故障时,计数器都会递增,或者在会话中第一次出现错误的情况下将计数器添加到sessionStorage。为了实现此目的,您可能需要将该版本与用户的服务器端版本进行同步。顺便说一下,你也可以在服务器端完成这个工作,然后你就不需要版本控制了。

+0

我喜欢你的想法。我相信它会奏效 - 会测试一下 - 谢谢你花时间:)干杯 – Adam

+0

不客气 –