Как отслеживать завершенную загрузку файла в ASP.NET
У меня этот веб-сайт ASP.NET, который позволяет пользователям загружать установочные пакеты программы (только обычные файлы). Я хочу отслеживать, когда загрузка завершена (т.е. Файл был полностью загружен на компьютер пользователя), а затем вызвать Google Analytics script, который сообщает о завершенной загрузке в качестве "цели" (очевидно, один из моих целью является увеличение загрузки файлов).
Проблема в том, что мне нужно поддерживать прямые URL-адреса файлов, в отличие от решения "страницы переадресации". Это связано с тем, что большой объем трафика поступает с сайтов загрузки программного обеспечения, которые явно запрашивают прямой URL-адрес файла при отправке продукта. Возможно, они проводят собственный анализ файлов (например, проверку вирусов). Но с этим набором ограничений типичный сценарий:
- Пользователь посещает мой список продуктов на сайте загрузки программного обеспечения.
- Пользователь нажимает кнопку "Загрузить" на этом сайте.
- Страница "Загрузка" - это, как правило, перенаправление, которое, наконец, приводит пользователя к моему файлу через прямой URL-адрес, который я первоначально отправил, т.е.
http://www.ko-sw.com/somefile.exe
Если в этих условиях точное решение для мониторинга невозможно, возможно, существует обходное решение? То, что приходит мне на ум, временно хранит количество выполненных загрузок на сервере, а затем обращается к административной странице, которая каким-то образом сообщает этот номер в Google Analytics и, наконец, возвращает его к нулю. С этим обходным решением, по крайней мере, нет необходимости пытаться присоединить обработчик javascript к ресурсу, отличному от HTML. Но даже тогда есть проблемы:
- Как отслеживать завершение загрузки?
- Как отслеживать возможности геолокации пользователей и браузера, чтобы сделать их более заметными в отчетах?
Спасибо всем заранее
Ответы
Ответ 1
Лучшая альтернатива: пусть ваш установщик откроет веб-страницу после того, как пользователь установит веб-программное обеспечение. Пример: см. Установщик Keepass.
Вы можете отслеживать эту начальную скорость в GA и получать номера установок.
Ответ 2
Согласно awstats, прерванная загрузка имеет код состояния 206 http, поэтому, если вы анализируете журнал сервера для такого кода, вы можете получить те загрузки, которые были не завершено.
Ответ 3
@Керидо ~ Мне любопытно, что такое бизнес-пример. Вы пытаетесь отслеживать установки или загрузки? Если вы устанавливаете, перейдите к решению @SamMeiers.
Однако, если вы пытаетесь отслеживать загрузки, то следующий вопрос: какую базу веб-серверов вы используете? IIS? Apache? Что-то еще?
В IIS, если вы используете 7 (или более поздней версии), вы могли бы (легко?) написать HttpHandler, который проверяет последние байты файла, который будет отправлен, и на этом записывать журнал где-нибудь.
В Apache просто настройте протоколирование, чтобы рассказать вам, сколько байтов было передано (тривиальное изменение в httpd.conf), а затем каждый раз анализировать журналы (awstats [среди других] неплохо для этого, но вам, возможно, придется писать sed/awk script) и узнать, сколько полных переводов было завершено. Просто зависит от того, насколько тщательно вы пытаетесь быть.
Но я возвращаюсь к тому, что это за бизнес? Какое это имеет значение, если были незавершенные загрузки?
Ответ 4
Эта ссылка может вам помочь:
http://www.devx.com/dotnet/Article/22533/1954
Я использовал его как ссылку ранее для некоторых своих работ.
Ответ 5
Можно отслеживать ссылки как цель, которая может вам пригодиться. Однако это не будет отслеживать, когда загрузка будет завершена.
http://www.google.com/support/analytics/bin/answer.py?answer=55529
Надеюсь, это поможет.
ура
Tigger
Ответ 6
Я думаю, что решение @SamMeiers очень хорошее, но вы можете оптимизировать его, вызвав веб-службы после завершения установки, но вы можете найти небольшую проблему, если использовать установку приложения в среде без Интернета, но вы можете заставить проверить если есть интернет или нет.
Вы можете создать любой триггер, когда вы начнете установку как флаг запуска, а затем, если завершить проверку, если флаг начала существует, приложение также было загружено и установлено.