Отслеживание продолжительности посещения сайта с помощью логов Nginx - PullRequest
0 голосов
/ 06 июля 2018

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

Что было бы хорошей стратегией для отслеживания продолжительности посещения с помощью журналов доступа? (Я использую Nginx, но, вероятно, те же идеи будут действительны для Apache)

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Если он еще не является частью вашей сборки, установите модуль Nchan websockets для Nginx.

Сконфигурируйте директиву о расположении абонента websocket на вашем сервере Nginx и укажите в ней директивы nchan_subscribe_request и nchan_unsubscribe_request.

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

Вот и все, готово.

Теперь, когда я захожу на вашу страницу, мой браузер будет подключаться к вашему серверу Nginx / Nchan. Nginx отправит внутренний запрос на любой адрес, который вы указали в качестве URL nchan_subscribe_request, вы можете передать мой IP в заголовках этого запроса или на любой другой, который вам нужен, чтобы идентифицировать меня. Зарегистрируйте это в своем основном журнале, в отдельном журнале, передайте на вышестоящий сервер, php, node, создайте запись в базе данных, сохраните мою метку времени ip + в memcached, что угодно.

Затем, когда я покидаю сайт, соединение с веб-сокетом будет прервано, и Nginx будет делать то же самое, но вместо URL nchan_unsubscribe_request. В зависимости от того, что вы сделали, когда я подключился, теперь вы можете делать все, что вам нужно, чтобы определить, сколько времени я провел на вашем сайте.

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

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

0 голосов
/ 06 июля 2018

Из-за отключенной природы HTTP ваш журнал доступа, вероятно, не даст вам того, что вам нужно.

Не совсем знаком с журналом nginx или apache, но я думаю, что большинство журналов содержат метку времени, HTTP-запрос (запрошенный документ и статус и т. Д.) И IP-адрес.

Потенциальные проблемы

  1. Без cookie-файла сеанса все IP-адреса (одно и то же домашнее хозяйство, одна и та же компания и т. Д.) Будут рассматриваться как один и тот же сеанс.
  2. Если кто-то заходит на ваш сайт (1 HTTP-запрос), использует контент на вашем сайте, не переходит на другую страницу и уходит, ваш журнал будет содержать только этот запрос (что по сути является отказом, и вы выиграли » не сможет рассчитать продолжительность). Если ваше приложение использует много вызовов javascript, вы можете войти в приложение на стороне сервера,
  3. 2) Если вы используете такой инструмент, как GA и т. Д., Вы все равно можете использовать события таймера и JavaScript (и т. Д., Хотя и не идеально), чтобы сообщить GA, что сеанс все еще активен. Не уверен, что это работает для типичных журналов сервера.
  4. Это может быть не так сложно, как проблема, если типичное посещение содержит более 1 запроса, зная, что не существует простого способа получить продолжительность после последнего запроса к серверу.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...