Почему некоторые PDF-файлы зависают при загрузке в IE, если их обслуживает Lighttpd

У нас есть несколько PDF-файлов, размещенных с помощью Lighttpd, но когда они загружаются в IE (7.0.5730.13), загрузка файла зависает в конце и не завершается. Например

http://static.vouchercodes.co.uk/printable/87-burger-king-voucher.pdf

http://static.vouchercodes.co.uk/printable/10-gbk.pdf

Это отлично работает в Firefox (3.0.5) как в OSX 10.5, так и в Windows XP, но не в IE 7.

Скриншот зависшей загрузки можно увидеть по адресу http://www.mytton.net/so-pdf-q.png

Это не локализовано для одной машины и было воспроизведено на других ПК с IE7 Windows. Проблема затрагивает только PDF-файлы на сайте vouchercodes.co.uk, так как другие сайты с PDF-файлами работают нормально.

Он также был воспроизведен с другими версиями IE7/IE6, но не всегда.


person davidmytton    schedule 07.01.2009    source источник


Ответы (2)


Я считаю, что это проблема постепенной загрузки плагина acrobat под IE.

Ваш сервер lighttpd отвечает на HTTP/1.1 206 Partial Content, что иногда приводит к странной остановке процесса загрузки в клиенте Acrobat.

Некоторые приводят к решению проблемы:

  • Не используйте параметр «Сохранить как оптимизированный для быстрого веб-просмотра» при создании файла PDF.
  • Снимите флажок «Разрешить фоновую загрузку всего файла» в настройках Acrobat Reader.
  • Отключить пропускную способность сервера (но это явно не рекомендуется)
person WiseTechi    schedule 07.01.2009
comment
Byteserving кажется проблемой. См. мой ответ в заголовке stackoverflow.com/questions/420295/, а также http://redmine.lighttpd.net/issues/show/171#note-8 - person davidmytton; 07.01.2009

Проблема связана с байтсервисом. См. раздел «Обслуживание байтов» на странице http://httpd.apache.org/docs/1.3/misc/known_client_problems.html

Плагин Adobe Acrobat Reader широко использует диапазоны байтов и до версии 3.01 поддерживает только ответ multipart/x-byterange. К сожалению, нет никакой подсказки, что это плагин делает запрос. Если плагин используется с Navigator, описанный выше обходной путь работает нормально. Но если подключаемый модуль используется с MSIE 3 (в Windows), обходной путь не будет работать, потому что MSIE 3 не дает подсказку Range-Request, которую делает Navigator. Чтобы обойти это, Apache использует специальные случаи «MSIE 3» в User-Agent и обслуживает multipart/x-byteranges. Обратите внимание, что необходимость этого в MSIE 3 на самом деле связана с подключаемым модулем Acrobat, а не с браузером.

Это также проблема в Lighttpd, документированная по адресу http://redmine.lighttpd.net/issues/show/171 с обходным решением (протестировано и работает) в примечании. 8.

person davidmytton    schedule 07.01.2009