(一)瀏覽器端
協議相關
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 的資源然後,同步進行解析的