不少同学问,不都是刷新吗?还有什么区别?其实,还是有的。
其中,在地址栏按回车又分为两种情况。一是请求的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里面显示所谓的“请求头消息”、“响应头消息”都是浏览器“伪造”的。这种刷新,使用的网络流量是最小 的,可以说完全没有,时间消耗也是最少的。就像你找到一盒没有过期的牛奶,觉得肯定没有问题,谁都没告诉就喝了。response code :200 from cache
二是请求的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,并返回新的内容。这种情况,就像你找到一盒已经过期的牛奶,于是问别人,还能不能喝,如果别人说可以,你就把它喝了(304 not modify),如果别人说不行,那你得就另外 找一盒新鲜的牛奶(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和新的内容。这种刷新,使用的网络流量是最大的,也是最耗时的。这就像你虽然发现了一盒牛奶,但是把它扔掉了,直接去买一盒新的。
分享到:
相关推荐
7. 浏览器扩展:允许用户安装第三方插件以增强功能,如广告拦截、隐私保护、开发者工具等。 8. 多进程架构:现代浏览器如Chrome采用多进程模型,每个标签页运行在独立的进程中,降低因一个页面崩溃影响其他页面的...
首先,浏览器插件是一种小型的应用程序,它可以嵌入到用户的Web浏览器中,以增强或修改浏览器的默认行为。常见的插件如广告拦截器、隐私保护工具、开发人员工具等,它们通过浏览器提供的API接口与浏览器交互,实现对...
这类浏览器通常内置了两种内核,一种是Trident内核,另一种是Webkit内核或Gecko内核。通过这种方式,双核浏览器可以在保持与IE浏览器兼容性的基础上,提供更加快速和稳定的浏览体验。例如,在访问仅支持Trident内核...
`registry.jar`和`ICE_JNIRegistry.dll`的组合提供了一种可能的实现途径,即通过读取Windows注册表来获取浏览器的代理设置。在实际开发中,开发者应根据具体需求选择合适的方法,并充分考虑安全性因素。
在IT行业中,C++ MFC(Microsoft Foundation Classes)是一种基于Windows平台的应用程序开发框架,它为程序员提供了构建桌面应用程序的强大工具。MFC是Microsoft Visual C++的一个重要组成部分,它简化了Windows API...
#### 三、Firefox浏览器的核心组件 ##### 3.1 用户界面(User Interface) Firefox的用户界面是用户与浏览器交互的第一层,它包括地址栏、菜单、选项卡等元素。用户界面的设计需要考虑到易用性和美观性,同时也需要...
除了IE,还有许多国内的第三方浏览器,如360安全浏览器、傲游等,也采用了Trident内核,部分浏览器采用双核或多核设计,同时包含Trident和其他内核,以实现更好的兼容性和性能。 2. **Gecko内核**:由Netscape 6...
7. **代码优化**:针对低版本浏览器,优化JavaScript和CSS,避免使用新的API或特性,转而依赖于更成熟、更广泛支持的技术。 8. **使用polyfills**:对于某些新特性,可以通过引入polyfills来模拟旧浏览器不支持的...
- **市场覆盖率**:第三方手机浏览器在iOS和Android系统中的覆盖率较高,其中UC浏览器、手机QQ浏览器等品牌表现突出。 - **用户行为特征**: - 用户群体年轻化趋势明显。 - 高频次使用,平均每日使用时间较长。 -...
#### 三、浏览器的主要组件 浏览器主要由以下组件构成: 1. **用户界面**:包括地址栏、前进/后退按钮、书签菜单等。 2. **浏览器引擎**:作为查询和操作渲染引擎的接口。 3. **渲染引擎**:负责解析和渲染HTML、...
【基于.NET的图片浏览器】是一种使用微软的.NET框架开发的应用程序,它允许用户方便地浏览、查看和管理个人电脑上的图像文件。此类软件通常具备基本的图像预览、旋转、缩放、幻灯片播放等功能,同时可能还支持一些...
`this.style.behavior='url(#default#homepage)'`这行代码设置了一个行为(behavior),它告诉浏览器将该链接的行为更改为设置主页。`this.setHomePage('http://www.taobao.com')`则将当前页面设置为指定URL(本例...
开发者可以通过提供API,允许第三方开发者编写插件来增强浏览器功能,如广告拦截、下载管理等。 9. **性能优化**: 使用内存管理和缓存策略来提升浏览器性能。例如,可以缓存经常访问的网页,减少网络请求,或者使用...
**VRML(Virtual Reality Modeling Language)**是一种基于文本的3D建模语言,用于创建交互式的、三维可浏览的虚拟现实环境。VRML是互联网上实现3D图形和虚拟世界的关键技术之一,允许用户通过浏览器体验和探索这些...
#### 三、程序结构与功能实现 - **主类**:`Browser` - **继承自**:`JFrame`,是Swing中的顶级容器之一,通常用于创建一个可以显示的独立窗口。 - **实现接口**:`ActionListener`和`HyperlinkListener`,用于...
#### 三、行为标准:赋予网页互动的生命力 **文档对象模型(DOM)**:DOM规范解决了不同浏览器和编程环境下的对象模型兼容问题,为Web开发者提供了一致的接口,使其能够跨平台、跨浏览器地操作网页内容。通过DOM,...
3. 编写代码:通过编程控制WebBrowser控件的行为,如设置初始URL、监听导航事件、注入自定义JavaScript等。 4. 实现额外功能:根据需求,编写代码实现额外的功能,如搜索框、前进/后退按钮、地址栏等。 5. 调试与...
【标题】"C#写的WEB浏览器(源码)"是一个基于C#编程语言开发的网络浏览器项目,它展示了如何使用.NET Framework或...对于希望自定义浏览器行为、集成特定功能或者教学演示的开发者来说,这是一个极具价值的学习材料。
问题三是对于设置较小高度的标签(通常小于10px),在IE6、IE7以及遨游浏览器中,标签高度会超出预设值。为解决这个问题,可以使用`overflow: hidden;`或设置合适的`line-height`值,使其小于标签高度。 问题四是...
在这种模式下,Edge可以模拟IE浏览器的行为,以便兼容那些仅设计为在IE上运行的网站。 解决这个问题的步骤如下: 1. **打开Microsoft Edge**:启动Edge浏览器,这是解决此问题的第一步。如果你的默认浏览器是IE,...