Maison >développement back-end >C++ >Comment empêcher la mise en cache dans les actions ASP.NET MVC ?

Comment empêcher la mise en cache dans les actions ASP.NET MVC ?

DDD
DDDoriginal
2025-01-14 15:16:43286parcourir

How to Prevent Caching in ASP.NET MVC Actions?

Suppression de la mise en cache dans les actions ASP.NET MVC avec attributs

Défi :

Dans les applications ASP.NET MVC, vous devez souvent empêcher des actions spécifiques de mettre en cache les données pour vous assurer de toujours récupérer les informations les plus récentes.

Solution :

1. Désactivation de la mise en cache jQuery :

Pour empêcher jQuery de mettre en cache les réponses AJAX, utilisez l'option cache: false dans vos paramètres AJAX :

<code class="language-javascript">$.ajax({
    cache: false,
    // ... rest of your AJAX configuration
});</code>

2. Implémentation d'un NoCache attribut personnalisé :

Pour un contrôle plus précis, créez un attribut personnalisé pour gérer la mise en cache au sein de vos actions MVC :

<code class="language-csharp">[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class NoCacheAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        // Configure HTTP headers to disable caching
        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>

3. Application de l'attribut NoCache :

Appliquer l'attribut au contrôleur ou à des actions individuelles ne nécessitant aucune mise en cache :

<code class="language-csharp">[NoCache]
public class SomeController : Controller
{
    // Controller actions
}</code>

4. Prévention de la mise en cache globale :

Pour une approche à l'échelle du site, appliquez l'attribut NoCache à votre classe de contrôleur de base :

<code class="language-csharp">[NoCache]
public class ControllerBase : Controller, IControllerBase
{
    // Controller actions
}</code>

5. Actualisation du cache du navigateur :

Après avoir mis en œuvre ces modifications, n'oubliez pas d'effectuer une actualisation matérielle (Ctrl F5) dans votre navigateur pour effacer toutes les données mises en cache existantes et voir les résultats mis à jour.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn