控制 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中文网其他相关文章!