2

我们正在使用 YII 框架,并使用 COutputCache 来缓存 RESTful Web 服务的结果。RESTful Web 服务使用不同的 HTTP 状态代码来指示操作是否成功执行。不幸的是,HTTP 状态代码没有保存在缓存中。

因此,当 RESTful Web 服务返回错误,例如状态 403(未授权)时,结果数据将存储在缓存中。下一次完成相同的请求时,从缓存中获取正确的输出正文,但随后返回 HTTP 状态代码 200(成功),它应该返回相同的 403。

有两种方法可以解决这个问题:

  1. 不要在缓存中存储任何状态码不是 200 的数据
  2. 将http状态码存储在缓存中,当内容来自缓存时使用它来设置正确的状态码

最好,我们会选择第二种选择。第一个选项可能是(临时)解决方法。

我们正在努力让这两种选择都发挥作用。我们应该如何扩展 COutputCache 以使其中之一(最好是选项 2)工作?

4

1 回答 1

0

我会使用数据缓存。有了这个,您可以决定选项 1 或 2。我个人更喜欢选项 1,因为有时您可能会遇到临时服务器错误 (500) 或其他问题。您不应该缓存临时错误的结果。

于 2013-04-12T16:03:52.257 回答