Если вам нужен только номер завершенных загрузок, просто возьмите необработанные журналы с вашего 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 вместе. Особенно, если вас интересует «количество выполненных загрузок».