代码限制中的网页元素

时间:2017-01-10 17:51:25

标签: html css browser

网页可以在浏览器上加载的HTML元素(没有css,没有脚本)的数量是否存在严格(或有些硬)限制?

1 个答案:

答案 0 :(得分:1)

有点愚蠢的问题。良好的代码影响速度很快。更好的硬件降低了外行人区分好坏的能力。

可以说我们已经达到硬件的地步,只有极端的坏代码可以区分,但这是其他时间的讨论。

写好代码。
不要喂养不和谐。

至于你的具体问题......

1)根据可用的内存,是的。至少有多少,"是"这也是一个很好的答案,因为它依赖于很多东西,但通常高于你的合理命中率。

2)把它拉出我的屁股,但一般来说,你的网页速度慢的原因是(按照可能的顺序):

  1. 可用带宽的总文件大小太大
  2. JS挂钩垃圾邮件事件(例如滚动;永远不会挂钩滚动)
  3. 导致重绘和重排的JS
  4. 一般渲染
  5. JS的一般用途
  6. JS提取/解析延迟(async / defer和bottom-of-page-load是你的朋友)
  7. CSS解析&应用
  8. HTML解析(假设格式不正确)
  9. HTML解析(假设格式正确)
  10. 3)内联样式真的不会在宏大的计划中增加太多。它们的范围非常小。他们诚实地为文件大小贡献了比解析/应用更多的东西。

    4)不是很多。 CSS是声明性的和静态的。微软tried dynamic for a while但很快意识到一个想法是多么糟糕并且杀了它。 JS是真正的瓶颈,而不是CSS。

    5)取决于硬件和使用情况。头部10密耳空白<meta />标签可能会做的很少。另一方面,拥有大量支持CSS和JS的10密耳<div>标签,如果机器不够强劲(和64位),将会严重损坏。 其中一个迫切需要重构的页面目前有大约16800个元素,还有很多JS。页面在开始时相当糟糕,但一旦完成加载就会有相应的响应。与此同时,另一个人坐在89.7k左右。尽管规模要大一些,但它还没有大量的JS支持它,而且很多元素都是(通常)display:hidden,所以它实际上要快得多,而且更多响应页面(直到您点击ctrl+f)。

    6)不显着。有些东西可以在一个而不是另一个东西上加倍努力,但这通常是由于浏览器中的impl bug被一些非常奇怪的组合或网页命中的功能使用所引发。

    7)更好的硬件可以更快地处理更复杂的东西,假设它可以被利用。一台128核的计算机无法神奇地多线程化你的串行O((n ^ 7)!)脚本 - 虽然JIT优化器肯定可以尝试。

    8)服务器硬件对客户端速度影响很小,除非它被淹没并因此进入服务器端带宽限制。服务器硬件确实做了很多工作来影响它生成具有大量服务器端后端的页面的速度。再一次,让服务器做一些O((n ^ 7)!)的东西会越慢,硬件越差,并且由于请求该操作的用户数量而显着增加(假设你可以&#39;不要锁定并返回第一个请求结果的缓存副本。

    关于Repaints and Reflows的进一步阅读......文章的标题本身是荒谬的,但内容很好。重绘和回流的深入解释(甚至进一步阅读)虽然今天(8年后)不完全相同,但仍然是页面效率的关键概念。由于浏览器具有来呈现某些元素(例如没有table-layout: fixed;的表格),其中大部分仍然适用。