优化TCP性能
将服务器内核升级到最新版本(Linux:3.2+)
1.增大TCP的初始拥塞窗口
把服务器的初始cwnd值增大到RFC 6928新规定的10段(IW10),是提升用户体验以及所有TCP应用性能最简单的方式
2.慢启动重启
在连接空闲时禁用慢启动可以改善瞬时发送数据的长TCP连接的性能。
3.窗口缩放
启用窗口缩放可以增大最大接受窗口的大小,可以让高延迟的连接达到更好的吞吐量。
4.TCP快速打开
在某些条件下,允许在第一个SYN分组中发送应用程序数据。TFO(TCP Fast Open,TCP快速打开)是一种新的优化选项,需要客户端和服务器共同支持。为此,首先要搞清楚你的应用程序是否可以利用这个特性。
4.1 减少传输冗余的数据
4.2压缩要传输的数据
4.3把服务器放到离用户最近的地方(cdn)
4.4尽最大可能重用已建立的TCP连接。
性能打点(可参考Navigator Timing)
兼容性 https://caniuse.com/#search=nav-timing
function init() {
performance.mark("startTask1")
applicationCode()
performance.mark('endTask1')
logPerformance()
}
function logPerformance() {
let perfEntries = performance.getEntriesByType('mark');
for(let i = 0;i<perfEntries.length;i++){
console.log(`Name: ${perfEntries[i].name},Type: ${perfEntries[i].startTime},Ducation: ${perfEntries[i].duration}`)
}
console.log(performance.timing);
}
预加载以触发浏览器为我们采用的优化机制
1.预解析特定的域名
<link rel="dns-prefetch" href="//hostname_to_reslove.com">
2.预取得页面后面要用的关键性资源
<link rel="subresource" href="javascript/myApp.js">
3.预取得将来导航要用到的资源
<link rel="prefetch" href="//xxx.big.jpeg">
4.根据对用户下一个目标的预测,预渲染特定的页面
<link rel="prerender" href="//hostname_to_reslove.html">
warning: 注意各大浏览器的兼容性
参考
1.web性能权威指南