gpt4 book ai didi

c# - 我的 asp.net mvc web 应用程序中的 OutputCache 设置。防止缓存的多种语法

转载 作者:IT王子 更新时间:2023-10-29 04:04:30 38 4
gpt4 key购买 nike

我正在开发一个 asp.net MVC web 应用程序,我需要知道在为我的操作方法定义 OutputCache 时是否存在任何差异,如下所示:-

[OutputCache(Duration = 0, Location = OutputCacheLocation.Client, VaryByParam = "*")]

对比

[OutputCache(NoStore = true, Duration = 0, Location="None", VaryByParam = "*")]

对比

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

以上三个设置是否都会阻止缓存数据,或者每个都有不同的含义?

第二个问题 定义 duration=0NoStore=true 的主要区别是什么?他们都会阻止缓存吗?谢谢

最佳答案

NoStore 属性用于通知代理服务器和浏览器它们不应通过设置 Cache-Control: no-store 存储缓存内容的永久副本请求 header 。

Duration 简单地指定 Controller 操作的内容应该被缓存多长时间,例如10 秒。这会将 Cache-Control: max-age 设置为 >= 0。还将 Expires header 设置为有效的时间戳。

对于您最初的问题,不,这三个变体的含义不同。

[OutputCache(Duration = 0, Location = OutputCacheLocation.Client, VaryByParam = "*")]

像这样创建一个缓存头

Cache-Control: private, max-age=0
Expires: Fri, 03 Jan 2014 12:32:15 GMT

[OutputCache(NoStore = true, Duration = 0, Location="None", VaryByParam = "*")]

创建以下缓存 header :

Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: -1

如果您想通过各种方式阻止缓存,这基本上就是您想看到的。 VaryByParam 是可选的(至少在 MVC5 中是这样),无论如何默认值为“*”,因此您可以简单地使用 [OutputCache(NoStore = true, Location = OutputCacheLocation.None)] 代替。


[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

甚至创建一个公共(public)缓存控件...

Cache-Control: public, no-store, max-age=0
Expires: Fri, 03 Jan 2014 12:36:38 GMT

SO 上有一篇很好的帖子讨论了 max-age=0 and no-cache etc. 之间的区别.

最后这三个可能会阻止缓存您的数据,但仍然具有不同的含义。

关于c# - 我的 asp.net mvc web 应用程序中的 OutputCache 设置。防止缓存的多种语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20895489/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com