我已经非常彻底地阅读了this对网络浏览器内部的描述,尽管它有点过时了。
根据此描述,每个HTML元素在内部由三个对象表示 - 文档标记,其渲染器(通常每个标记一个)和css样式上下文。针对css样式上下文描述了各种优化,这在天真的实现中可能非常大(可能是几千字节)。
然而,这些优化似乎还不够 - 现代浏览器现在可以处理非常大的文档(数万行),而且速度和速度都很高。内存使用率低。某些元素(例如<br>
)似乎不需要每个实例的渲染器或样式。此外,github上的长程序列表似乎使用了每个行具有嵌套元素的三个表格单元格,因此必须进行一些非常好的优化。
那么,问题是:在现代浏览器引擎中使用了哪些其他内存优化来表示HTML元素?
问题只是关于实际实现的内存优化,而只是关于元素表示,而不是javascript或浏览器的任何其他方面,所以我怀疑只有少数聪明的技术。
以下是我能想到的一些优化措施:
<span>
):实习名称。使用内部链接的元素列表(前向和后向指针)来避免外部列表的开销。<br>
等简单对象的单独渲染器?