客户端标头信息

时间:2012-03-29 11:00:55

标签: php javascript html

我有一个基于PHP的Web应用程序(有些处理和)显示托管在外部服务器上的图像。这些图像中的一些(即来自Flickr)被删除后,会在其后面留下一个重定向指向“缺失图像”gif或等效的东西。

通过在每个图像上使用php中的get_headers()函数,我能够检查服务器端是否删除了图像(例如,通过检查Content-Type是否{{1在Flickr图片上代替image/gif

问题是每个页面平均返回20-100个图像(有时甚至更多),image/jpg每个图像平均需要0.3-0.5秒,从而使用户的等待时间过长。

我想知道这个检查是否可以在客户端使用javascript完成。用户将等待加载图像(与任何页面一样),如果图像有效,我将检查图像,并在缺失的图像上将display属性设置为none。

3 个答案:

答案 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(),您将同时执行多项检查,这将大大减少页面加载时间。

相关问题