我想用浏览器的方式模拟对HTML文档的请求。这意味着我不仅要下载主HTML文件,还要链接CSS,JS,图像等内容。
现在我只想解析第一个HTML文档。即我没有考虑因解析而导致的请求说出CSS(背景图像,网络字体)或JavaScript(Ajax)等。
要实现这一点,我需要知道浏览器如何精确处理网站。我没有找到一个很好的参考。任何有关这方面的帮助将非常感激,并可能解决我的问题。
由于我缺乏任何好的参考资料,我认为这个过程(不考虑重定向,考虑渲染等)就是这样的:
www.facebook.com
这甚至接近浏览器的工作方式吗?
加分问题:标题中的JavaScript和CSS文件的顺序是否有所不同?
我使用Chrome开发者工具(Chrome 18)进行了一些测试以确认。我连接到www.facebook.com
测量每个Object加载的时间。使用 Ctrl + R 重新加载时,结果如下所示:
最令我困惑的是,即使来自同一主机(static.ak.fbcdn.net
),大多数请求也会与其他请求并发。我的浏览器禁用了流水线(这是默认设置),为什么请求似乎仍然同时发生?
答案 0 :(得分:2)
浏览器确实使用多个连接,以加快下载速度(并行下载资源)。但它们限制了到同一主机的连接数,这是内容传送网络存在的原因之一。
标题中的CSS和脚本文件的顺序很重要,如scripts block parallel downloading(除非脚本没有被推迟)。
此外,浏览器在接收HTML时解析HTML(再次加快速度) - 这是一个原因,如果你把一个脚本放在头部试图操纵尚未加载的DOM元素,你就会收到错误。
但所有这些都是浏览器实现细节,可能对您的任务不重要。 最好 - 查看一些无头浏览器的源代码,找出发生了什么。