webRequest.handlerBehaviorChanged()

Cette fonction peut être utilisée pour s'assurer que les auditeurs d'événements sont appliqués correctement lorsque les pages se trouvent dans le cache en mémoire du navigateur.
 
Si le navigateur a chargé une page et que la page est rechargée, le navigateur peut recharger la page à partir de son cache en mémoire, et dans ce cas, les événements ne seront pas déclenchés pour la demande.

Supposons que le travail d'une extension consiste à bloquer les requêtes Web par rapport à un modèle, et le scénario suivant se produit :

  • L'utilisateur charge une page qui inclut une requête particulière, et le modèle permet la requête.
  • La ressource est chargée et mise en cache en mémoire.
  • Les modèles de l'extension sont mis à jour, de telle sorte que la ressource ne serait plus autorisée.
  • L'utilisateur recharge la page.

Comme la page sera rechargée à partir du cache mémoire, il se peut que l'auditeur ne soit plus appelé et que la requête soit chargée malgré la nouvelle stratégie de l'extension.

La fonction handlerBehaviorChanged() est conçue pour résoudre ce problème. Il vide le cache en mémoire, de sorte que les rechargements de page déclenchent les auditeurs d'événements.

Parce que handlerBehaviorChanged() nettoie le cache, cela peut être coûteux et mauvais pour la performance. Le module webRequest définit une propriété en lecture seule  MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES : faire plus d'appels que ce nombre en 10 minutes n'aura aucun effet.

L'implémentation de la mise en cache, d'où la nécessité de cette fonction, varie d'un navigateur à l'autre, de sorte que dans certains navigateurs, cette fonction ne fait rien.

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

Syntaxe

var flushingCache = browser.webRequest.handlerBehaviorChanged()

Paramètres

None.

Valeur retournée

Une Promise qui sera remplie sans arguments, lorsque l'opération sera terminée.

Compatibilité du navigateur

ChromeEdgeFirefoxFirefox for AndroidOpera
Support simple Oui144548 Oui

Exemples

Dans le snippet suivant, nous vidons le cache en mémoire via un appel à handlerBehaviorChanged(),  et signalons cette action en enregistrant un message approprié à la console.

function onFlushed() {
  console.log(`In-memory cache flushed`);
}

function onError(error) {
  console.log(`Error: ${error}`);
}

var flushingCache = browser.webRequest.handlerBehaviorChanged();
flushingCache.then(onFlushed, onError);

Remerciements :

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

Étiquettes et contributeurs liés au document

Contributeurs à cette page : hellosct1
Dernière mise à jour par : hellosct1,