我有一个基于PHP的Web应用程序(有些处理和)显示托管在外部服务器上的图像。这些图像中的一些(即来自Flickr)被删除后,会在其后面留下一个重定向指向“缺失图像”gif或等效的东西。
通过在每个图像上使用php中的get_headers()
函数,我能够检查服务器端是否删除了图像(例如,通过检查Content-Type
是否{{1在Flickr图片上代替image/gif
。
问题是每个页面平均返回20-100个图像(有时甚至更多),image/jpg
每个图像平均需要0.3-0.5秒,从而使用户的等待时间过长。
我想知道这个检查是否可以在客户端使用javascript完成。用户将等待加载图像(与任何页面一样),如果图像有效,我将检查图像,并在缺失的图像上将display属性设置为none。
答案 0 :(得分:0)
您可以使用此方法来确定图像类型,但这可能会给您的服务器带来额外的流量。
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)
答案 1 :(得分:0)
是的,您可以使用javascript,例如Ajax来向PHP程序发出请求。
但是,您可以更好地使用此功能,而不是使用get_headers():http://es.php.net/manual/es/function.file-exists.php#85246
问候!
答案 2 :(得分:0)
您可以使用curl_multi_exec()
一次检查多个网址。如果您使用以下cURL选项:
CURLOPT_FOLLOWLOCATION = FALSE
CURLOPT_NOBODY = TRUE
CURLOPT_HEADER = TRUE
...这将阻止以下重定向。然后,您可以使用此信息(响应是否为重定向,请参阅curl_get_info()
中的CURLINFO_HTTP_CODE
)以确定该文件是否存在。通过使用curl_multi_exec()
,您将同时执行多项检查,这将大大减少页面加载时间。