我目前正在开发REST API。我想检查HTTP缓存是否正常工作,但不幸的是它根本不起作用。无论我做什么,它总是返回HTTP代码200,而根据我的了解,它应该返回304。
以下是我的PHP代码:
public function getList()
{
$this->addHeaders(array(
'Cache-Control' => 'public, must-revalidate, max-age=120',
'eTag' => 'xyz123',
));
$array = array(
'foo' => 'bar',
'nested' => array(
'lorem' => 'ipsum',
'dolor' => 'sit amet'
)
);
$this->addHeader('Content-Length', strlen(json_encode($array, true)));
return new JsonModel($array);
}
响应/请求
ETag并没有改变,所以除了第一次请求之外,后续请求都应从缓存中获取。我错了吗?
我正在遵循这两篇文章:
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching
- https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=en
我也使用了弱验证器- Last-Modified,但我仍然遇到了同样的问题。浏览器在请求中发送了正确的头信息,但我仍然得到了200的响应。
304
。 - rmoestl