我在代理上使用HttpRequest类来调用API。如果内容未被修改,我对API上的缓存进行了修改以抛出304,以便发出请求的用户可以利用缓存。
API抛出标题:
header('HTTP/1.1 304 Not Modified');
我已经确认这是通过检查标题来实现的;在firefox中,ctrl + shift + r将始终返回200,一个200后的ctrl + r将始终导致304.但是,在代理端,HttpRequest对象总是返回200.我甚至尝试修改API所以无论如何,它总是抛出304,但代理仍然会产生200。
我怎样才能让它尊重API抛出的304,所以我也可以从代理中抛出304?
答案 0 :(得分:0)
如果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();