原文地址:http://www.cnblogs.com/jiji262/p/3410518.html

前言

在印象中,浏览器中的F5和刷新按钮是一样的效果,都是对当前页面进行刷新;Ctrl-F5的行为也是刷新页面,但是会清除浏览器缓存,这在前端调试时候会常用。二者真正的区别是什么呢?在stackoverflow上有人给出了很详细的解释,整理如下。

说明

在不同的浏览器中F5和CTRL-F5的行为是不一样的,但是他们的主要行为还是非常相似的,以下结果是在FF,IE,Opera和Chrome中进行过测试得出。

  • F5使用缓存,并且只有在资源内容发生变化的时候才会去更新资源。

当刷新一个页面的时候,浏览器会尝试使用各种类型的缓存,并且会发送If-Modified-Since头到服务器,如果服务器返回304 Not Modified,那么浏览器会使用本地的缓存;如果服务器返回200 OK和资源内容,那么浏览器会使用返回的资源内容,并把资源内容进行缓存,待下次使用。

  • CTRL-F5 强制更新页面资源的缓存。

(这里的Cache-Control是指request header里面的Cache-Control哦,如果request header里面的Cache-Control表示,不从本地获取也不从CDN缓存获取,直达服务器,从服务器获取数据)MSIE会发送Cache-Control: no-cache头,Firefox和Chrome除了发送Cache-Control: no-cache头之外,还会发送Pragma: no-cache头。Opera比较另类,不发送任何和缓存相关的头。

以下表格很直观的表明了F5和CTRL-F5的行为,由于原文中测试的浏览器版本较低,所以进行了更新。

Updated table, 27 September 2010

+------------+-----------------------------------------------+
| UPDATED | Firefox 3.x |
|27 SEP 2010 | +--------------------------------------------+
| | | MSIE 8, 7 |
| Version 3 | | +-----------------------------------------+
| | | | Chrome 6.0 |
| | | + +--------------------------------------+
| | | | | Chrome 1.0 |
| | | | | +-----------------------------------+
| | | | | | Opera 10, 9 |
| | | | | | +--------------------------------+
| | | | | | | |
+------------+--+--+--|--+-----------------------------------+
| F5|IM|I |IM|IM|C | |
| SHIFT-F5|- |- |CP|IM|- | Legend: |
| CTRL-F5|CP|C |CP|IM|- | I = "If-Modified-Since" |
| ALT-F5|- |- |- |- |*2| P = "Pragma: No-cache" |
| ALTGR-F5|- |I |- |- |- | C = "Cache-Control: no-cache" |
+------------+--+--+--|--+--+ M = "Cache-Control: max-age=0" |
| CTRL-R|IM|I |IM|IM|C | - = ignored |
|CTRL-SHIFT-R|CP|- |CP|- |- | |
+------------+--+--+--|--+--+ |
| Click|IM|I |IM|IM|C | With 'click' I refer to a |
| Shift-Click|CP|I |CP|IM|C | mouse click on the browsers |
| Ctrl-Click|*1|C |CP|IM|C | refresh-icon. |
| Alt-Click|IM|I |IM|IM|C | |
| AltGr-Click|IM|I |- |IM|- | |
+------------+--+--+--+--+--+--------------------------------+

Versions tested:

HTTP协议说明

HTTP/1.1规范14.9.4中规定:

  • End-to-end reload(即CTRL-F5强制刷新)会发送如下HTTP头: 
    Cache-Control: no-cache 
    Pragma: no-cache

  • Specific end-to-end revalidation(即F5 刷新)会发送如下HTTP头: 
    Cache-Control: max-age=0 
    If-Modified-Since: Fri, 15 Apr 2011 12:08:21 GMT

参考:

http://stackoverflow.com/questions/385367/what-requests-do-browsers-f5-and-ctrl-f5-refreshes-generate

