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

js
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é des navigateurs

BCD tables only load in the browser

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.

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

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

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

Note :

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.