Home > Backend Development > C++ > How Do I Prevent Caching for Specific ASP.NET MVC Actions?

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

DDD
Release: 2025-01-14 15:07:13
Original
815 people have browsed it

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

Controlling Caching in ASP.NET MVC Actions

ASP.NET MVC's caching mechanism significantly boosts performance. However, scenarios exist where disabling caching for particular actions is vital to guarantee the retrieval of fresh data. This guide details methods to prevent caching in specific ASP.NET MVC actions using custom attributes.

Creating a NoCache Attribute

To build a custom attribute that disables caching, we leverage the [AttributeUsage] and [ActionFilterAttribute] attributes. Below is an example:

<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>
Copy after login

Applying [NoCache] to a controller or action method disables caching for that specific element. Alternatively, inheriting from a base controller and decorating it with [NoCache] prevents caching across all inheriting controllers.

jQuery's Cache Control

When using jQuery for data retrieval, explicitly setting cache: false within the $.ajax() method prevents caching:

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

Enforcing Browser Refresh

After implementing anti-caching measures, a "hard refresh" (Ctrl F5) is crucial to ensure the browser doesn't rely on cached data. A standard refresh (F5) might not always retrieve the latest information if the browser retains the cached version.

Summary

Utilizing the NoCacheAttribute or setting cache: false in jQuery effectively prevents caching for targeted ASP.NET MVC actions, guaranteeing the browser receives current data. Mastering caching control is key to avoiding stale data impacting user experience and application logic.

The above is the detailed content of How Do I Prevent Caching for Specific ASP.NET MVC Actions?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template