Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使图像的浏览器池可用_Javascript_Html_Http_Http Headers_Image Generation - Fatal编程技术网

Javascript 使图像的浏览器池可用

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完成,但你可能

我有一个小型http服务器,可以动态生成一些图像,生成过程可能需要一些时间。生成后,图像将被不精确地缓存

当前,如果用户请求未缓存的图像,服务器将返回一个带有
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秒后的轮询)。它只会阻止有问题的图像,而不是页面。