文章摘要
网站大小控制在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
评论总结
主要观点总结:
网站性能优化的必要性
- 支持优化:一些评论者认为优化网站性能是必要的,尤其是在资源消耗和用户体验方面。
- 引用:
- "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)
- 引用:
- 支持优化:一些评论者认为优化网站性能是必要的,尤其是在资源消耗和用户体验方面。
技术细节与实现
- 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)
- 引用:
- TCP慢启动的影响:部分评论者讨论了TCP慢启动对网站加载速度的影响,并提出了技术解决方案,如调整初始窗口大小或使用QUIC协议。
不同地区的网络条件
- 地区差异:评论者提到,在印度或非洲等网络条件较差的地区,优化网站性能可能更为重要,而在欧美等网络条件较好的地区,则不必过于关注。
- 引用:
- "I’d care about this if I was selling in India or Africa."(moomoo11)
- 引用:
- 地区差异:评论者提到,在印度或非洲等网络条件较差的地区,优化网站性能可能更为重要,而在欧美等网络条件较好的地区,则不必过于关注。
环保与可持续发展
- 资源消耗与环保:有评论者强调,减少资源消耗不仅是为了提升性能,也是为了环保和可持续发展。
- 引用:
- "The environmental impact of our network is not negligible."(simgt)
- 引用:
- 资源消耗与环保:有评论者强调,减少资源消耗不仅是为了提升性能,也是为了环保和可持续发展。
个人项目与优化实践
- 个人网站的优化:一些评论者分享了他们个人网站的优化经验,展示了如何通过减少依赖和手工编写代码来实现极小的页面大小。
- 引用:
- "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的潜力也被广泛讨论。此外,地区差异和环保问题也被提及,表明优化策略应根据具体情况进行调整。