Curl 相同的图像URL';在Cloudfare服务器上返回24位或32位图像?(卷曲“内容长度”检查)

Curl 相同的图像URL';在Cloudfare服务器上返回24位或32位图像?(卷曲“内容长度”检查),curl,cloudflare,32-bit,content-length,24-bit,Curl,Cloudflare,32 Bit,Content Length,24 Bit,这让我很困惑,我似乎找不到任何地方可以解释这一点的信息 我有一个大约1000个图像URL的数据库,我正在做一个cURL头回调 curl_setopt($this->curl, CURLOPT_HEADERFUNCTION, array($this, 'headerCallback')); 其中查找图像URL的内容长度 if ($name === 'content-length' && (int) $value === $this->filesizecheck) {

这让我很困惑,我似乎找不到任何地方可以解释这一点的信息

我有一个大约1000个图像URL的数据库,我正在做一个cURL头回调

curl_setopt($this->curl, CURLOPT_HEADERFUNCTION, array($this, 'headerCallback'));
其中查找图像URL的内容长度

if ($name === 'content-length' && (int) $value === $this->filesizecheck) {
    curl_setopt($this->curl, CURLOPT_NOBODY, true);
}
filesizecheck
只需检查服务器上已下载图像的文件大小即可

CURLOPT_NOBODY
设置意味着如果我的服务器上的文件大小与来自标题的内容长度匹配,它将指示系统不下载图像正文,并在标题处停止

我实现此功能的最初想法是检查图像URL中的图像是否已更改——如果已更改,请下载并替换图像。如果没有,则执行标题检查,并跳过它

让我感到奇怪的是,有时完全相同的图像URL返回完全相同的图像的24位或32位。这是我没有预料到的,显然是我的
filesizecheck
被抛弃了

以下是图像url的标题(如果有任何提示):

Array
(
    [0] => Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    [1] => Accept-Encoding: gzip, deflate
    [2] => Accept-Language: en-US,en;q=0.9
    [3] => Connection: keep-alive
    [4] => Host: /////
    [5] => Upgrade-Insecure-Requests: 1
)
现在,我只在一台服务器/主机上体验过这种情况

有没有人遇到过完全相同的图像URL返回同一图像的24位(例如
内容长度
值:
397570
)或32位图像(
内容长度
值:
501502
),为什么会这样?我能做什么来解决这个奇怪的问题

当然,这是在抛弃整个系统,进行头部检查并在图像发生“更改”时下载图像——有时它想下载24位图像,有时它想下载32位图像——对于何时返回24位或32位图像,这似乎是完全随机的

视觉上——图像中没有任何差异

我必须以某种方式获得24位和32位图像的值才能工作吗?有人知道为什么静态图像URL会返回(看似随机)同一图像的24位或32位吗


建议的前进方向是什么?任何提示或信息将不胜感激

我在
headerCallback
中发现,它使用CloudFare作为服务器,有时返回
cf polished:origSize=
cf bgj:imgq:
。。。简单地阅读一下,似乎CloudFare可能是负责提供不同图像类型并压缩图像的一方。但在标题回调中,我还发现了一个
last modified:
属性,它可能是这里的一个备选属性。将需要进行更多的测试。除了上次修改的
之外,还有一个作为资源指纹的