加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别--转

发布时间:2020-12-14 06:19:17 所属栏目:Java 来源:网络整理
导读:其中,在地址栏按回车又分为两种情况。一是请求的URI在浏览器缓存中未过期,此时,使用Firefox的firebug插件在浏览器里显示的HTTP请求消息头如下:Host?? ?192.168.3.174:8080User-Agent?? ?Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.

其中,在地址栏按回车又分为两种情况。一是请求的URI在浏览器缓存中未过期,此时,使用Firefox的firebug插件在浏览器里显示的HTTP请求消息头如下:Host?? ?192.168.3.174:8080User-Agent?? ?Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0Accept?? ?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language?? ?zh-cn,zh;q=0.5Accept-Encoding?? ?gzip,deflateAccept-Charset?? ?GB2312,utf-8;q=0.7,*;q=0.7Connection?? ?keep-aliveHTTP返回状态显示200 OK,但是,后台Nginx服务器的access.log并没有找到该请求的记录,说明请求并没有真正提交到HTTP服务器。而是被浏览器发现缓存中还有未过期的文件,直接把请求拦截了,firebug里面显示所谓的“请求头消息”、“响应头消息”都是浏览器“伪造”的。这种刷新,使用的网络流量是最小的,可以说完全没有,时间消耗也是最少的。就像你找到一盒没有过期的牛奶,觉得肯定没有问题,谁都没告诉就喝了。二是请求的URI在浏览器缓存中已过期,此时,firebug显示的HTTP请求消息头如下:Host?? ?192.168.3.174:8080User-Agent?? ?Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0Accept?? ?text/html,*;q=0.7Connection?? ?keep-aliveIf-Modified-Since?? ?Mon,04 Jul 2011 10:12:40 GMT多了一行If-Modified-Since,后台Nginx服务器的access.log也找到了该请求的记录,说明浏览器对这种情况的处理方法是:再问一下服务器,请求的URI在某个时间之后有没有被修改过,而这个时间是由上次HTTP响应的Last-Modified决定的。服务器鉴定之后,没有修改的话,返回304 Not Modified,浏览器收到后,从缓存里读出内容;有修改的话,返回200 OK,并返回新的内容。这种情况,就像你找到一盒已经过期的牛奶,于是问别人,还能不能喝,如果别人说可以,你就把它喝了,如果别人说不行,那你得就另外找一盒新鲜的牛奶。至于F5刷新,其HTTP请求消息头如下:Host?? ?192.168.3.174:8080User-Agent?? ?Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0Accept?? ?text/html,04 Jul 2011 10:12:40 GMTCache-Control?? ?max-age=0又多了一行Cache-Control: max-age=0,意思是说,我不管浏览器缓存中的文件过期没有,都去服务器询问一下,相当于上次HTTP响应的Expires暂时失效。服务器的响应处理流程同上。这种情况,就像你找到一盒牛奶,没有看它的有效期,直接就问别人能不能喝。最后是Ctrl+F5刷新,其HTTP请求消息头如下:Host?? ?192.168.3.174:8080User-Agent?? ?Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0Accept?? ?text/html,*;q=0.7Connection?? ?keep-alivePragma?? ?no-cacheCache-Control?? ?no-cacheIf-Modified-Since没有了,Cache-Control换成了no-cache,此外Pragma行是为了兼容HTTP1.0,作用与Cache-Control: no-cache是一样的。意思是,我不要缓存中的文件了,强制刷新,直接到服务器上重新下载,于是服务器的响应处理与首次请求这个URI一样,返回200 OK和新的内容。这种刷新,使用的网络流量是最大的,也是最耗时的。这就像你虽然发现了一盒牛奶,但是把它扔掉了,直接去买一盒新的。

原文地址:http://blog.csdn.net/yui/article/details/6584401

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读