Браузеры Webkit некорректно загружают изображения / ресурсы веб-страниц
Я уже давно сталкиваюсь с этой проблемой, когда веб-сайты, просматриваемые через браузеры на основе webkit, загружают изображения непоследовательно. Под непоследовательностью я подразумеваю, что при одном пробном запуске изображение или несколько изображений будут загружаться успешно, а для других - нет. При другом пробном запуске того же самого сайта изображения, которые ранее не загружались, неожиданно загружаются - только для того, чтобы загружать ранее загруженные изображения, внезапно не загружаться. Такое поведение настолько нелинейно, что мне очень трудно найти источник проблемы. Я заметил, что эта проблема может быть воспроизведена в браузерах, таких как jumanji
, dwb
, а также vimperator
, Я считаю, что общий фактор среди всех этих браузеров заключается в том, что они используют webkit
, Повторная перезагрузка веб-страницы иногда приводит к тому, что все ресурсы загружаются правильно.
Вот скриншот описанного поведения (из веб-набора luakit
):
Как вы можете видеть, это два неудачных изображения, которые иллюстрируют общее поведение здесь. Я не могу повторить эту проблему с браузерами, такими как Firefox или Chrome (которые я считаю, использовать gecko
а также blink
соответственно). Если я щелкну правой кнопкой мыши на изображение / элемент и открою его в новом окне, я смогу просмотреть изображение без проблем. Я использую ядро Arch Linux 3.12.9-1-ck. Любая помощь / понимание того, что может произойти, будет высоко ценится. Спасибо.
ОБНОВЛЕНИЕ: Каждое испорченное изображение, когда проверяется как элемент путем отладки консоли в luakit, выводит что-то такого общего вида:
GET [web address here] Cannot resolve hostname [domain here]
ОБНОВЛЕНИЕ 2: я попытался установить luakit
на виртуальной коробке установки kali-linux
что я имею в моей системе (на основе Debian) через apt-get install luakit
и интересный результат... Нет симптомов неразрешенных имен хостов / неработающих образов / сбойных ресурсов. В этой виртуальной среде просмотр также сравнительно быстрее.
Решение:
Следуя предложению @harrymc (используя публичный DNS Google), он полностью уничтожил все признаки плохой загрузки страницы. Согласно @harrymc, это происходит из-за неисправного / медленного DNS и / или плохой стратегии кэширования DNS. Точнее говоря, причиной этой проблемы был плохой DNS, и, как представляется, довольно поспешный протокол тайм-аута, встроенный в webkit
двигатель. Эти два фактора являются причиной катастрофы.
Более открытая мысль-арка:
Еще один вывод - неэффективность браузеров Webkit в том, что они выдают несколько DNS-запросов для одного и того же сайта, а не запоминают первый запрос. Другой вывод заключается в том, что DNS-сервер интернет-провайдера, по-видимому, иногда не может обрабатывать несколько параллельных запросов (поскольку браузер, вероятно, обрабатывает несколько изображений параллельно через потоки), возможно, потому что у них теперь больше клиентов, но недостаточно DNS-серверов. --harrymc
1 ответ
Из таймаута Webkit убивает долго выполняющиеся задачи:
Мы только что были вынуждены реорганизовать / перекодировать значительную часть одного из наших RIA на основе AIR из-за произвольного решения, принятого командой Webkit, ограничить все запросы XML HTTP через жестко запрограммированный скрытый тайм-аут 60 секунд. Это решение влияет не только на AIR, но и на Safari и другие браузеры, основанные на Webkit.
Хотя это не обязательно относится к вашей проблеме, оно указывает на наличие жестко заданного времени ожидания в Webkit.
Если ваша проблема связана с тем, что тайм-ауты в Webkit слишком малы, вопрос заключается в том, почему вы испытываете долгое ожидание изображений, учитывая, что у вас быстрое соединение.
В качестве первого теста я предлагаю изменить ваш DNS-сервер на Google Public DNS или OpenDNS и посмотреть, будет ли это иметь значение. Если это так, то проблема заключается в том, что ваш провайдер слишком медленно работает на DNS или использует свой собственный кеш.
Еще одна ссылка на отключение поддержки активности HTTP User-Agent:
Давняя ошибка в Safari приводит к зависанию загрузки файлов при неправильном повторном использовании соединений keepalive.
https://bugs.webkit.org/show_bug.cgi?id=5760
В Apache отключение поддержки keepalive для Webkit решает эту проблему.
Если веб-сервер Apache по-прежнему отключает функцию keepalive для Webkit ( постоянное соединение HTTP), это означает, что для каждого изображения требуется отдельное соединение HTTP, а Firefox и Chrome могут использовать уже существующее соединение страницы, чтобы также загружать изображения без повторного подключения.,
Так как установление соединения обычно происходит довольно медленно, то это в сочетании с коротким встроенным таймаутом может объяснить проблему, которую Webkit имеет с изображениями.
Интересно, есть ли в ваших браузерах Webkit возможность изменения идентификатора агента пользователя?
Например, хотя абсолютно ничего не знал о vimperator, я нашел через Google плагин UserAgentSwitcherLite.