覆盖缓存控制:ServiceStack中的私有

时间:2013-10-18 14:48:16

标签: servicestack

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

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

2 个答案:

答案 0 :(得分: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");
    }
}

答案 1 :(得分:2)

在我们当前的实施中,我们使用Response.AddHeader(...)在每项服务中手动设置此项。这是因为我们希望控制每个服务的缓存过期时间。我会对学习更清晰的方法感兴趣。

Response.AddHeader(ServiceStack.Common.Web.HttpHeaders.CacheControl, String.Format("max-age={0}, public", ConfigurationManager.AppSettings["Cache.Expiration.Resource"]));
相关问题