4

这类似于问题Set Cache-Control: no-cache on GET requests,但没有得到真正的回答。

在 API 响应中,缓存控制标头被设置为私有,我很确定我需要无缓存。我尝试了一个 ResponseFilter,但值没有改变。在代码中添加或设置的位置或如何覆盖这一点并不明显,因此任何指导都将不胜感激。

4

2 回答 2

7

我使用了一个请求过滤器属性,该属性应用于不应在客户端缓存的每个服务或方法。

public class NoCacheAttribute : RequestFilterAttribute
{
    public override void Execute(IHttpRequest req, IHttpResponse res, object responseDto)
    {
        res.AddHeader(HttpHeaders.CacheControl, "no-store,must-revalidate,no-cache,max-age=0");
    }
}
于 2013-11-27T17:56:22.157 回答
2

在我们当前的实现中,我们使用Response.AddHeader(...). 这是因为我们想要控制每个服务的缓存过期时间。不过,我有兴趣学习更清洁的方法。

Response.AddHeader(ServiceStack.Common.Web.HttpHeaders.CacheControl, String.Format("max-age={0}, public", ConfigurationManager.AppSettings["Cache.Expiration.Resource"]));
于 2013-10-20T12:26:59.637 回答