Как отследить завершенную загрузку файла в ASP.NET - PullRequest
10 голосов
/ 07 октября 2010

У меня есть этот веб-сайт ASP.NET , который позволяет пользователям загружать установочные пакеты программы (только обычные файлы). Я хочу иметь возможность отслеживать, когда загрузка завершена (т. Е. Файл полностью загружен на компьютер пользователя), а затем вызвать скрипт Google Analytics, который сообщает о завершенной загрузке как «цель» (очевидно, одна из моих целей - увеличить загрузку файлов).

Проблема в том, что мне нужно поддерживать прямые URL-адреса файлов, а не решение "перенаправить страницу". Это связано с тем, что большой объем трафика поступает с сайтов загрузки программного обеспечения, которые явно запрашивают прямой URL-адрес файла при отправке продукта. Возможно, они проводят собственный анализ файлов (то есть проверку на вирусы). Но с таким набором ограничений типичный сценарий:

  1. Пользователь посещает мой список товаров на сайте загрузки программного обеспечения
  2. Пользователь нажимает кнопку "Скачать" на этом сайте
  3. Страница "Загрузка", как правило, представляет собой перенаправление, которое в конечном итоге приводит пользователя к моему файлу через прямой URL-адрес, который я первоначально отправил, т.е. http://www.ko-sw.com/somefile.exe

Если в этих условиях точное решение для мониторинга невозможно, возможно, существует обходной путь? Мне приходит в голову временное сохранение количества выполненных загрузок на сервере, а затем доступ к административной странице, которая каким-то образом сообщает об этом числе в Google Analytics и, наконец, обнуляет его. С этим обходным путем, по крайней мере, нет необходимости пытаться присоединить обработчик javascript к ресурсу, отличному от HTML. Но даже тогда возникают проблемы:

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

Спасибо всем заранее

Ответы [ 6 ]

8 голосов
/ 07 октября 2010

Лучшая альтернатива: пусть ваш установщик откроет веб-страницу после того, как пользователь установит веб-программное обеспечение. Пример: см. Установщик Keepass.

Вы можете отследить эту скорость открытия в GA и получить количество установок.

4 голосов
/ 15 октября 2010

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

2 голосов
/ 19 октября 2010

@ Керидо ~ Мне любопытно, что бизнес-кейс здесь. Вы пытаетесь отслеживать установку или загрузку? В случае установки воспользуйтесь решением @SamMeiers.

Однако, если вы пытаетесь отслеживать загрузки, то следующий вопрос: какую базу веб-серверов вы используете? IIS? Apache? Что-то еще?

В IIS, предполагая, что вы используете 7 (или более позднюю версию), вы могли бы (легко?) Написать HttpHandler, который проверяет последние байты отправляемого файла, и на этом записывать журнал где-нибудь.

В Apache просто настройте ведение логов, чтобы сообщить вам, сколько байт было передано (тривиальное изменение в httpd.conf), а затем ежедневно анализируйте логи (awstats [среди прочего] довольно хорош для этого, но вам, возможно, придется написать скрипт sed / awk) и узнайте, сколько полных переводов было выполнено. Все зависит от того, насколько тщательно ты пытаешься быть.

Но я возвращаюсь к тому, что для этого нужно? Какое это имеет значение, если были незавершенные загрузки?

1 голос
/ 18 октября 2010

Эта ссылка может вам помочь:

http://www.devx.com/dotnet/Article/22533/1954

Я использовал ее в качестве справки ранее для некоторых моих работ.

0 голосов
/ 12 октября 2010

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

0 голосов
/ 07 октября 2010

Можно отслеживать ссылки как цели, которые могут быть вам полезны. Тем не менее, он не будет отслеживать, когда загрузка была завершена. http://www.google.com/support/analytics/bin/answer.py?answer=55529

Надеюсь, это поможет. ура Tigger

...