5

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

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

Как вы можете видеть, это два неудачных изображения, которые иллюстрируют общее поведение здесь. Я не могу повторить эту проблему с браузерами, такими как 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 ответ1

3

Из таймаута 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .