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

其中,在地址栏按回车又分为两种情况。一是请求的URI在浏览器缓存中未过期,此时,使用Firefox的firebug插件在浏览器里显示的HTTP请求消息头如下:

Host    192.168.3.174:8080
User-Agent    Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language    zh-cn,zh;q=0.5
Accept-Encoding    gzip, deflate
Accept-Charset    GB2312,utf-8;q=0.7,*;q=0.7
Connection    keep-alive

HTTP返回状态显示200 OK,但是,后台Nginx服务器的access.log并没有找到该请求的记录,说明请求并没有真正提交到HTTP服务器。而是被浏览器发现缓存中还有未过期的文件,直接把请求拦截了,firebug里面显示所谓的“请求头消息”、“响应头消息”都是浏览器“伪造”的。这种刷新,使用的网络流量是最小的,可以说完全没有,时间消耗也是最少的。就像你找到一盒没有过期的牛奶,觉得肯定没有问题,谁都没告诉就喝了。

二是请求的URI在浏览器缓存中已过期,此时,firebug显示的HTTP请求消息头如下:

Host    192.168.3.174:8080
User-Agent    Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language    zh-cn,zh;q=0.5
Accept-Encoding    gzip, deflate
Accept-Charset    GB2312,utf-8;q=0.7,*;q=0.7
Connection    keep-alive
If-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:8080
User-Agent    Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language    zh-cn,zh;q=0.5
Accept-Encoding    gzip, deflate
Accept-Charset    GB2312,utf-8;q=0.7,*;q=0.7
Connection    keep-alive
If-Modified-Since    Mon, 04 Jul 2011 10:12:40 GMT
Cache-Control    max-age=0

又多了一行Cache-Control: max-age=0,意思是说,我不管浏览器缓存中的文件过期没有,都去服务器询问一下,相当于上次HTTP响应的Expires暂时失效。服务器的响应处理流程同上。这种情况,就像你找到一盒牛奶,没有看它的有效期,直接就问别人能不能喝。

最后是Ctrl+F5刷新,其HTTP请求消息头如下:

Host    192.168.3.174:8080
User-Agent    Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language    zh-cn,zh;q=0.5
Accept-Encoding    gzip, deflate
Accept-Charset    GB2312,utf-8;q=0.7,*;q=0.7
Connection    keep-alive
Pragma    no-cache
Cache-Control    no-cache

If-Modified-Since没有了,Cache-Control换成了no-cache,此外Pragma行是为了兼容HTTP1.0,作用与Cache-Control: no-cache是一样的。意思是,我不要缓存中的文件了,强制刷新,直接到服务器上重新下载,于是服务器的响应处理与首次请求这个URI一样,返回200 OK和新的内容。这种刷新,使用的网络流量是最大的,也是最耗时的。这就像你虽然发现了一盒牛奶,但是把它扔掉了,直接去买一盒新的。

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

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

时间: 2024-10-11 08:05:37

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

把post请求的地址粘贴到浏览器地址栏敲回车报错405[Method Not Allowed]

为什么把post请求的地址粘贴到浏览器地址栏敲回车会报405?原因:在浏览器地址栏敲回车,浏览器默认是以get方式发送请求,而你的请求是post,这样当然会报405了: 405:方法不允许,不支持get请求方式,解决方法:在后台controller中再加一个RequestMapping @RequestMapping(value = "traceDeletelist",method = RequestMethod.GET)

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

转自:http://blog.csdn.net/zoohouse/article/details/7552594 先来说"刷新",它是在你现有页面的基础上,检查网页是否有更新的内容.在检查时,会保留之前的一些变量的值,因此有可能会造成刷新后网页出现错误,或者打不开的情况:"转到"和在地址栏回车,则相当于你重新输入网页的URL访问,这种情况下,浏览器会尽量使用已经存在于本机中的缓存.也就是说,"刷新" 是取网页的新内容来更新本机缓存,在更新的同时保

