【问题标题】:cURL refuses to ignore cachecURL 拒绝忽略缓存
【发布时间】:2013-12-17 08:15:31
【问题描述】:

我在我的 CakePHP 3.8 实例中使用 cURL 来获取数据。但是 cURL 总是获取旧的(缓存的?)数据版本。

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_FRESH_CONNECT, 1 );
curl_setopt( $ch, CURLOPT_FORBID_REUSE, 1 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookiefile); 
$url_content = curl_exec( $ch );
$url_info = curl_getinfo( $ch );
curl_close( $ch );

我正在设置时间戳参数

$url.'&t='.time();

但我仍然得到缓存的数据。 我还清除了 Cake 的所有缓存,但这没有用……有人有想法吗?

【问题讨论】:

  • curl 不会缓存内容 - 永远
  • hm,那么请告诉我,为什么cURL返回的数据与直接在浏览器中调用url不同......
  • 这可能有很多原因,从用户代理到 cookie 再到 javascript。我猜这就是你需要弄清楚的。
  • 它是一个服务,它返回 JSON。没有 JS,没有 Cookie……都来自同一个用户代理……

标签: php cakephp caching curl cakephp-2.3


【解决方案1】:

我假设该站点正在控制缓存本身。因此,请防止网站通过使用带有 curl 的 HTTP 标头向您发送缓存数据。

$header = array("Cache-Control: no-cache");
// $header = array("Cache-Control: max-age=0");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

【讨论】:

    【解决方案2】:

    CURLOPT_COOKIEFILE 和 CURLOPT_COOKIEJAR 行有一些错误。你使用了 $curl 而不是 $ch。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 2019-05-24
      • 2019-12-03
      相关资源
      最近更新 更多