在我们开始之前:我是一个noob。
我试图访问YQL来获取一些信息。 使用PHP的file_get_contents抓取它很简单,但似乎客户端的ISP或服务器caching响应。 为了说明问题,请尝试加载:
–
刷新该页面几次 – 注意,“创build的”string不会改变 – 每次刷新应该是几秒钟,就像这个testing样本:
–
现在我的问题是,这是由系统pipe理员caching的东西,或ISP的某种伎俩? 我可以绕过吗? 我必须通过URL访问YQL,因为我需要能够parsing它。
(系统pipe理员很难到达)
提前致谢。
编辑
我已经find了如何绕过caching。 您可以随机化string,并使用下面提到的@Coops提示的技巧,或者在这里使用代码。 大多数情况下,您可以通过发送Pragma:no-cache头来跳过caching,创build一个上下文并使用它:
// Create a stream $opts = array( 'http'=>array( 'method'=>"GET", 'header'=>"Accept-language: en\r\n" . "Pragma: no-cache" ) ); $context = stream_context_create($opts); // Open the file using the HTTP headers set above $file = file_get_contents('http://example.com');
我仍然无法确定caching是由系统pipe理员还是由ISPconfiguration。
你可以检查一些特定的答复: Age , Expires , ETag , Via 。 这个标题的值可以帮助你确定你需要什么。 有关详细信息和标题说明,请参阅HTTP标题列表中的 Responses部分。
例如, Via标头的值可以告诉你,代理收到的响应可以由你自己的caching中的数据请求。