我能找到的最好的,一个 if
fclose
fopen
类型的东西,使页面加载非常缓慢。
基本上我要做的是:我有一个网站列表,我想在它们旁边显示他们的网站图标。但是,如果网站没有,我想用另一张图片替换它,而不是显示损坏的图片。
最佳答案
您可以通过 CURLOPT_NOBODY 指示 curl 使用 HTTP HEAD 方法。
或多或少
$ch = curl_init("http://www.example.com/favicon.ico");
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// $retcode >= 400 -> not found, $retcode = 200, found.
curl_close($ch);
无论如何,您只节省了 HTTP 传输的成本,而不是 TCP 连接的建立和关闭。由于网站图标很小,您可能看不到多少改进。
如果结果太慢,在本地缓存结果似乎是个好主意。 HEAD 检查文件的时间,并在标题中返回它。您可以像浏览器一样获取图标的 CURLINFO_FILETIME。 在您的缓存中,您可以存储 URL => [ favicon, timestamp ]。然后,您可以比较时间戳并重新加载网站图标。
https://stackoverflow.com/questions/981954/