浏览器缓存的执行流程

HTTP协议中和页面缓存相关的字段,我们先来认识下:

header 说明
Expires 缓存过期的日期和时间
Cache-Control 设置和缓存相关的配置信息
Last-Modified 请求资源最后修改时间
ETag 请求变量的实体标签的当前值,比如文件的MD5值

(1)用户首次通过浏览器发送请求到服务端获取数据,客户端是没有对应的缓存,所以需要发送request请求来获取数据;

(2)服务端接收到请求后,获取服务端的数据及服务端缓存的允许后,返回200的成功状态码并且在响应头上附上对应资源以及缓存信息;

(3)当用户再次访问相同资源的时候,客户端会在浏览器的缓存目录中查找是否存在响应的缓存文件

(4)如果没有找到对应的缓存文件,则走(2)步

(5)如果有缓存文件,接下来对缓存文件是否过期进行判断,过期的判断标准是(Expires),

(6)如果没有过期,则直接从本地缓存中返回数据进行展示

(7)如果Expires过期,接下来需要判断缓存文件是否发生过变化

(8)判断的标准有两个,一个是ETag(Entity Tag),一个是Last-Modified

(9)判断结果是未发生变化,则服务端返回304,直接从缓存文件中获取数据

(10)如果判断是发生了变化,重新从服务端获取数据,并根据缓存协商(服务端所设置的是否需要进行缓存数据的设置)来进行数据缓存。

Nginx中浏览器缓存的执行流程相关推荐

  1. Nginx中浏览器缓存的相关概念

    什么是缓存 缓存(cache),原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器, 通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术.缓存的设置是 所有现代 ...

  2. 19. OP-TEE中TA与CA执行流程详解-------软件架构篇

    历经一年多时间的系统整理合补充,<手机安全和可信应用开发指南:TrustZone与OP-TEE技术详解 >一书得以出版,书中详细介绍了TEE以及系统安全中的所有内容,全书按照从硬件到软件, ...

  3. 【spring源码系列-05】refresh中prepareRefresh方法的执行流程

    Spring源码系列整体栏目 内容 链接地址 [一]spring源码整体概述 https://blog.csdn.net/zhenghuishengq/article/details/13094088 ...

  4. Nginx关于浏览器缓存相关的配置指令

    浏览器缓存相关指令 Nginx需要进行缓存相关设置,就需要用到如下的指令 expires指令 expires:该指令用来控制页面缓存的作用.可以通过该指令控制HTTP应答中的"Expires ...

  5. Nginx配置浏览器缓存

    一. 浏览器从哪读取缓存 memory cache 当直接刷新页面的时候,页面资源会从内存中直接获取 disk cache 如果服务器指定了强缓存它会缓存到硬盘上,如果网页关掉再打开浏览器会从磁盘上去 ...

  6. 2.11 Nginx控制浏览器缓存

    浏览器缓存: 加速用户访问,提升单个用户(浏览器访问者)体验,缓存在本地 Nginx缓存 缓存在nginx端,提升所有访问到nginx这一端的用户 提升访问上游(upstream)服务器的速度 用户访 ...

  7. python中嵌套循环的运行原理_python中while嵌套循环的执行流程问题?

    1. while x < 3: print("x的当前值为%d" % x) y = 0 while y < 3: print("y的当前值为%d" ...

  8. 三、nginx设置浏览器缓存[expires]

    一.浏览器缓存 解释:浏览器缓存极大缓解了带宽压力,提高了用户体验. 访问页面-查看是否有缓存,如果没有过期,直接击中缓存,不向服务器发送请求 访问页面-查看是否有缓存,如果过期,向服务器发送请求(分 ...

  9. loadrunner中浏览器缓存设置

    你可以进行Run-Time Setting设置来匹配你的浏览器设置,例如: 浏览器设置 Run-Time Setting 每次访问此页时检查 勾选Simulate Browser Cache 勾选Ch ...

最新文章

  1. redis报protocol error的真正原凶
  2. TORCH MAXIMUM
  3. 标记的用法(小例子)
  4. JAVA入门级教学之(异常的处理try...catch)
  5. append生成新变量的时候,没有如预期(It's a feature,not a bug?)
  6. fast group合计 report_FastReport报表设计.doc
  7. v-model 维护组件内外数据双向同步
  8. “化鲲为鹏,我有话说”如何用鲲鹏弹性云服务器部署《Hadoop伪分布式》
  9. 新版DevEco不用USB线下载程序
  10. 【Android】Listview返回顶部,快速返回顶部的功能实现,详解代码。
  11. Jetty提交数据时报java.lang.IllegalStateException: Form too large270468>200000问题解决
  12. 【翻译】Ext JS 5的委托事件和手势
  13. Maven安装与配置教程
  14. 压缩文件密码暴力破解——cRARk使用方法
  15. hashcat进行rar密码破解可gpu运算
  16. 使用nodejs发送电子邮件
  17. 手把手教你玩转OpenWRT路由器系统,视频教程合集
  18. MAML算法详解(元学习)
  19. Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之Sparsity
  20. 卫星环绕地球c语言编程,动画技术——卫星环绕地球

热门文章

  1. Android(Java):jni源代码
  2. 三层交换机SVI技术
  3. Python用起来极度舒适的强大背后
  4. NOVO Nordisk IT SOP List
  5. HashSet中是如何判断元素是否重复的
  6. LINUX Find命令使用
  7. sharepoint webpart 样式修改
  8. 建立你的RoR学习环境(Windows)之一
  9. 程序员编程艺术第一~十章集锦与总结(教你如何编程)--持续更新中
  10. VS2008 快捷键总结