常見(jiàn)http狀態(tài)碼
301永久重定向
302臨時(shí)重定向
304緩存
400參數(shù)錯(cuò)誤
401沒(méi)登錄
403登陸了但沒(méi)有權(quán)限
404沒(méi)有此接口或頁(yè)面
500 服務(wù)器錯(cuò)誤
502 網(wǎng)關(guān)錯(cuò)誤
緩存
1.強(qiáng)制緩存 不會(huì)向服務(wù)器發(fā)請(qǐng)求
html不走強(qiáng)制緩存 內(nèi)部引用的資源可以強(qiáng)制緩存(js img css)
-
對(duì)比緩存
去服務(wù)器比較一下是否發(fā)生變化服務(wù)器給js等資源設(shè)置緩存頭
強(qiáng)制緩存 cache-control
1.no-store 每次都請(qǐng)求服務(wù)器 但是不存儲(chǔ)緩存到瀏覽器內(nèi)存
2.no-cache 每次都請(qǐng)求服務(wù)器 但是會(huì)緩存到瀏覽器內(nèi)存中
3.public
4.private
5.max-age
+ 如果設(shè)置了no-cache 捶箱,請(qǐng)求服務(wù)器如暖,服務(wù)器返回304 則去緩存中找得到
+ 如果設(shè)置了no-store 侦高,請(qǐng)求服務(wù)器,服務(wù)器返回304 則去緩存中找不到
cache-control(新版瀏覽器) expires(舊版本瀏覽器)
cache-control max-age=10 10秒過(guò)期
expires new Date(Date.now()+10*1000) 10秒過(guò)期
對(duì)比緩存
- 根據(jù)文件的修改時(shí)間 決定是否返回304 讓瀏覽器找緩存
last-modified:文件的最終修改時(shí)間
此后的請(qǐng)求中會(huì)帶上這個(gè)時(shí)間if-modify-since:時(shí)間,然后服務(wù)器做對(duì)比挚瘟,如果這個(gè)時(shí)間和最新的修改時(shí)間一樣就返回304(缺點(diǎn):時(shí)間變了內(nèi)容可能沒(méi)變或者1秒內(nèi)變化兩次) - 根據(jù)文件的內(nèi)容變化 決定是否返回304 讓瀏覽器找緩存
node中通過(guò)摘要算法crypto生成文件的摘要信息(md5 不可逆的算法稱為摘要算法)
相同的內(nèi)容生成的摘要相同
md5 = crypto.createHash('md5').update(value).digest('base64')
res.setHeader('Etag' ,md5)
之后的請(qǐng)求頭中會(huì)帶上if-none-match 來(lái)對(duì)比
強(qiáng)制緩存和對(duì)比緩存配合使用
+強(qiáng)制緩存 cache-control 設(shè)為no-cache
+對(duì)比緩存 last-modified:文件的最終修改時(shí)間
+Etag
緩存總結(jié):有強(qiáng)制,走強(qiáng)制;強(qiáng)制失效蛔翅,走對(duì)比。