Maison >développement back-end >C++ >Comment puis-je empêcher la mise en cache d'actions ASP.NET MVC spécifiques ?

Comment puis-je empêcher la mise en cache d'actions ASP.NET MVC spécifiques ?

DDD
DDDoriginal
2025-01-14 15:07:13817parcourir

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

Contrôle de la mise en cache dans les actions ASP.NET MVC

Le mécanisme de mise en cache d'ASP.NET MVC améliore considérablement les performances. Cependant, il existe des scénarios dans lesquels la désactivation de la mise en cache pour des actions particulières est vitale pour garantir la récupération de nouvelles données. Ce guide détaille les méthodes permettant d'empêcher la mise en cache dans des actions ASP.NET MVC spécifiques à l'aide d'attributs personnalisés.

Création d'un attribut NoCache

Pour créer un attribut personnalisé qui désactive la mise en cache, nous exploitons les attributs [AttributeUsage] et [ActionFilterAttribute]. Ci-dessous un exemple :

<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>

L'application de [NoCache] à un contrôleur ou à une méthode d'action désactive la mise en cache pour cet élément spécifique. Alternativement, hériter d'un contrôleur de base et le décorer avec [NoCache] empêche la mise en cache sur tous les contrôleurs héritants.

Contrôle du cache de jQuery

Lors de l'utilisation de jQuery pour la récupération de données, la définition explicite de cache: false dans la méthode $.ajax() empêche la mise en cache :

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

Application de l'actualisation du navigateur

Après avoir mis en œuvre des mesures anti-caching, un "hard rafraîchissement" (Ctrl F5) est crucial pour garantir que le navigateur ne s'appuie pas sur les données mises en cache. Une actualisation standard (F5) peut ne pas toujours récupérer les dernières informations si le navigateur conserve la version en cache.

Résumé

L'utilisation du NoCacheAttribute ou du paramètre cache: false dans jQuery empêche efficacement la mise en cache des actions ASP.NET MVC ciblées, garantissant ainsi que le navigateur reçoit les données actuelles. La maîtrise du contrôle de la mise en cache est essentielle pour éviter que les données obsolètes n'aient un impact sur l'expérience utilisateur et la logique des applications.

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