浏览器中回车(Enter)和刷新的区别是什么?[转载]

在浏览器中回车和F5刷新有什么区别那?今天就来说说:浏览器中回车(Enter)和刷新的区别是什么? 这点事。

概论:

1、回车在 Expires有效的时候,是不会去请求服务器的,打开调试看到的请求也只是伪造的,比如 谷歌浏览器可能显示 200(cached)(比正常的200多了) 其实是没有发起实际的缓存,直接读取本地硬盘缓存。

2、如果按了 f5则 Expires设置不再起效果,只有Last-Modified/ETag有效果,如果在缓存期间内则返回 304,再读取本地缓存内容

3、ctrl+f5则会发送 Cache-Control: no-cache,真正的从服务器重新获取文件,此时缓存完全失效

先来说“刷新”,它是在你现有页面的基础上,检查网页是否有更新的内容。在检查时,会保留之前的一些变量的值,因此有可能会造成刷新后网页出现错误,或者打不开的情况;“转到”和在地址栏回车,则相当于你重新输入网页的URL访问,这种情况下,浏览器会尽量使用已经存在于本机中的缓存。也就是,“刷新” 是取网页的新内容来更新本机缓存,在更新的同时保留之前的一些变量;“转到”则是一种全新的访问,它会尽量使用本机缓存中的文件,但不会保留之前的变量,这下应该明白了吧?另外,按着Ctrl,还可以进行强制刷新,跟转到的作用差不多。

不少同学问,不都是刷新吗?还有什么区别?其实,还是有的。

其中,在地址栏按回车又分为两种情况。一是请求的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和新的内容。这种刷新,使用的网络流量是最大的,也是最耗时的。这就像你虽然发现了一盒牛奶,但是把它扔掉了,直接去买一盒新的。

时间: 2024-12-14 13:45:55

浏览器中回车(Enter)和刷新的区别是什么?[转载]的相关文章

VSCode中代码在浏览器中打开及实时刷新

实时刷新方法一: 在项目目录下运行命令: browser-sync start --server --files "**/*.css,**/*.html,**/*.js" 实施刷新方法二: 装Live Server Preview插件,点击F1.   原文地址:https://www.cnblogs.com/lguow/p/11909993.html

在浏览器中输入URL并回车后都发生了什么?

1.解析URL ________________________________________________________________________ 关于URL: URL(Universal Resource Locator):统一资源定位符.俗称网页地址或者网址. URL用来表示某个资源的地址.(通过俗称就能看出来) URL主要由以下几个部分组成: a.传输协议 b.服务器 c.域名 d.端口 e.虚拟目录 f.文件名 g.锚 h.参数 也就是说,通常一个URL是像下面这样 连起来

在IE浏览器中执行OpenFlashChart的reload方法时无法刷新的解决方法

由于项目需求,需要在网页上利用图表展示相关数据的统计信息,采用了OpenFlashChart技术.OpenFlashChart是一款开源的以Flash和Javascript为技术基础的免费图表,用它能创建一些很有效果的报表分析图表.最重要的是它是开源和免费的,支持多种语言.首先在官网上下载开发包,里面包含了所需的flash文件.js文件以及多种语言的demo,这些demo写的非常详细,可以进行参考开发.由于项目使用.net来开发,所以我学习了一下开发包中对应的dotnet代码,这个.net项目采

浏览器中的刷新

http://weizhifeng.net/difference-between-f5-and-ctrl-f5.html 说明 在不同的浏览器中F5和CTRL-F5的行为是不一样的,但是他们的主要行为还是非常相似的,以下结果是在FF,IE,Opera和Chrome中进行过测试得出. F5使用缓存,并且只有在资源内容发生变化的时候才会去更新资源. 当刷新一个页面的时候,浏览器会尝试使用各种类型的缓存,并且会发送If-Modified-Since头到服务器,如果服务器返回304 Not Modifi

js防止回车(enter)键提交表单及javascript中event.keycode

如何防止回车(enter)键提交表单,其实很简单,就一句话.onkeydown="if(event.keyCode==13)return false;"把这句写在from标签里面就好了. 如果在页面中按Enter键会自动提交的话,可以设置返回值防止自动提交如<input id="q" name="q" type="text" onkeypress="javascript:return gosearch();&q

微信浏览器中页面刷新

判断浏览器类型 微信浏览器无法使用window.location.reload()刷新页面

在浏览器中输入url回车之后会发生什么

在浏览器中输入URL之后,浏览器会经历以下5个步骤: 1.解析URL 2.DNS域名解析 3.浏览器与网站建立TCP链接(三次握手) 4.请求和传输数据 5.浏览器渲染页面 一.解析URL 什么是url: URL(Universal Resource Locator) 同一资源定位符,俗称网页地址或者网址,用来表示某个网页资源的地址 URL主要由一下几个部分组成:1.传输协议 2.服务器 3.域名 4.端口 5.虚拟目录 6.文件名 7.参数 8.锚 也就是说通常的url是这样的 连起来就是这样

【转载】 C++中回车换行(\n\r)和换行(\r)的区别

原文:http://blog.csdn.net/xiaofei2010/article/details/8458605 windows下的点一下回车,效果是:回车换行,就是\r\n unix系统下的回车一下就是一个\n 给出如下代码: #include <iostream> using namespace std; int main() { cout << "this is the first line\n"; cout << "this

Kiosk模式:IE浏览器中的IE全屏模式

相信很多网友都知道IE浏览器有个全屏模式,在IE窗口中单击键盘的F11键即可进入全屏模式.但是很少有用户知道IE浏览器还有一个Kiosk模式. 那么什么是"Kiosk"模式? 在IE6浏览器中微软就已经引入了Kiosk模式,通俗的说就是完完全全的全屏,该模式不同于F11全屏,无地址栏,无windows状态栏等,只显示网页内容和滚动条. 因为Kiosk模式下只能使用快捷键进行操作,所以普通用户平时很少会使用该模式.不过随着平板触摸设备的流行,全屏浏览也将会变得越来越多,Windows 8