我使用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