这类似于问题Set Cache-Control: no-cache on GET requests,但没有得到真正的回答。
在 API 响应中,缓存控制标头被设置为私有,我很确定我需要无缓存。我尝试了一个 ResponseFilter,但值没有改变。在代码中添加或设置的位置或如何覆盖这一点并不明显,因此任何指导都将不胜感激。
这类似于问题Set Cache-Control: no-cache on GET requests,但没有得到真正的回答。
在 API 响应中,缓存控制标头被设置为私有,我很确定我需要无缓存。我尝试了一个 ResponseFilter,但值没有改变。在代码中添加或设置的位置或如何覆盖这一点并不明显,因此任何指导都将不胜感激。
我使用了一个请求过滤器属性,该属性应用于不应在客户端缓存的每个服务或方法。
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");
}
}
在我们当前的实现中,我们使用Response.AddHeader(...)
. 这是因为我们想要控制每个服务的缓存过期时间。不过,我有兴趣学习更清洁的方法。
Response.AddHeader(ServiceStack.Common.Web.HttpHeaders.CacheControl, String.Format("max-age={0}, public", ConfigurationManager.AppSettings["Cache.Expiration.Resource"]));