浏览器中F5和Ctrl+F5区别

在Mac系统中F5对应command+R,Ctrl+F5对应command+shift+R。
二者皆可以实现刷新页面,但是区别是什么呢?

  • F5进行页面刷新时会向服务端发送If-Modify-Since请求头到服务端,服务端返回304 Not Modified,浏览器则使用本地缓存
    F5

    但是Mac中谷歌浏览器这里返回的是并不是304状态码,而是类似下图。显式标明了来自cache。
    200

    在火狐浏览器中则是304状态码
    304
  • Ctrl+F5要的是彻底的从Server拿一份新的资源过来,所以不光要发送HTTP request给Server,而且这个请求里面连If-Modified-Since/If-None-Match都没有,这样就逼着Server不能返回304,而是把整个资源原原本本地返回一份,这样,Ctrl+F5引发的传输时间变长了,自然网页Refresh的也慢一些。
    实际上,为了保证拿到的是从Server上最新的,Ctrl+F5不只是去掉了If-Modified-Since/If-None-Match,还需要添加一些HTTP Headers。按照HTTP/1.1协议,Cache不光只是存在Browser终端,从Browser到Server之间的中间节点(比如Proxy)也可能扮演Cache的作用,为了防止获得的只是这些中间节点的Cache,需要告诉他们,别用自己的Cache敷衍我,往Upstream的节点要一个最新的copy吧。原因:Ctrl+F5在发出请求时,会在请求消息头中加入Cache-Control:no-cache,Pragma:no-cache参数。


    Ctrl+F5

才疏学浅之处,切莫在意。
                              ——2019.7.15下午

你可能感兴趣的:(浏览器中F5和Ctrl+F5区别)