Назад к блогу
Платформа

Back-Forward Cache: жизненный цикл, приватность и согласованность

Разберите, как браузер восстанавливает страницы через BFCache, какие события важны и как защищать приватное состояние без поломки навигации.

BotBrowser Team

Документация

Нужна структурированная документация по теме Платформа?

Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.

Back-forward cache (BFCache) почти мгновенно возвращает страницу при переходе назад или вперёд. Восстановленный документ может сохранить DOM, кучу JavaScript, формы и состояние приложения в памяти; это не обычная перезагрузка. Спецификация HTML WHATWG описывает обход истории, а руководство MDN по BFCache объясняет допуск и события pageshow и pagehide. Спецификация Page Visibility W3C определяет сигнал видимости, который используется вместе с BFCache; видимость показывает состояние жизненного цикла, но не доказывает кэширование документа. BotBrowser запускает авторизованные проверки в изолированных BrowserContext, но не заставляет браузер использовать BFCache и не решает, какие данные приложение должно хранить.

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

TL;DR

  • BFCache восстанавливает документ без обычной перезагрузки; pageshow и pagehide дают основные наблюдения.
  • Видимость, восстановление, аутентификация и свежесть сервера требуют отдельных проверок.
  • BotBrowser повторяет авторизованный сценарий, но не принуждает кэширование и не гарантирует восстановление.

Содержание

Жизненный цикл, который нужно учитывать

При помещении документа в кэш pagehide может сообщить event.persisted === true; при возврате pageshow может сообщить то же. Это переносимые точки наблюдения: load заново не выполняется, а компонент может сохранить старую память. При скрытии или кэшировании приостанавливайте таймеры, опрос, медиа и дорогие наблюдатели, а в pageshow запускайте их снова и проверяйте изменившиеся данные. Очистка должна быть идемпотентной: страницу могут удалить или закрыть без восстановления.

Приватность задаёт границу состояния

BFCache — состояние процесса браузера, а не серверная сессия. Восстановленная страница может показать личную панель, черновик или значения формы. В pageshow проверяйте аутентификацию и аккаунт до вывода секретных данных. При выходе сначала отзывайте серверную сессию, затем очищайте память клиента. Cache-Control: no-store может запретить кэширование документа, но не является универсальным удалением. Встроенный другой источник владеет собственным хранилищем.

Согласованность после восстановления

Не считайте восстановленный документ свежим. Сравните в pageshow версию, идентификатор аккаунта или токен актуальности и обновляйте только то, что могло измениться. Перед новым WebSocket закройте старый; service worker и shared worker имеют отдельные циклы. Проверьте переходы назад/вперёд, смену аккаунта в другой вкладке, отозванную сессию, изменённую запись и навигацию без BFCache. Восстановление не должно повторять отправку или показывать данные прежнего аккаунта.

Ограниченная роль BotBrowser

BotBrowser предоставляет изолированные BrowserContext и повторяемые профили для авторизованных тестов жизненного цикла и приватности. Два контекста позволяют навигировать, отозвать синтетическую сессию и наблюдать pageshow/pagehide без общих Cookie и хранилища. BotBrowser не обходит политики источника, не гарантирует допуск в BFCache, не решает интерактивные проверки, не отзывает серверную сессию сайта и не удаляет записи за пределами контекста. Фиксируйте версии браузера, ОС, прокси и правила сайта.

Практический список

  1. Наблюдайте pagehide и pageshow; persisted — сигнал, а не обещание.
  2. Приостанавливайте и возобновляйте таймеры, медиа, сокеты и наблюдатели без дублей.
  3. Проверяйте аутентификацию, аккаунт и свежесть перед показом приватного состояния.
  4. Покрывайте отзыв сессии, смену аккаунта, изменения данных и навигацию без BFCache.
  5. Разделяйте восстановление браузера, выход из аккаунта и удаление данных.

BFCache ускоряет историю, но каждое восстановление должно быть новой точкой проверки приватности и согласованности.

Связанное чтение

Conclusion

Считайте восстановленный документ новой точкой проверки: безопасно приостанавливайте работу, заново проверяйте авторизацию и свежесть данных, а наблюдения браузера отделяйте от решений сервера.

Источники

#BFCache#Приватность#Жизненный Цикл#Состояние Браузера

Переведите BotBrowser из исследований в продакшн

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