我有一个建立在PHP上的web应用程序,它(进行一些处理和)显示外部服务器上托管的图像。其中一些图片(例如,来自Flickr)在被删除时,会留下一个指向"Missing Image“gif或其他类似内容的重定向。
通过对每个图像使用php中的get_headers()函数,我能够在服务器端检查图像是否被删除(例如,通过检查Flickr图像上的Content-Type是否是image/gif而不是image/jpg )。
问题是,每个页面平均返回20-100张图片(有时甚至更多),而get_headers()平均需要0.3-0.5s才能返回每张图片,从而使用户的等待时间太长。
我想知道这项检查是否可以在客户端使用javascript完成。用户将等待图像加载(与任何页面一样),我将检查图像是否有效,并在缺少的图像上将显示属性设置为none。
发布于 2012-03-29 19:11:52
您可以使用curl_multi_exec()一次检查多个URL。如果使用以下cURL选项:
CURLOPT_FOLLOWLOCATION = FALSE
CURLOPT_NOBODY = TRUE
CURLOPT_HEADER = TRUE...this将阻止以下重定向。然后,您可以使用此信息(无论响应是否是重定向,请参阅curl_get_info()中的CURLINFO_HTTP_CODE )来确定该文件是否存在。通过使用curl_multi_exec(),您将一次执行多个检查,这将极大地减少页面加载时间。
发布于 2012-03-29 19:07:03
您可以使用此方法来确定镜像类型,但它可能会给您的服务器带来一些额外的流量。
var request;
request = $.ajax({
type: "HEAD",
url: 'your image url',
success: function () {
alert("Size is " + request.getResponseHeader("Content-Length"));
alert("Type is " + request.getResponseHeader("Content-Type"));
}
});点击此处:Can I get an image's file size and mime-type via JavaScript (FireFox/Gecko/Mozilla only)
发布于 2012-03-29 19:07:16
是的,您可以使用javascript,例如Ajax来向PHP程序发出请求。
但是,与其使用get_headers (),不如使用这个特性:http://es.php.net/manual/es/function.file-exists.php#85246
致以问候!
https://stackoverflow.com/questions/9924045
复制相似问题