【转】浏览器中F5和CTRL F5的行为区别的更多相关文章

  1. 浏览器中F5和CTRL F5的行为区别及如何强制更新资源

    一.浏览器中F5和CTRL F5的行为区别 我们直接来看效果,下面是我打开qq网页,分别使用F5和CTRL F5,我们来看区别. F5: CTRL F5: 区别: 首先直观上的区别是CTRL F5明显 ...

  2. 浏览器缓存如何控制? && 在url框中回车、F5 和 Ctrl + F5的区别是什么?

    第一部分: 浏览器缓存如何控制?   最近在做网站,但是不知道缓存是什么东西怎么能行! 如何实现HTTP缓存呢? 下面我们来一步一步的探寻实现机制把. 方案一: 无缓存   说明: 浏览器向服务器请求 ...

  3. 浏览器缓存控制 以及 在url框中回车、F5 和 Ctrl + F5的区别

    第一部分: 浏览器缓存如何控制?   做网站,不知道缓存是什么东西怎么能行! 如何实现HTTP缓存呢? 下面我们来一步一步的探寻实现机制把. 方案一: 无缓存   说明:浏览器向服务器请求资源m.pn ...

  4. [转帖]浏览器的F5和Ctrl+F5

    浏览器的F5和Ctrl+F5 https://www.cnblogs.com/xiangcode/p/5369084.html 在浏览器里中,按F5键和按F5同时按住Ctrl键(简称Ctrl+F5), ...

  5. 改变浏览器中默认的ctrl+s方法

    在一般的情况下,我们在浏览网页的时候按下ctrl+s,浏览器会弹出一个保存网页的框. 但是在一些特定的网页中,我们希望ctrl+s不是弹出默认的保存窗口,而是进行一下别的操作. 比如在我们使用简书的时 ...

  6. 浏览器中F5和CTRL F5的行为区别

    前言 在印象中,浏览器中的F5和刷新按钮是一样的效果,都是对当前页面进行刷新:Ctrl-F5的行为也是刷新页面,但是会清除浏览器缓存,这在前端调试时候会常用.二者真正的区别是什么呢?在stackove ...

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

    不少同学问,不都是刷新吗?还有什么区别?其实,还是有的. 其中,在地址栏按回车又分为两种情况.一是请求的URI在浏览器缓存中未过期,此时,使用Firefox的firebug插件在浏览器里显示的HTTP ...

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

    转:http://www.cnblogs.com/mofish/archive/2012/06/08/2541604.html 不少同学问,不都是刷新吗?还有什么区别?其实,还是有的. 其中,在地址栏 ...

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

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

随机推荐

  1. bzoj 3173 最长上升子序列

    Written with StackEdit. Description 给定一个序列,初始为空.现在我们将\(1\)到\(N\)的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数字, ...

  2. 调试SPRING MVC(或者整合SSH)的时候遇到了org/objectweb/asm/Type

    调试SPRING MVC(或者整合SSH)的时候遇到了org/objectweb/asm/Type 解决方法1: 原因是Spring中的cglib-nodep-2.x.x.jar与Hibernate中 ...

  3. matlab中求逆矩阵的高斯消元法实现的代码

    function qiuni =INV_GET(a)N=length(a);M=eye(N);%得到上三角矩?for i=1:N max=a(i,i); A=i; for j=i+1:N if(abs ...

  4. CentOS 6+Hadoop 2.6.0分布式集群安装

    1.角色分配 IP Role Hostname 192.168.18.37 Master/NameNode/JobTracker HDP1 192.168.18.35 Slave/DataNode/T ...

  5. OracleAWR删除历史快照说明

    测试时,发现无法产生新快照,查看系统时间为10月26,但是已经产生快照为12月1号了. 此时的解决办法,就是删除现有的快照. 转http://itlab.idcquan.com/Oracle/back ...

  6. fn project hot functions 说明

    1. 简单介绍 所谓 hot  functions 实际上就是长时间运行的functions ,简单理解类似后台任务 2. fnproject  处理的方式 fnproject 使用 类似 http的 ...

  7. HTTP协议-简介

    1.什么是http协议? 百度百科上的解释:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准. ...

  8. TabControl控件用法图解

    1.首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个TabControl控件 2.根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在 ...

  9. liunx基础(5)

    第十三单元 硬盘分区.格式化及文件系统的管理二 1. 文件系统的挂载与卸载(详见linux系统管理P406)1) 掌握挂载的定义:挂载指将一个设备(通常是存储设备)挂接到一个已存在的目录上.2) 掌握 ...

  10. DHCP(四)

    确认阶段:即DHCP服务器确认分配级DHCP客户端IP地址的阶段.某个DHCP服务器在收到DHCP客户端发来的DHCP Request报文后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地 ...