我遇到这个问题已经有一段时间了,通过基于 webkit 的浏览器查看的网站加载图像不一致。不一致,我的意思是在一次试运行中,一个或多个图像将成功加载,而其他图像则不会。在同一个网站的另一次试运行中,之前未加载的图像将突然加载——只有之前加载的图像突然无法加载。这种行为是如此非线性,以至于我很难找出问题的根源。我注意到,这个问题是复制与浏览器,如jumanji,dwb和vimperator。我相信所有这些浏览器的共同点是它们使用webkit. 重复重新加载网页有时会产生所有资源都正确加载的结果。
这是所描述行为的屏幕截图(来自基于 webkit 的luakit):

正如您所看到的,这是两个失败的图像,它们说明了此处的常见行为。我无法使用 firefox 或 chrome 等浏览器(我相信它们分别使用gecko和blink)来复制此问题。如果我右键单击图像/元素并在新窗口中打开它,我可以毫无问题地查看图像。我正在运行 Arch Linux 内核 3.12.9-1-ck。任何有关可能发生的事情的帮助/见解将不胜感激。谢谢你。
更新:当通过 luakit 中的调试控制台将每个损坏的图像作为元素进行检查时,会输出以下一般形式的内容:
GET [web address here] Cannot resolve hostname [domain here]
Run Code Online (Sandbox Code Playgroud)
更新 2:我尝试通过,在我的系统(基于 debian)上安装luakit的虚拟机安装,有趣的结果......没有未解析的主机名/损坏的图像/失败的资源的症状。在此虚拟环境中,浏览速度也相对较快。kali-linuxapt-get install luakit
遵循@harrymc 提出的建议(使用 Google 公共 DNS)已经完全消除了页面加载不良的所有症状。根据@harrymc 的说法,这是由于错误/缓慢的 DNS 和/或糟糕的 DNS 缓存策略造成的。更具体地说,导致此问题的原因是 DNS 不佳,以及webkit引擎中内置的似乎相当仓促的超时协议。这两个因素是灾难的根源。
另一个结论是 Webkit 浏览器的低效率,因为它们对同一个网站发出多个 DNS 查询,而不是记住第一个查询。另一个结论是,ISP 的 DNS 服务器有时显然无法处理多个并行请求(因为浏览器可能通过线程并行处理多个图像),可能是因为它们现在有更多的客户端,但没有足够的 DNS 服务器。 --harrymc