文章目录

  • f5和ctrl+f5
    • f5
    • ctrl+f5
    • f5与ctrl+f5的区别
      • f5
      • ctrl+f5
    • 缓存
      • 缓存优点
      • 缓存协商和彻底缓存

f5和ctrl+f5

f5

  • 第一次打开某网页,全部资源从服务器请求,status为200,按下f5后,静态资源的size都是fromdisk cache,说明此时的静态资源都是从缓存中取得的

    • HTTP状态码 HTTP status code

      • 当浏览者访问一个网页时,浏览者的浏览器会像网页所在服务器发出请求,当浏览器接收并显示网页前,此页面所在的服务器会返回一个包含HTTP状态码的信息头server header用以响应浏览器请求
    • 常见HTTP状态码
      • 200 请求成功
      • 301 资源网页等被永久转移到其他URL
      • 404 请求的资源网页等不存在
      • 500 内部服务器错误
    • 响应分为五类
      • 信息响应(100–199)
      • 成功响应(200–299)
      • 重定向(300–399)
      • 客户端错误(400–499)
      • 服务器错误 (500–599)
  • size选项的四种情况
    1. 资源的大小

      • 当http状态为200是实实在在从浏览器获取的资源,当http状态为304时该数字是与服服务端通信报文的大小,并不是该资源本身的大小,该资源是从本地获取的
      • 304 Not Modified
        • 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
    2. from disk cache
      • 表示此资源是取自内存,不会请求服务器,已经在之前的某个时间加载过该资源,但是此资源不会随着该页面的关闭而释放掉,因为是存在硬盘当中的,下次打开仍会from disk cache
    3. from memory cache
      • 表示此资源是取自内存,不会请求服务器。已经加载过该资源且缓存在内存当中;关闭该页面此资源就被内存释放掉了,再次打开相同页面时不会出现 frommemory cache 的情况
    4. from ServiceWorker
      • 表示此资源是取自 fromServiceWorker
      • ServiceWorker
        • 一个服务器与浏览器之间的中间人角色,如果网站中注册了service worker那么他可以拦截当前网站的所有请求,进行判断(需要编写相应的判断程序),如果需要向服务器发起请求的就转给服务器,如果可以直接使用缓存的就直接返回缓存不再转给服务器,从而大大提高浏览体验

          • 基于web worker->一个独立于JavaScript主线程的独立线程,在里面执行需要消耗大量资源的操作不会阻塞主线程
          • 在web worker的基础上增加了离线缓存能力
          • 本质上充当web应用程序(服务器)与浏览器之间的代理服务器->可以拦截全站的请求,并做出相应的动作->由开发者指定动作
          • 创建有效的李先体验,将一些不常更新的内容缓存在浏览器,提高访问体验
          • 由事件驱动具有生命周期
          • 可以访问cache和indexDB
          • 支持推送
          • 可以让开发者自己控制管理缓存的内容以及版本
        • 注意
          • 运行在worker上下文->不能访问DOM
          • 设计为完全异步,同步API不能再service worker中使用
          • 出于安全考量,只能有HTTPS承载
          • 生命周期与页面无关
          • 在Firefox浏览器的用户隐私模式,Service Worker不可用

ctrl+f5

  • 按下ctrl+f5,发现size显示的是资源自身的大小,说明ctrl+f5后的资源是重新从服务器中请求得到的

f5与ctrl+f5的区别

  • f5请求的是缓存,ctrl+f5重新请求资源?

    • 两种方式发送的请求头不一样
    • 不同浏览器发送的请求头也有一定区别

f5

  • Chrome

    • 资源请求头中有provisional headers are show字样
    • 原因:未与服务端正确通信,该文件是从缓存中获取的未进行通信,详细表头不会显示,强缓存fromdisk cache或frommemory cache都不会正确显示请求头
  • firefox
    • 返回状态码304 not modified
    • 原因:请求头会增加if-modify-since字段,如果资源未过期,命中缓存,服务器就直接返回304状态码,客户端直接使用本地的资源
  • 以上两种使用的缓存机制不同
    • Firefox使用的是协商缓存
    • Chrome使用的是强缓存

