禁用 Web API 响应的缓存

har*_*shr 5 caching asp.net-web-api asp.net-web-api2

我想禁用跨所有客户端的所有 Web API 响应的浏览器缓存。尽管我可以按照Scott Hanselman 的博客中的建议使用CacheOutputCacheCow等库,但我的要求并不那么复杂。我只想禁用所有 Web API 响应的缓存,并且不需要对其进行任何自定义控制。

  • 我如何在 ASP.NET Web API 2 中做到这一点?

  • 我需要设置哪些标题? 'Cache-Control' : 'no-cache'?

  • 是否需要 ETag、Last-Modified 等?或者可能有任何其他响应标头?

  • 它需要在 a 中实现DelegatingHandler,对吗?

小智 7

只需使用Cache-Control: no-cache标题。
将其实现为 delegating-Handler 并确保应用了您的标头(与 MS Owin 实现挂钩OnSendingHeaders()。我在这里使用它OnSendingHeaders() Example)。

  • .NET Core 开发注意事项,覆盖 `OnActionExecuted` 函数并将 `Response.Headers.Add("Cache-Control", "no-cache");` 放入其中。请记住在该函数中保留 `base.OnActionExecuted(context);` 以确保它正确处理命令。 (4认同)