數(shù)據(jù)庫緩存
將查詢的表放入內(nèi)存中存儲(chǔ),需要再次查找的時(shí)候直接從內(nèi)存中獲取(redis)
CDN緩存
通過CDN訪問內(nèi)容最近最快的路勁攘烛,網(wǎng)站管理員部署焕妙,將常用的內(nèi)容放入CDN節(jié)點(diǎn)
代理服務(wù)緩存
第三方邊緣服務(wù)器優(yōu)化緩存
瀏覽器緩存
-
強(qiáng)緩存
關(guān)鍵詞
-
expires
- HTTP 1.0 字段
- 到其時(shí)間,根據(jù)判斷是否到期作為強(qiáng)緩存時(shí)間依據(jù)
- 因?yàn)楂@取的是本地時(shí)間湾揽,所以修改本地時(shí)間可改變緩存時(shí)間
-
cache-control
- disk cache 本地緩存
- 圖片,等大文件一般緩存到本地硬盤中
- memory cache 內(nèi)存緩存
- 數(shù)據(jù)類存入到計(jì)算機(jī)內(nèi)存
- 兩種緩存方式有瀏覽器自動(dòng)調(diào)配
- disk cache 本地緩存
-
pragma
-
協(xié)商緩存
為什么有HTTPS 協(xié)議
- HTTPS 是基于HTTP 2.0協(xié)議上增加了一個(gè)TLS 加密協(xié)議
- HTTP 傳輸協(xié)議是明文傳輸?shù)模瑸榱朔乐乖賯鬏斶^程中伍宦,被中間劫持谷歌增加了非對(duì)稱加密
- HTTPS 會(huì)增加了握手的時(shí)長(zhǎng)
- HTTPS 交互過程 ... 后期補(bǔ)全
HTTP code 碼標(biāo)識(shí)
- 1xx 表示協(xié)議處理中間狀態(tài),還需要后期處理
- 2xx 表示成功狀態(tài)
- 3xx 表示重定向乏梁,資源位置發(fā)生改變需要重新請(qǐng)求
- 4xx 表示請(qǐng)求報(bào)文有誤
- 5xx 表示服務(wù)端發(fā)生錯(cuò)誤
TCP 三次握手
- 第一次握手次洼,客戶端向服務(wù)端發(fā)送SYN包(seq=j),此時(shí)客戶端進(jìn)入SYN-SENT
- 第二次握手,服務(wù)端收到客戶端的SYN包并對(duì)SYN包加1(seq=j+1),并發(fā)送SYN+ACK(seq=k)遇骑,服務(wù)端進(jìn)入SYN-RECV狀態(tài)
- 第三次握手卖毁,客戶端收到服務(wù)端的SYN+ACK包,發(fā)送ACK(seq=k+1)落萎,發(fā)送完成后并與服務(wù)器建立連接亥啦。
注釋:[^SYN 同步字符] [^ACK 確認(rèn)字符]
百度百科:
第一次握手:建立連接時(shí),客戶端發(fā)送syn包(seq=j)到服務(wù)器练链,并進(jìn)入SYN_SENT狀態(tài)翔脱,等待服務(wù)器確認(rèn);SYN:同步序列編號(hào)(Synchronize Sequence Numbers)媒鼓。
第二次握手:服務(wù)器收到syn包届吁,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)ACK包(seq=k)绿鸣,即SYN+ACK包疚沐,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)。
第三次握手:客戶端收到服務(wù)器的SYN+ACK包枚驻,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1)濒旦,此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED(TCP連接成功)狀態(tài)再登,完成三次握手尔邓。
TCP 四次揮手
- 第一次揮手晾剖,客戶端向服務(wù)器發(fā)送fin標(biāo)志位報(bào)文,并告訴服務(wù)端要斷開連接梯嗽,客戶端狀態(tài)由established變?yōu)閒in-wait-1
- 第二次揮手齿尽,服務(wù)到收到客戶端fin報(bào)文,并發(fā)送ACK報(bào)文灯节,告訴客戶端要關(guān)閉的連接循头,服務(wù)端從established變成close_wait,,客戶端收到ACK報(bào)文炎疆,狀態(tài)變?yōu)閒in-wait-2
- 第三次揮手卡骂,服務(wù)端應(yīng)用可以關(guān)閉連接,并向客戶端發(fā)送fin 報(bào)文形入,服務(wù)端用close-wait編程last-wait
- 客戶端收到find報(bào)文全跨,回復(fù)ACK報(bào)文,客戶端狀態(tài)從fin-wait-2變?yōu)閠ime-wait,服務(wù)端收到ACK報(bào)文后直接關(guān)閉亿遂,將狀態(tài)變?yōu)閏lose
百度百科
由于TCP連接是全雙工的浓若,因此每個(gè)方向都必須單獨(dú)進(jìn)行關(guān)閉。這原則是當(dāng)一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個(gè)FIN來終止這個(gè)方向的連接蛇数。收到一個(gè) FIN只意味著這一方向上沒有數(shù)據(jù)流動(dòng)挪钓,一個(gè)TCP連接在收到一個(gè)FIN后仍能發(fā)送數(shù)據(jù)。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉耳舅,而另一方執(zhí)行被動(dòng)關(guān)閉碌上。
第一次揮手:TCP客戶端發(fā)送一個(gè)FIN,用來關(guān)閉客戶到服務(wù)器的數(shù)據(jù)傳送挽放。
第二次揮手:服務(wù)器收到這個(gè)FIN绍赛,它發(fā)回一個(gè)ACK,確認(rèn)序號(hào)為收到的序號(hào)加1辑畦。和SYN一樣吗蚌,一個(gè)FIN將占用一個(gè)序號(hào)。
第三次揮手:服務(wù)器關(guān)閉客戶端的連接纯出,發(fā)送一個(gè)FIN給客戶端蚯妇。
第四次揮手:客戶端發(fā)回ACK報(bào)文確認(rèn),并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1暂筝。
function showNavigationDetails() {
const [entry] = performance.getEntriesByType("navigation");
console.table(entry.toJSON());
}
showNavigationDetails(); //查看各個(gè)地方的相應(yīng)事件
//關(guān)于我們的Web性能箩言,我們會(huì)用到的時(shí)間參數(shù):
//DNS解析時(shí)間: domainLookupEnd - domainLookupStart
//TCP建立連接時(shí)間: connectEnd - connectStart
//白屏?xí)r間: responseStart - navigationStart
//dom渲染完成時(shí)間: domContentLoadedEventEnd - navigationStart
//頁面onload時(shí)間: loadEventEnd - navigationStart
HTTP 1.1 與 HTTP 2.0 有什么提升
- 頭部壓縮
- 多路復(fù)用
- 持久化鏈接
- 增加cache-control