(一)浏览器端
协议相关
https (TLS / SSL)
http2.0
JS Number 精度丢失问题
场景: 服务端 Java 接口返回一个 Long 的值,太大,浏览器在转换为JSON 的时候 会 转换为浏览器最大值
- JS Number 最大值
2的53次方-1
- JAVA Long 最大值
2的63次方-1
js防抖和节流
- 防抖 :一定时间内只执行一次
- 节流 :频繁请求 ,减少请求次数(select 的search ,scroll 监听等)
// 节流函数 减少请求
// 考虑两种情况,没有输入后300毫秒进行请求,300ms 后数据未返回,有进行的输入,可以对前面的接口 abort 保存list 情况
const req = {
num: 0,
key: '',
list: [],
};
const fun4search = key => {
req.num++;
req.key = key;
new Promise(resolve => {
const old = { ...req };
setTimeout(() => {
if (old.num === req.num && req.key) {
// 请求---
console.log('---123', old, req);
}
resolve();
}, 1000);
});
};
浏览器端垃圾回收机制
(二)服务器端
常见问题
问题:js 合并好还是不合并好?
- 合并
优点:减少请求次数,和网络开销,
缺点: 资源太大,下载缓慢,容易卡顿
- 不合并
优点:在http2 的情况下网络开销是一致的,利用浏览器并行下载 加访问速度
缺点:。。。。
- 备注
浏览器是并行下载 script 的资源然后,同步进行解析的