Spec-Zone.ru › Web Extensions

webRequest.handlerBehaviorChanged()

Эта функция используется для обеспечения правильного применения обработчиков событий при работе с страницами в кэше браузера в оперативной памяти. Если браузер загрузил страницу, а затем её перезагружает, браузер может перезагрузить страницу из кэша оперативной памяти, и в этом случае события для запроса не будут срабатывать.

Предположим, что задача расширения заключается в блокировании веб-запросов по определённому шаблону, и происходит следующий сценарий:

  • Пользователь загружает страницу, содержащую конкретный запрос, и шаблон разрешает запрос.
  • Ресурс загружается и кэшируется в памяти.
  • Шаблоны расширения обновляются таким образом, что ресурс больше не будет разрешён.
  • Пользователь перезагружает страницу.

Поскольку страница будет перезагружена из кэша памяти, обработчик может не быть вызван повторно, и запрос будет загружен, несмотря на новую политику расширения.

Функция handlerBehaviorChanged() предназначена для решения этой проблемы. Она очищает кэш оперативной памяти, так что перезагрузки страниц будут вызывать обработчики событий.

Поскольку handlerBehaviorChanged() очищает кэш, это может быть ресурсоёмким и негативно сказываться на производительности. Модуль webRequest определяет свойство только для чтения MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES: выполнение большего количества вызовов, чем указано в этом свойстве, в течение 10 минут не окажет никакого влияния.

Реализация кэширования, а следовательно и необходимость этой функции, различается в разных браузерах, поэтому в некоторых браузерах эта функция ничего не делает.

Это асинхронная функция, которая возвращает Promise.

Синтаксис

let flushingCache = browser.webRequest.handlerBehaviorChanged()

Параметры

Нет.

Возвращаемое значение

A Promise, который будет выполнен без аргументов, когда операция будет завершена.

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet
handlerBehaviorChanged Да 14 45 ? Да Нет ? ? 48 ? Нет ?

Примеры

В приведенном ниже фрагменте кода мы очищаем кэш оперативной памяти с помощью вызова handlerBehaviorChanged(), и сообщаем об этом действии, выведя соответствующее сообщение в консоль.

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

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

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

Примечание: Этот API основан на API chrome.webRequest Chromium. Данная документация получена из web_request.json кода Chromium.

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/handlerBehaviorChanged

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API