有没有办法告诉curl不使用缓存

Edg*_*gar 26 php curl

我想找出一个网址的文件大小:

$url1 = 'www.google.com';
$curl1 = curl_init();
curl_setopt($curl1, CURLOPT_URL, $url1); 
curl_setopt($curl1, CURLOPT_RETURNTRANSFER, TRUE);
curl_exec($curl1);
$file_size = curl_getinfo($curl1, CURLINFO_SIZE_DOWNLOAD ); 
$file_size_kb = $file_size / 1000;
echo $file_size_kb;
Run Code Online (Sandbox Code Playgroud)

输出是43331.我认为它太低了,因为我有谷歌缓存.这可能是真的吗?此外,我在其他网站上测试谷歌计算网址的大小,它是两倍大.

Ola*_*che 38

你可以用CURLOPT_FRESH_CONNECT它.从curl_setopt

CURLOPT_FRESH_CONNECT TRUE强制使用新连接而不是缓存连接.

curl_setopt($curl1, CURLOPT_FRESH_CONNECT, TRUE);
Run Code Online (Sandbox Code Playgroud)


Sub*_*axe 12

curl_setopt($ curl1,CURLOPT_FRESH_CONNECT,1); //不要使用网址的缓存版本

CURLOPT_FRESH_CONNECT TRUE to force use of a new connection instead of a cached one.
Run Code Online (Sandbox Code Playgroud)

检查这里的例子

你可以设置标题

$headers = array( 
                 "Cache-Control: no-cache", 
                ); 
curl_setopt($curl1, CURLOPT_HTTPHEADER, $headers);
Run Code Online (Sandbox Code Playgroud)

这个链接可能对您有所帮助http://www.php.net/manual/en/function.curl-setopt.php#96903


小智 6

避免缓存的最佳方法是将时间或任何其他随机元素应用于URL,如下所示:
$url .= '?ts=' . time();

所以例如,而不是
http://example.com/content.php
你有
http://example.com/content.php?ts=1212434353