Javascript 使图像的浏览器池可用
我有一个小型http服务器,可以动态生成一些图像,生成过程可能需要一些时间。生成后,图像将被不精确地缓存 当前,如果用户请求未缓存的图像,服务器将返回一个带有Javascript 使图像的浏览器池可用,javascript,html,http,http-headers,image-generation,Javascript,Html,Http,Http Headers,Image Generation,我有一个小型http服务器,可以动态生成一些图像,生成过程可能需要一些时间。生成后,图像将被不精确地缓存 当前,如果用户请求未缓存的图像,服务器将返回一个带有Refresh头的202 Accepted。如果缓存图像,则发送永久移动的301,并将用户重定向到唯一url(不同的图像可能共享相同的唯一url) 如果图像在标记中引用(至少在Firefox上),整个系统将中断。没有Javascript,这个问题可以解决吗?如果没有,脚本会是什么样子?我不确定你是否可以不用Javascript完成,但你可能
Refresh
头的202 Accepted
。如果缓存图像,则发送永久移动的301
,并将用户重定向到唯一url(不同的图像可能共享相同的唯一url)
如果图像在
标记中引用(至少在Firefox上),整个系统将中断。没有Javascript,这个问题可以解决吗?如果没有,脚本会是什么样子?我不确定你是否可以不用Javascript完成,但你可能可以用ajax完成?我的意思是,指向服务器,然后检查它是否在那里。。。然后,如果是显示,否则30秒后重试,可能是:
function getImage(img) {
$.ajax({
cache: true,
url: <<ADDRESS>>,
data: "",
timeout: 60,
error: function (jqXHR, error, errorThrown) {
setTimeout(function() {
getImage(img);
}, 30000);
},
success: function (data) {
//set the image
}
});
}
函数getImage(img){
$.ajax({
是的,
网址:,
数据:“,
超时时间:60,
错误:函数(jqXHR、错误、错误抛出){
setTimeout(函数(){
getImage(img);
}, 30000);
},
成功:功能(数据){
//设置图像
}
});
}
好吧,你希望图像会在某个时候出现
唯一的其他选择是在请求之前生成图像?例如,如果只是为照片库创建一个缩略图,为什么要等到请求它生成它呢?你一拿到它就马上生成
希望这会有帮助/有意义。您是否可以在处理过程中阻止请求,并在准备好后直接用实际图像回答?生成图像需要多长时间?这取决于。一些图像可能需要几分钟才能生成,而其他图像只需要几秒钟。阻止不是一个选项。您是否尝试过http 200 OK和刷新头。(202更合理,但以防万一……)我试过了。不起作用:(为什么完全阻止不是一个选项?在实际释放刷新响应之前,您能否至少阻止10秒以减少对服务器的重复请求量?太好了!如果
错误/成功被状态码{202:…,301:…}替换
,那么它应该可以在当前系统中工作。希望error或jqXHR对象能够给出实际的错误代码(使用Google Chrome中的console.log,它可以帮助您查看对象中的内容等)+1对于一个可行的解决方案,但阻止请求确实是一个更好的选择-即使阻止需要5分钟的等待,它仍然会比使用此代码更快返回(因为它会在生成完成后立即返回,而不是30秒后的轮询)。它只会阻止有问题的图像,而不是页面。