在Mac系統(tǒng)中F5對(duì)應(yīng)command+R爬凑,Ctrl+F5對(duì)應(yīng)command+shift+R。
二者皆可以實(shí)現(xiàn)刷新頁(yè)面试伙,但是區(qū)別是什么呢嘁信?
- F5進(jìn)行頁(yè)面刷新時(shí)會(huì)向服務(wù)端發(fā)送If-Modify-Since請(qǐng)求頭到服務(wù)端,服務(wù)端返回304 Not Modified疏叨,瀏覽器則使用本地緩存
F5
但是Mac中谷歌瀏覽器這里返回的是并不是304狀態(tài)碼潘靖,而是類似下圖。顯式標(biāo)明了來(lái)自cache蚤蔓。
200
在火狐瀏覽器中則是304狀態(tài)碼
304
-
Ctrl+F5要的是徹底的從Server拿一份新的資源過(guò)來(lái)秘豹,所以不光要發(fā)送HTTP request給Server,而且這個(gè)請(qǐng)求里面連If-Modified-Since/If-None-Match都沒(méi)有昌粤,這樣就逼著Server不能返回304,而是把整個(gè)資源原原本本地返回一份啄刹,這樣涮坐,Ctrl+F5引發(fā)的傳輸時(shí)間變長(zhǎng)了,自然網(wǎng)頁(yè)Refresh的也慢一些誓军。
實(shí)際上袱讹,為了保證拿到的是從Server上最新的,Ctrl+F5不只是去掉了If-Modified-Since/If-None-Match,還需要添加一些HTTP Headers捷雕。按照HTTP/1.1協(xié)議椒丧,Cache不光只是存在Browser終端,從Browser到Server之間的中間節(jié)點(diǎn)(比如Proxy)也可能扮演Cache的作用救巷,為了防止獲得的只是這些中間節(jié)點(diǎn)的Cache壶熏,需要告訴他們,別用自己的Cache敷衍我浦译,往Upstream的節(jié)點(diǎn)要一個(gè)最新的copy吧棒假。原因:Ctrl+F5在發(fā)出請(qǐng)求時(shí),會(huì)在請(qǐng)求消息頭中加入Cache-Control:no-cache精盅,Pragma:no-cache參數(shù)帽哑。
Ctrl+F5
才疏學(xué)淺之處,切莫在意叹俏。
??????????????????????????????——2019.7.15下午