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
Libérer: 2025-01-14 15:16:43
original
275 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal