如何缓存wp_remote_get响应以生成响应代码304


How to cache wp_remote_get response to generate response code 304

我使用WordPress的wp_remote_get()方法从API服务器检索一些内容。数据按预期返回,但响应代码始终是200 OK。

我需要的是,得到响应代码304时,数据没有修改。

如果我直接在web浏览器中打开API url,它肯定会在后续请求中发送304响应。我已经使用chrome开发人员工具验证了这一点。

但是,当我使用PHP代码获取URL内容时,响应总是200 OK

底线是我不想从API获取数据,如果数据没有修改。很明显,如果浏览器不缓存该请求,我可能需要某种缓存。

棘手的部分是,每次请求都是从PHP服务器生成的,我不确定PHP是否有可能在生成此类请求之前与浏览器缓存通信。

我也试过curl,但是响应代码仍然是200。

您需要包含一个请求标头If-Modified-Since,例如:

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

您可能还希望包含Cache-Control头,它必须通过任何代理传递(尽管HTTP/1.0缓存可能不支持):

Cache-Control: max-age=31536000

欲了解更多信息,请参阅HTTP/1.1参考部分的报头在http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html