4 votes

Effacement programmé du profil de cache dans asp.net core

J'ai configuré un profil de cache dans mon api web asp.net core comme suit :

services.AddMvc(options => {
     // Cache profile for lookup data will expire every 15 minutes.
     options.CacheProfiles.Add("LookupData", new CacheProfile() { Duration = 15 });    
});

J'ai utilisé cet attribut en haut de mon "lookupsController", car les listes d'informations renvoyées dans chaque méthode ne changeront pas régulièrement (bien que le cache expire automatiquement toutes les 15 minutes).

[ResponseCache(CacheProfileName = "LookupData")]
[Produces("application/json")]
[Route("api/Lookups")]
public class LookupsController : Controller
{
    ...
}

J'ai un autre contrôleur d'administration qui peut permettre aux utilisateurs d'ajouter et de supprimer des éléments dans la liste du contrôleur de consultation. Cela ne se produira pas souvent, mais lorsque cela se produit, je veux forcer de manière programmatique la réinitialisation du profil de cache et obliger les requêtes Web ultérieures à obtenir la dernière version, plutôt que de conserver la liste de données en cache qui est maintenant périmée.

Comment puis-je réaliser la réinitialisation du cache de manière programmatique ? - Je peux ensuite ajouter ce code dans les méthodes de mon contrôleur d'administration, pour forcer la réinitialisation du cache. Quelqu'un a-t-il déjà eu à le faire ?

2voto

Evk Points 17804

Vous ne pouvez pas vraiment effacer ce cache, car il ne s'agit pas d'un cache de serveur mais de client. ResponseCache ne fera que définir certains en-têtes en réponse. Description simplifiée de la façon dont cela fonctionne : le navigateur (ou tout proxy intermédiaire) qui fait une demande à votre API remarque ces en-têtes de réponse, voit que cette réponse est valable pendant 15 minutes et ne répétera donc pas cette demande pendant les 15 prochaines minutes au lieu de la prendre dans sa base de données. local cachette. Comme vous n'avez aucun contrôle sur ce cache local, vous ne pouvez pas le vider.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X