@get_headers会下载完整文件还是只下载元数据?

时间:2016-07-07 00:19:01

标签: php

我在我的网站上下载了使用@get_headers来检查文件是否存在以及检索Content-Length(文件大小)元数据的文件。我最近将下载文件移到我的CDN,因为我注意到下载速度提高了50%,但在移动之后我注意到移动文件后我的CDN使用量从每月5GB大幅增加到120GB +。

我想知道@get_headers是否下载了完整的文件来检索元数据,还是在不下载完整文件的情况下获取元数据?

如果@get_headers确实下载了完整文件来检索元数据还有其他解决方案吗?

由于

1 个答案:

答案 0 :(得分:3)

它使用GET,这就是你所谓的"完整文件"。你想要做的是使用HEAD请求。这是函数的PHP页面注释中的documented

<?php
// By default get_headers uses a GET request to fetch the headers. If you
// want to send a HEAD request instead, you can do so using a stream context:
stream_context_set_default(
    array(
        'http' => array(
            'method' => 'HEAD'
        )
    )
);
$headers = get_headers('http://example.com');