我在代理上使用HttpRequest类来调用API。我对API上的缓存进行了修改,如果内容未被修改,则抛出304,以便发出请求的用户可以利用缓存。
API抛出一个头部:
header('HTTP/1.1 304 Not Modified');
我已经通过检查头文件确认了这是有效的;在火狐中,ctrl+shift+r总是返回200,200之后的ctrl+r总是返回304。但是,在代理端,HttpRequest对象始终返回200。我甚至尝试过修改API,让它总是抛出304,但代理仍然会产生200。
我怎样才能让它尊重API抛出的304,这样我也可以从代理抛出304呢?
发布于 2011-04-01 08:43:41
如果API服务器中的缓存逻辑是正确的,那么在发送这样的条件请求时,实际上应该只会得到304:
$last_request = time() - 60;
// should be an actual timestamp of cached data!
$last_date = gmdate("D, d M Y H:i:s T", $last_request);
$request = new HttpRequest($url, $method_type);
$request->setHeaders(array('If-Unmodified-Since' => $last_date));
$request->send();
https://stackoverflow.com/questions/5507865
复制相似问题