ctrl+f5

  • Chrome

    • 在请求头中多了两个 Cache-Control:no-cache,Pragma:no-cache 参数

      • 在请求头中的 Cache-Control:no-cache 表示客户端不接受本地缓存的资源,需要到源服务器进行资源请求,其实可以使用缓存服务器的资源,不过需要到源服务器进行验证,验证通过就可以将缓存服务器的资源返回给客户端
  • Firefox
    • 请求头中同样多了两个 Cache-Control:no-cache,Pragma:no-cache 参数
  • 可以看出 chrome 和 Firefox 在按下 Ctrl+F5 后,都不会使用本地缓存,并且对缓存服务器的资源会再验证

缓存

缓存优点

  1. 减少了冗余的数据传输,节省了网费
  2. 减少了服务器的负担,大大提升了网站的性能
  3. 加快了客户端加载网页的速度

缓存协商和彻底缓存

  • 也称作:协商缓存和强缓存

    • 强缓存

      • 不会向服务器发送请求,直接从缓存中读取资源,在Chrome控制台的network选项中可以看到该请求返回200状态码
      • header参数
        • Expires:response header里的过期时间,浏览器再次加载资源时,如果在这个过期时间内,则命中强缓存
        • Cache-Control:当值设为max-age=300时,则代表在这个请求正确返回时间(浏览器也会记录下来)的5分钟内再次加载资源,就会命中强缓存
        • cache-control除了该字段外,还有下面几个比较常用的设置值:
          • no-cache:不使用本地缓存。需要使用缓存协商,先与服务器确认返回的响应是否被更改,如果之前的响应中存在ETag,那么请求的时候会与服务端验证,如果资源未被更改,则可以避免重新下载
          • no-store:直接禁止浏览器缓存数据,每次用户请求该资源,都会向服务器发送一个请求,每次都会下载完整的资源
          • public:可以被所有的用户缓存,包括终端用户和CDN等中间代理服务器
          • private:只能被终端用户的浏览器缓存,不允许CDN等中继缓存服务器对其缓存。
    • 协商缓存
      • 向服务器发送请求,服务器会根据这个请求的request header的一些参数来判断是否命中协商缓存,如果命中,则返回304状态码并带上新的response header通知浏览器从缓存中读取资源
  • 异同
    • 共同点:都是从客户端缓存中读取资源
    • 不同点:强缓存不会发请求,协商缓存会发请求
  • 缓存过程
    1. 浏览器第一次加载资源,服务器返回200,浏览器将资源文件从服务器上请求下载下来,并把response header及该请求的返回时间一并缓存
    2. 下一次加载资源时,先比较当前时间和上一次返回200时的时间差,如果没有超过cache-control设置的max-age,则没有过期,命中强缓存,不发请求直接从本地缓存读取该文件(如果浏览器不支持HTTP1.1,则用expires判断是否过期);如果时间过期,则向服务器发送header带有If-None-Match和If-Modified-Since的请求
    3. 服务器收到请求后,优先根据Etag的值判断被请求的文件有没有做修改,Etag值一致则没有修改,命中协商缓存,返回304;如果不一致则有改动,直接返回新的资源文件带上新的Etag值并返回200
    4. 如果服务器收到的请求没有Etag值,则将If-Modified-Since和被请求文件的最后修改时间做比对,一致则命中协商缓存,返回304;不一致则返回新的last-modified和文件并返回200

