首页 >后端开发 >C++ >如何防止缓存特定 ASP.NET MVC 操作?

如何防止缓存特定 ASP.NET MVC 操作?

DDD
DDD原创
2025-01-14 15:07:13817浏览

How Do I Prevent Caching for Specific ASP.NET MVC Actions?

控制 ASP.NET MVC 操作中的缓存

ASP.NET MVC 的缓存机制显着提高了性能。 然而,在某些情况下,禁用特定操作的缓存对于保证新鲜数据的检索至关重要。本指南详细介绍了使用自定义属性防止在特定 ASP.NET MVC 操作中进行缓存的方法。

创建 NoCache 属性

为了构建禁用缓存的自定义属性,我们利用 [AttributeUsage][ActionFilterAttribute] 属性。 下面是一个例子:

<code class="language-csharp">[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class NoCacheAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.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] 装饰它可以防止跨所有继承的控制器进行缓存。

jQuery 的缓存控制

使用 jQuery 进行数据检索时,在 cache: false 方法中显式设置 $.ajax() 可防止缓存:

<code class="language-javascript">$.ajax({
    cache: false,
    // ... other AJAX settings
});</code>

强制浏览器刷新

实施反缓存措施后,“硬刷新”(Ctrl F5)对于确保浏览器不依赖缓存数据至关重要。如果浏览器保留缓存版本,标准刷新 (F5) 可能并不总是能检索到最新信息。

总结

在 jQuery 中使用 NoCacheAttribute 或设置 cache: false 可以有效防止缓存目标 ASP.NET MVC 操作,从而保证浏览器接收当前数据。 掌握缓存控制是避免陈旧数据影响用户体验和应用程序逻辑的关键。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn