- PVSM.RU - https://www.pvsm.ru -

Page Visibility API и побочный эффект предотрисовки страниц

Сперва, небольшой эксперимент

Чтобы сделать эту небольшую статью намного интереснее, я предлагаю просто открыть результаты поиска Google [1] и сразу вернуться к чтению под катом.


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

Page Visibility API и побочный эффект предотрисовки страниц

Теперь зайдя на Amazon.com [2], мы обнаружим кучу сладостей в блоке «Вы смотрели» и «Похожие продукты»:

Page Visibility API и побочный эффект предотрисовки страниц

Да, Amazon посчитал, что это пользователь зашёл на страницу продукта и стал показывать подходящие рекомендации. «Беспокоящиеся» могут писать об утечке данных о поиска, но меня больше волнует веб-аналитика и разработка.

Выводы для разработчиков

На мой взгляд, prerender [3] — хорошая штука, но она имеет побочные эффекты, о которых теперь стоит задумываться при разработке проектов.

Итак, Wireshark показал, что бэкенд не сможет отличить prerender-запрос от обычного, поэтому, как минимум, серверные логи могут считать «мёртвых душ» — посетителей, которым показали сайт первым результатом, но фактического перехода не было. Так как аналитика реализована на бэкенде, то мы получили неожиданные рекомендации, но можно ли решить проблему при помощи фронтенда?

Да, в Javascript можно использовать Page Visibility API [4], который подскажет состояние страницы: document.visibilityState = 'prerender'. Таким образом, трекеры и счётчики могут дождаться момента первого явного отображения страницы и, в результате, аналитика и рекомендации вполне корректны.

Возможно есть и другие решения, которые я буду рад прочесть в комментариях.

Автор: javascript

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/29707

Ссылки в тексте:

[1] результаты поиска Google: https://www.google.com/search?q=Hershey's+Easter+Candy+Assortment+(Hershey's+Kisses%2C+Reese's+Miniatures+%26+Hershey's+Miniatures)%2C+24-Ounce+Bags+(Pack+of+2)

[2] Amazon.com: http://www.amazon.com/

[3] prerender: https://developers.google.com/chrome/whitepapers/prerender

[4] Page Visibility API: https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API

[5] Источник: http://habrahabr.ru/post/173201/