首页 > 后端开发 > C++ > 如何使用属性防止在特定 ASP.NET MVC 操作中进行缓存?

如何使用属性防止在特定 ASP.NET MVC 操作中进行缓存?

Barbara Streisand
发布: 2025-01-14 15:22:44
原创
550 人浏览过

How Can I Prevent Caching in Specific ASP.NET MVC Actions Using Attributes?

避免在具有自定义属性的 ASP.NET MVC 操作中进行缓存

在 ASP.NET MVC 中,有选择地禁用特定操作的缓存对于确保数据准确性至关重要,尤其是在处理动态或敏感信息时。 本文演示了如何创建和利用自定义属性来实现此目的。

缓存控制的自定义属性

为了防止基于每个操作进行缓存,我们可以创建一个自定义属性来覆盖默认的缓存行为。下面是一个实际的例子:

<code class="language-csharp">[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class NoCacheAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        // Aggressively disable caching at multiple levels
        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
        filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
        filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        filterContext.HttpContext.Response.Cache.SetNoStore();

        base.OnResultExecuting(filterContext);
    }
}</code>
登录后复制

实现 NoCache 属性

将此 NoCache 属性应用于操作方法可有效禁用该特定操作的缓存。 例如:

<code class="language-csharp">[NoCache]
public ActionResult GetRealTimeData()
{
    // Action implementation...
}</code>
登录后复制

控制器级或应用程序范围的缓存预防

NoCache 属性也可以应用于控制器级别,以禁用该控制器内所有操作的缓存:

<code class="language-csharp">[NoCache]
public class MyDataController : Controller
{
    public ActionResult GetData()
    {
        // Action implementation...
    }
}</code>
登录后复制

补充客户端方法

虽然服务器端属性至关重要,但通过客户端措施加强这一点可以提高缓存预防的有效性。 在 jQuery 中,可以按如下方式完成:

<code class="language-javascript">$.ajax({
    cache: false,
    // Other AJAX settings...
});</code>
登录后复制

通过结合服务器端属性和客户端配置,您可以确保 ASP.NET MVC 应用程序中强大的缓存防护,从而保证向用户交付新鲜且准确的数据。

以上是如何使用属性防止在特定 ASP.NET MVC 操作中进行缓存?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板