我们正在使用 YII 框架,并使用 COutputCache 来缓存 RESTful Web 服务的结果。RESTful Web 服务使用不同的 HTTP 状态代码来指示操作是否成功执行。不幸的是,HTTP 状态代码没有保存在缓存中。
因此,当 RESTful Web 服务返回错误,例如状态 403(未授权)时,结果数据将存储在缓存中。下一次完成相同的请求时,从缓存中获取正确的输出正文,但随后返回 HTTP 状态代码 200(成功),它应该返回相同的 403。
有两种方法可以解决这个问题:
- 不要在缓存中存储任何状态码不是 200 的数据
- 将http状态码存储在缓存中,当内容来自缓存时使用它来设置正确的状态码
最好,我们会选择第二种选择。第一个选项可能是(临时)解决方法。
我们正在努力让这两种选择都发挥作用。我们应该如何扩展 COutputCache 以使其中之一(最好是选项 2)工作?