在浏览器地址栏按回车、F5、ctrl+F5刷新页面的区别

url地址栏里敲击enter:这样的刷新,大家可以在firebug里看一下,只有少数的请求会发送出去,而且几乎没有图片的请求,这是因为请求时会先检查本地是不是缓存了请求的图片,如果有缓存而且没有过期(过期可以通过该图片请求的header查看),他就不会发出这个图片request. f5:f5刷新比enter略慢,为什么呢,因为他还是把所有请求都发给了server,只是在request里的header里有信息 Expires Fri, 28 Jun 2013 07:29:55 GMT Last-M

浏览器地址栏按回车发生了什么事情

1.查找域名对应的ip地址 首先去浏览器缓存中找,如果不久前刚刚输入过,那么在缓存会留下ip地址,缓存周期一般在几分钟到半小时 查找系统缓存(host文件),浏览器进行系统调用(windows中是gethostbyname) 查找路由缓存,前两步都不需要网络,这里需要用到网络,路由器上有自己的DNS缓存,这是ISP互联网提供商在路由器留下的DNS缓存 递归查找ISP的DNS服务器 (这才是真正的第三方DNS服务器) 本地域名服务器向根域名服务器的查询是迭代查询. 2.浏览器和服务器经过三次握手建

浏览器的F5和Ctrl+F5

在浏览器里中,按F5键和按F5同时按住Ctrl键(简称Ctrl+F5),效果是不同,到底两者有什么区别呢? 假如我第一次访问过http://localhost/home,这个网页是个动态网页,每次访问都会去访问Server,但是它包含一个一个静态资源http://localhost/content/bootstrap.css,浏览器在显示这个网页之前需要发HTTP请求获取这个bootstrap.css文件,返回的HTTP response包含这样的Headers: 下次我再通过bookmark或

刷新快捷键F5和Ctrl+F5的区别

魅力经常要刷新网页,原来只是按f5发现有时能更新有时不行,后来听人说直接按ctrl+f5就可以直接一下子更新,试了一下 果然很神奇 直接就刷新了 不再有缓存 具体区别是:F5通常只是刷新本地缓存:Ctrl+F5可以把INTERNET临时文件夹的文件删除再重新从服务器下载,也就是彻底刷新页面了 大家在刷新浏览器的时候,不妨试试ctrl+f5 能实时更新. 原文地址:http://blog.51cto.com/hmlwl/2114256

Vs2013在Linux开发中的应用(34):Ctrl + F5支持

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 VS中常用的Ctrl+F5可以不调试直接运行,但是其运行的环境变量仍然可以传递给应用程序,在我们的调试方案中使用了一个叫RemoteConsole的stub程序 在调试状态下,EmbedLinux调试引擎会在开始调试时打开一个自动选择的服务端口,再将此端口号通过环境变量传递给RemoteConsole. 在直接运行的情况下,RemoteConsole将由VS自动加载,此时由于没有调试引擎,也就没

Ctrl+F5和F5区别

F5刷新的内容是从本地缓存中读取刷新,刷新本地缓存 Ctrl+F5直接读取服务器上的最新的内容-- Ctrl+F5会把Internet 临时文件夹的文件删除再重新从服务器下载,也就是彻底刷新页面了.. 所以:测试H5的时候要经常Ctrl+F5

解决vs2010按ctrl+f5,调试窗口一闪而过的方法

vs2010调试按F5与按Ctrl+F5有什么区别 Ctrl F5测试运行后不自动推出控制台,直接按F5会自动退出去 解决vs2010按ctrl+f5,调试窗口一闪而过的方法 http://hi.baidu.com/hello_guan/item/c41603cd6f36cec7994aa0a1 打开一个解决方案 找到[解决方案资源管理器]窗口,右键项目名称-属性 在打开的窗口中选择 配置属性>链接器>系统>子系统中选择[控制台]即可,然后确定保存. 原文地址:https://www.c