Hacker News 中文摘要

RSS订阅

为何你的网站应控制在14kB以内 -- Why your website should be under 14kB in size

文章摘要

网站大小控制在14kB以内可以显著提升加载速度,这是因为TCP慢启动算法的影响。TCP(传输控制协议)通过IP(互联网协议)可靠地发送数据包,而HTTP请求通常由多个TCP包组成。IP本身无法确认数据包是否成功到达,而TCP确保所有数据完整传输,避免网页内容缺失。因此,保持网站小于14kB可以优化用户体验,减少加载时间。

文章总结

文章主要内容总结

标题:为什么你的网站应该控制在14kB以内

文章链接:Why your website should be under 14kB in size

1. 网站大小与加载速度的关系

  • 较小的网站加载速度更快,这是常识。但令人惊讶的是,14kB的页面可能比15kB的页面加载速度快612ms,而15kB和16kB页面之间的差异则微不足道。
  • 这种差异源于TCP慢启动算法

2. TCP协议简介

  • 传输控制协议(TCP)是一种通过互联网协议(IP)可靠传输数据包的方式,通常称为TCP/IP
  • 浏览器通过HTTP请求网站资源,HTTP建立在TCP之上,单个HTTP请求通常由多个TCP数据包组成。
  • TCP确保数据包成功到达目的地,避免网页数据丢失。

3. TCP慢启动算法

  • TCP慢启动算法用于服务器确定一次可以发送多少数据包。
  • 服务器初始发送少量数据包(通常为10个),如果收到确认(ACK),则逐步增加发送量,直到数据包丢失。
  • 这种机制帮助服务器适应网络带宽。

4. 14kB的由来

  • 大多数服务器的TCP慢启动算法初始发送10个TCP数据包,每个数据包最大为1500字节,其中40字节用于头部,剩余1460字节用于数据。
  • 因此,10个数据包的总大小为14600字节,约14kB。
  • 如果网站的关键部分能控制在14kB以内,可以节省用户与服务器之间的一次往返时间。

5. 往返时间的影响

  • 用户对加载时间非常敏感,一次往返时间可能很长,具体取决于延迟
  • 以卫星互联网为例,数据从用户设备到卫星再到地面站,往返时间可能长达612ms。
  • 对于普通用户,2G、3G网络或高流量服务器也可能导致显著的延迟。

6. 如何应用14kB规则

  • 尽量将网站控制在14kB以内,包括压缩后的数据(实际未压缩数据可能约为50kB)。
  • 确保前14kB的数据能渲染出有用的内容,如关键CSS、JS和部分文本。
  • 注意HTTP头和图片也计入14kB,因此应优化首屏内容。

7. 规则的例外

  • 14kB规则更像是一个经验法则,而非绝对定律。某些服务器可能初始发送30个数据包,或通过TLS握手确定更大的窗口。
  • HTTP/2和HTTP/3并未完全废除14kB规则,QUIC协议仍建议遵循此规则。

8. 进一步阅读

  • 文章内容参考了多篇关于网络性能的深度文章,推荐读者进一步了解相关技术细节。

发布日期:2022年8月25日
修改日期:2022年8月26日
作者:Nathaniel
标签:posts post web performance HTTP TCP

评论总结

主要观点总结:

  1. 网站性能优化的必要性

    • 支持优化:一些评论者认为优化网站性能是必要的,尤其是在资源消耗和用户体验方面。
      • 引用
        • "It’s absolutely worth optimising your site though. It just is such a pleasing experience when a page loads without any perceptible lag!"(firecall)
        • "Aside from latency, reducing ressources consumption to the minimum required should always be a concern if we intend to have a sustainable future."(simgt)
    • 反对过度优化:另一些评论者认为,过度优化并不必要,尤其是在网络条件较好的地区,用户体验的微小提升可能不值得投入大量资源。
      • 引用
        • "A good experience doesnt have to load under 50ms, it is fine for it to take a second."(paales2)
        • "If I’m selling to cash cows in America or Europe it’s not an issue at all."(moomoo11)
  2. 技术细节与实现

    • TCP慢启动的影响:部分评论者讨论了TCP慢启动对网站加载速度的影响,并提出了技术解决方案,如调整初始窗口大小或使用QUIC协议。
      • 引用
        • "If you want to have fun with this: the initial window (IW) is determined by the sender. So you can configure your server to the right number of packets for your website."(crawshaw)
        • "If you care about reducing the amount of back and forth then just use QUIC."(gammalost)
    • HTTP/3的潜力:有评论者指出,HTTP/3使用UDP协议,可能绕过TCP慢启动的问题。
      • 引用
        • "HTTP/3 uses UDP rather than TCP, so TCP slow start should not apply at all."(mikl)
  3. 不同地区的网络条件

    • 地区差异:评论者提到,在印度或非洲等网络条件较差的地区,优化网站性能可能更为重要,而在欧美等网络条件较好的地区,则不必过于关注。
      • 引用
        • "I’d care about this if I was selling in India or Africa."(moomoo11)
  4. 环保与可持续发展

    • 资源消耗与环保:有评论者强调,减少资源消耗不仅是为了提升性能,也是为了环保和可持续发展。
      • 引用
        • "The environmental impact of our network is not negligible."(simgt)
  5. 个人项目与优化实践

    • 个人网站的优化:一些评论者分享了他们个人网站的优化经验,展示了如何通过减少依赖和手工编写代码来实现极小的页面大小。
      • 引用
        • "I just checked my home page and it has a compressed transfer size of 7.0 kB."(susam)
        • "Damn... I’m at 17.2KB for my home page!"(firecall)

总结:

评论中关于网站性能优化的观点存在分歧。一方面,有人认为优化是必要的,尤其是在资源消耗和用户体验方面;另一方面,有人认为在欧美等网络条件较好的地区,过度优化并不值得。技术细节如TCP慢启动和HTTP/3的潜力也被广泛讨论。此外,地区差异和环保问题也被提及,表明优化策略应根据具体情况进行调整。