【前端指南】f5与ctrl+f5的区别相关推荐

  1. 浏览器: F5和 Ctrl+F5的区别

    刚修改了所有的首页,全部加上了帮助firefox来创造世界奇迹! 不过现在有个问题,好几个首页必须按下ctrl+f5才能看到最新的效果.网上找了一片说f5和ctrl+f5区别的文章,写的很全面. -- ...

  2. ASP.NET项目在VS中F5与Ctrl+F5的区别

    场景 ASP.NET中MVC编程模式简介与搭建HelloWorld项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10679 ...

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

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

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

    转自:http://blog.csdn.net/zoohouse/article/details/7552594 概述: "刷新"是在你现有页面的基础上,检查网页是否有更新的内容. ...

  5. F5与Ctrl+F5及地址栏输入地址回车

    按F5等同于点击页面地址栏的刷新图标. 地址栏输入地址然后回车: 根据缓存内容是否过期决定是否发送请求给服务端 F5: 浏览器无论如何都得发送请求给服务端,包含If-Modified-Since/If ...

  6. 网页中F5刷新与ctrl + F5强制刷新的区别?

    目录: 一:F5刷新 二.ctrl + F5 刷新 三.  这两个的区别很大! 四.总结 五.系列文章目录 F5-刷新 只是刷新一次当前页面的资源,使用F5刷新,浏览器仍然会重复利用之前的缓存数据. ...

  7. Ctrl+F5和F5区别

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

  8. ctrl+f5 强刷新

    某次同学上线了一个服务 ,怎么刷新都不管用,但是又不想清楚浏览器缓存. F5通常只是刷新本地缓存: Ctrl+F5可以把INTERNET临时文件夹的文件删除再重新从服务器下载,也就是彻底刷新页面了

  9. beyond compare 不自动比较解决办法(没解决,可以ctrl + F5手动比较)

    有时候更改文件内容后,beyond compare不会自动比较,要点进文件才能看到差异内容,如何解决呢? 额,暂时没找到可靠的办法 比较担心的就是没法找到差异文件,我们可以手动比较, 快捷键ctrl ...

最新文章

  1. Uber网站国际化的工程实践(CMS篇)
  2. 12个球问题--微软面试题
  3. python中字典的find_python-re.findall返回命名捕获组的字典?
  4. a as as big rat_你知道填空中as的这个变态用法吗?
  5. android n-ify miui,MIUI7.5版刷机包
  6. Hbase Region in transition (RIT) 异常解决
  7. js网页顶部线性页面加载进度条,jquery头部线性进度条总结
  8. window 后台启动java参数启动
  9. ffmpeg 最简单的转码封装mp4文件
  10. Unix环境高级编程——学习笔记
  11. 加工中心宏程序c语言,加工中心最实用的宏程序
  12. vue-pdf查看pdf文件及打印乱码问题处理
  13. vscdoe常用快捷键
  14. 前端web要学mysql吗_学前端必须学习HTML和js吗?
  15. | ERROR: [2] bootstrap checks failed. You must address the points described in the following [2] lin
  16. 四川2021年高考成绩位次查询,2021年填报志愿数据:四川所有本科大学近三年分数线、对应位次排行榜...
  17. 抽屉新热榜html源码,利用scrapy获取抽屉新热榜的标题和内容以及新闻地址保存到本地...
  18. 80C51单片机的串行通信技术
  19. 全卷积神经网络(FCN)
  20. 那些年我们对Spark RDD的理解

热门文章

  1. OLED显示与LCD显示的区别
  2. 安装MATLAB_R2013b_X64_x32激活及破解方法
  3. 百趣代谢组学文献分享:三组学整合分析在中医药研究中的应用
  4. 写收货地址代码模块的思路整理——省市联动
  5. css如何添加模糊效果,css动态模糊效果
  6. 信息熵:什么是信息熵?
  7. 中国医学计算机成级别像杂志,中国医学计算机成像杂志
  8. 每次启动电脑,基本都出现这个错误,很长时间的启动过程。
  9. FAThdc.inc
  10. funcode小游戏暑假大作业,开源,新颖,游戏名:凿空,免费。