Браузеры Webkit непоследовательно загружают изображения/ресурсы веб-страниц

Браузеры Webkit непоследовательно загружают изображения/ресурсы веб-страниц

У меня уже довольно давно есть эта проблема, когда веб-сайты, просматриваемые через браузеры на основе WebKit, непоследовательно загружают изображения. Под непоследовательным я подразумеваю, что при одном пробном запуске изображение или несколько изображений успешно загружаются, а другие — нет. При другом пробном запуске того же самого веб-сайта изображения, которые ранее не загружались, внезапно загружаются — а те, которые ранее загружались, внезапно не загружаются. Такое поведение настолько нелинейно, что мне крайне сложно определить источник проблемы. Я заметил, что эта проблема воспроизводится в таких браузерах, как jumanji, dwbи vimperator. Я считаю, что общим фактором для всех этих браузеров является то, что они используют webkit. Многократная перезагрузка веб-страницы иногда приводит к результату, когда все ресурсы загружаются правильно.

Вот скриншот описанного поведения (из webkit-based luakit): введите описание изображения здесь

Как вы видите, это два неудачных изображения, которые иллюстрируют общее поведение здесь. Я не могу воспроизвести эту проблему с такими браузерами, как Firefox или Chrome (которые, как я полагаю, используют geckoи blinkсоответственно). Если я щелкну правой кнопкой мыши по изображению/элементу и открою его в новом окне, я смогу просмотреть изображение без проблем. Я использую ядро ​​Arch Linux 3.12.9-1-ck. Любая помощь/понимание того, что может происходить, были бы очень признательны. Спасибо.


ОБНОВЛЯТЬ:Каждое сломанное изображение при проверке как элемента с помощью отладочной консоли в luakit выводит что-то вроде этой общей формы:

GET [web address here] Cannot resolve hostname [domain here]

ОБНОВЛЕНИЕ 2:Я попробовал установить luakitна установку virtualbox, 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 Публичный DNSилиOpenDNS, и посмотрите, есть ли разница. Если есть, то проблема в том, что ваш интернет-провайдер слишком медлителен в DNS или использует свой собственный кэш.


Еще одна ссылка наотключение HTTP keepalive с помощью 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.

Связанный контент