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 повторяет авторизованный сценарий, но не принуждает кэширование и не гарантирует восстановление.
Содержание
- Жизненный цикл, который нужно учитывать
- Приватность задаёт границу состояния
- Согласованность после восстановления
- Ограниченная роль 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, не решает интерактивные проверки, не отзывает серверную сессию сайта и не удаляет записи за пределами контекста. Фиксируйте версии браузера, ОС, прокси и правила сайта.
Практический список
- Наблюдайте
pagehideиpageshow;persisted— сигнал, а не обещание. - Приостанавливайте и возобновляйте таймеры, медиа, сокеты и наблюдатели без дублей.
- Проверяйте аутентификацию, аккаунт и свежесть перед показом приватного состояния.
- Покрывайте отзыв сессии, смену аккаунта, изменения данных и навигацию без BFCache.
- Разделяйте восстановление браузера, выход из аккаунта и удаление данных.
BFCache ускоряет историю, но каждое восстановление должно быть новой точкой проверки приватности и согласованности.
Связанное чтение
- История и приватность Navigation API
- Жизненный цикл и приватность кэша service worker
- Очистка данных сайта и границы аккаунтов
Conclusion
Считайте восстановленный документ новой точкой проверки: безопасно приостанавливайте работу, заново проверяйте авторизацию и свежесть данных, а наблюдения браузера отделяйте от решений сервера.
Источники
Похожие статьи
Переведите BotBrowser из исследований в продакшн
Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.