Большинство браузеров делают несколько HTTP-запросов при отображении PDF из браузера
большинство (т. е. FF, Safari, Chrome, Opera) делают несколько HTTP-запросов для файла PDF при отображении PDF в браузере? Я работаю над проблемой интеграции с программным обеспечением Webtrends Web Analytics, и статистика вокруг PDF-файлов кажется неправильной. Поддержка сказала мне, что, поскольку WebTrends анализирует журналы доступа к веб-серверам для определения трафика, загрузок и т. д. он имеет трудное время определения точных загрузок PDF, потому что:
Когда пользователь нажимает на PDF и PDF открывается в браузере пользователя через плагин браузера Acrobat Reader каждая страница загружается по одной за раз-это делается для экономии пропускной способности, если пользователь просматривает только первые 2 страницы 50-страничного PDF, загружаются только первые 2 страницы.
Это звучит подозрительно для меня (как можно сделать HTTP-запрос, чтобы обслуживать только часть двоичного файла?) ... Я искал в Google, но не нашел ничего, что говорит это.
Я попытаюсь найти некоторое программное обеспечение IE, которое позволяет я нюхаю HTTP-трафик завтра, чтобы увидеть, могу ли я наблюдать это явление.
любая информация/мысли приветствуется.
4 ответов
Если ваш сайт возвращает заголовок ответа HTTP следующим образом:
Accept-Ranges: bytes
программа чтения PDF закроет внутреннее соединение после прочтения всего нескольких КБ документа. Затем он запрашивает разделы документа по мере необходимости с заголовком запроса диапазона, например:
Range: bytes=242107-244329, 8060-76128
пример url, который делает это http://www.ovationguitars.com/img/OVmanual.pdf .
Если вы не вернете заголовок Accept-Ranges, документ PDF будет быть загружены в одном запросе (например,http://manuals.info.apple.com/en/iphone_user_guide.pdf )
вы можете увидеть поведение читателя PDF в IE с помощью этому httpwatch.
** отказ от ответственности: Этот ответ был отправлен Simtec Limited, создателями HttpWatch**
для меня по состоянию на июнь 2016 года Firefox и IE11 делают только один звонок.
Chrome делает два вызова, если нет Content-Disposition
заголовок. Когда он отсутствует, Chrome делает два, кажется, отменяет второй и показывает PDF в браузере. Сервер не знает, что второй отменяется, и отправляет PDF снова.
когда этот заголовок отправляется с сервера, Chrome делает только один вызов и запускает или сохраняет файл.
Content-Disposition: attachment
(вы также можете предложить имя файла, которое будет использоваться при сохранении файла пользователем...)
Content-Disposition: attachment; filename=test.pdf
мои мысли в том, что вы на месте: ваш плагин не может (и не должен) разделить PDF-файлы на запросы.
У меня есть веб-приложение, которое обслуживает PDF-файлы из запроса (один запрос) и отображается в плагине. Он отображает весь PDF без получения дополнительной информации.
кроме того, если вы ищете http-сниффер, вы можете попробовать Саша. Я нашел это полезным во время отладки веб-сайта.
в моих тестах двойные запросы к PDF-файлу происходят в Chrome, Если у меня включено расширение Rest Console 4.0.2. Отключение этого расширения делает работу Chrome ожидаемой (только один запрос).
Edit: расширение Instapaper включено также делает Chrome делать двойные запросы в PDF.