为什么浏览器会通过慢速连接显示原始html(而不是解释它)?

时间:2009-08-20 23:07:21

标签: html browser performance

我有一些人在浏览器中看到原始html的报告(而不是他们的浏览器解释它)。这似乎发生在缓慢的连接上。发生这种情况时,如果用户重新加载页面,则会正确解释页面。是否有任何特定的html会导致这种情况发生(与服务器设置相反)?

3 个答案:

答案 0 :(得分:1)

也许如果在完全发送HTML之前连接超时。 DOM基本上是不完整的,可能无法正确解释。只是一个猜测。

答案 1 :(得分:1)

我想这称为FOUC问题。

  

无格式内容(FOUC)的Flash是   显示网页的实例   在加载之前简单地没有样式   外部CSS样式表。这页纸   尽快纠正自己   样式规则被加载和应用,   然而这种转变非常明显   分心。在网页之后   看来,观众看到了无格式的HTML   变身为不同风格   文档。

为什么页面需要更多的加载时间?

  

最有问题的任务之一   在Web浏览器上工作正在获得一个   准确测量多长时间   你正在加载网页。在   为了理解这是为什么   棘手,我们需要了解什么   当你提问时,浏览器就会这样做   加载网址。

     

那么当你去一个URL时会发生什么   喜欢cnn.com?那么,第一步是   开始从中获取数据   网络。这通常是在a上完成的   主UI线程以外的线程。

     

当页面的数据进来时,它   被送到HTML标记器。就是这样   tokenizer获取数据的工作   流和弄清楚是什么   个人令牌例如是一个开始   标签,属性名称,属性   值,结束标记等。标记生成器   然后将个人代币送到   HTML解析器。

     

解析器的工作是建立起来   DOM树的文档。一些DOM   元素也代表子资源   像样式表,脚本和图像,   那些负荷需要开始   何时遇到这些DOM节点。

     

除了构建DOM树之外,   现代CSS2兼容的浏览器也   建立单独的渲染树   表示实际显示的内容   画画时你的画面。它的   重要的是要注意两件事   渲染树与DOM树。

     

(1)如果样式表仍在加载,   建造这个建筑物是浪费的   渲染树,因为你不想要   直到所有人都要画任何东西   样式表已加载和   解析。否则你会碰到一个   问题叫做FOUC(闪光灯   没有问题的内容问题),你在哪里   在内容准备好之前显示内容。

     

(2)图像加载应该开始   尽快,这意味着   它们需要从DOM树中发生   而不是渲染树。您   不想等待CSS   文件加载只是为了启动   大量的图像。

     

如何处理有两种选择   延迟建设   因样式表而渲染树   负载。您可以阻止解析器   直到样式表加载,   这有缺点   你从并行化资源负载,   或者你可以允许解析继续   但只是阻止建设   渲染树。 Safari做到了   后者。

     

外部脚本必须阻止解析器   默认情况下(因为他们可以   文件撰写)。一个例外是什么时候   为脚本指定defer,in   浏览器知道它可以的情况   延迟脚本的执行和   继续解析。

     

有什么相关的   装载生活中的里程碑   只要找到你的页面就可以了   实际上可以可靠地显示内容吗?

     

(1)所有样式表都已加载。
  (2)HTML页面的所有数据都已存在   接收。
  (3)HTML的所有数据   页面已被解析。
  (4)全部   子资源已加载(onload   处理时间)。

您可以在 here 找到更多相关信息。

希望这有助于解释为什么会发生这种情况。

答案 2 :(得分:0)

如果HTTP标头被修改为发送带有错误mime类型的HTML,它将显示为文本而不是解析HTML。