Отслеживание завершения загрузки с веб-сайта /cdn

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

1 ответ

Решение

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

Лучшее решение будет зависеть от вашего CDN, поэтому поговорите с ними, если вы еще этого не сделали. Однако вот как я это делал в прошлом.

К каждому созданному защищенному URL-адресу загрузки добавьте уникальный идентификатор пользователя, который сделал запрос. Типичный URL-адрес для загрузки CDN может содержать время истечения срока действия и хеш-код для предотвращения взлома. Сначала вы должны проверить свой CDN, чтобы убедиться, что вы выбрали имя переменной, которое не конфликтует с их API. В нашем случае мы договорились о префиксе ign_* (что означает игнорирование.)

До:

http://cdn.example.com/path/to/file.ext?e=EXPIRES&h=HASH

После:

http://cdn.example.com/path/to/file.ext?e=EXPIRES&ign_u=USERID&h=HASH

Пример (ссылка на скачивание для пользователя 1234):

http://cdn.example.com/path/to/file.ext?e=1356088260&ign_u=1234&h=39341385b9d99730646d927f620111e1

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

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

Стоит помнить, что если вы собираетесь самостоятельно обрабатывать журналы, это сгруппировать частичные записи HTTP 206 вместе. Особенно, если вы заинтересованы в "количестве завершенных загрузок".

Другие вопросы по тегам