[go: up one dir, main page]

Top.Mail.Ru

Поддержка Back/Forward cache (bfcache).

Код счетчика не препятствует использованию браузером функции кэша для перехода назад и вперед (bfcache, [подробнее: https://web.dev/bfcache/]).

При возврате на страницу с помощью команд “назад” или “вперед” в случае, если эта страница сохранена в кэш-памяти браузера, то она будет восстановлена из памяти, вместо того что бы делать повторный запрос и загрузку этой страницу. Страница будет восстановлена в том же состоянии (включая состояние JS-кода на странице), в котором она была помещена в кэш-память, поэтому код подключения счетчика не будет повторно выполняться. И, соответственно, код отправки просмотров так же повторно не вызывается.

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

Такое поведение отличается от обычного возврата на страницу без использования bfcache-функции, при котором страница будет заново загружена в первоначальном состоянии, выполнится код подключения счетчика, и, соответственно, просмотр страницы начнется с начала. Это отличие в поведении важно для тех страниц, для которых в рамках одного открытия происходит несколько просмотров (для одного счетчика). Для тех страниц, для которых открытию соответствует один просмотр - поведение не отличается. При этом никаких дополнительных настроек кода установки счетчика делать не нужно.

Так же при необходимости отправлять какие-то события по факту открытия страницы (нахождению пользователя на странице), необходимо использовать метод “onready” из JS API счетчика. Этот метод вызывается автоматически при возврате на страницу, как если она будет восстановлена из bfcache, так и если страница будет загружена заново.