- 合格的开发者知道怎么做,而优秀的开发者知道为什么那么做。我们都希望自己能够理解身边的各种系统,同时还能跟别人讲的明白。没有基础,那只能时墙上芦苇,头重脚轻根底浅。需要解决难题时,发生异常状况时,理解基础知识的人会脱颖而出。
- 要设计和开发高性能的应用,必须理解每一位数据是如何交付的,必须理解每一种传输机制和相关协议的特点。毕竟,等待网络是我们应用最大的性能瓶颈,再怎么优化渲染JS或其他方面,也抵不上网络优化。
- WPO产业(Web Performance Optimization,web性能优化)。结论很简单,要想给用户最佳的体验,而且保证他们全神贯注于手边的任务,我们的应用必须在几百毫秒之内响应。这几乎没有给我们-特别是网络,流出多少出错的余地。若要成功,必须认真对待网络延迟。
- traceroute是一个简单的网络诊断工具,可以列出分组经过的路由节点。
- TCP
- 为什么知道有一个慢启动对我们构建浏览器应用这么重要呢?因为包括HTTP在内的很多应用层协议都运行在TCP之上,无论带宽多大,每个TCP连接都必须经过慢启动阶段。换句话说,我们不可能一上来就完全利用连接的最大带宽。慢启动导致客户端和服务器之间需要经过几百毫秒才能达到接近速度最大值问题。
- 虽然TCP很流行,但在某些情况下不是最佳的选择。特别是按序交付和可靠交付有时候并不必要,反而会导致额外的延迟,对性能造成负面影响。这一切都发生在TCP层,应用程序对TCP重发和缓冲区中排队的分组一无所知,必须等待分组全部到达才能访问数据。在此之前,应用程序只能通过套接字读数据时感觉到延迟交付。这种效应称为TCP的对首阻塞。
- 大多数情况下,TCP的瓶颈都是延迟,而非带宽。原因如下:
- 在着手调整TCP的缓冲区/超时等数十个变量之前,最好先把主机操作系统升级到最新版本。TCP的最佳实践以及影响其性能的底层算法一直在与时俱进,而且大多数变化都只在最新内核中才能实现。一句话,让你的服务器跟上时代是优化发送端和接受端TCP栈的首要措施。
- 数据报和分组是有区别的。分组可以用来指代任何格式化的数据块,而数据报则通常只用来描述那些不可靠的服务传输的分组。
- UDP实现方式中,所有的错误检测和错误纠正工作都可以委托给上层的应用程序。==说到底,UDP仅仅是在IP层之上通过嵌入应用程序的源端口和目标端口,提供一个应用程序多路复用机制。==UDP是一个简单,无状态的协议。
- UDP的应用,最广为人知同时也是所有浏览器和因特网应用都赖以运作的,就是DNS(Domain Name System,域名系统)。
- 可以分片的一定是分组,即使用的是TCP。
- NAT作为解决IPv4地址即将耗尽的一个临时性方案留用至今。保留的私有网络地址范围,为防止路由错误和引起不必要的麻烦,不允许给外网计算机分配保留的私有IP地址。所以在外网环境中不可能见到192.168…
- 不能指望延迟在将来能下降多少,因为光电信号的传输速度已经是光速的一个非常小的常数因子了。
- 应用的性能,特别是首次加载时的渲染前时间,直接取决于标记,样式表和javascript之间的依赖关系。DOM构建在javascript执行完毕前无法进行,而javascript在CSSDOM构建完成前也无法进行。
- 用户期望
- 延迟是性能瓶颈。故减少页面加载时间两个有效的方法是:
- 减少RTT时间
- 减少加载每个页面过程中的往返次数。使得加载同样多的数据只需更少的往返。因此网络优化是提升移动web应用性能的关键。
- 可以在浏览器中访问标准的performance.timing对象。它提供了DNS和TCP连接时间,而且精确度达到微秒级时间戳。还有Resource Timing和User Timing。综合运用Navigation/Resource/User计时API,可以对每个web应用的真实用户性能进行度量,再也不要说没有精确的数据了。
- 触发浏览器采用其自带的优化机制
- 消除或减少不必要的网络延迟和将需要传输的数据压缩至最少。这两条标准是经典的性能优化的最佳实践,是其他数十条性能准则的出发点。
- 减少请求的http首部数据,节省的时间相当于几次往返的延迟时间。
- 选对图片格式,使用了PNG而非JPG或者WebP,多产生几百甚至上千KB数据是轻而易举的事。选定图片格式后,不要让图片超过它需要的大小。
- 尽可能使用有损压缩。较高压缩率可以明显减少字节数,同时图片品质不会有太大或太明显的损失,尤其是在较小(手机)屏幕上看,不容易发现。
- Blob一般代表一个不可变的文件对象或原始数据。如果你不需要修改它或者不需要把它切分城更小的块,这种格式是理想的。而如果你还需要再处理接收到的二进制数据,那么选择ArrayBuffer更合适。
通过我的一文让你对Web性能有更亲切的理解
最新推荐文章于 2024-10-04 00:46:18 发布
本文探讨了Web性能优化的重要性,强调了网络延迟在应用性能中的决定性作用。介绍了traceroute工具、TCP慢启动原理及其对性能的影响,讨论了UDP协议在减少延迟中的角色,以及DNS在互联网应用中的关键地位。同时,提到了NAT、IP分片和HTTP头部优化等技术细节,并指出通过精确的性能计时API可以更好地度量和优化网页加载时间。最后,强调了正确选择图片格式和压缩方法对减少数据传输和提升用户体验的影响。
摘要由CSDN通过智能技术生成