nginx强制刷新用户缓存_HTTP 缓存
HTTP 缓存分为强缓存和协商缓存.
HTTP 缓存控制机制
- HTML Meta 标记
// 当前页面不缓存, 每次访问都去服务器拉取. 只有部分浏览器支持.
- HTTP 头信息
HTTP 头信息
强缓存 (200 from cache)
判断的字段: expire 或 cache-control
- expire [http 1.0 的标准], 存储的是过期的具体时间
- cache-control [http 1.1 的标准] max-age 值是过期的秒. max-age 最大值不能超过1年. 秒为单位. 优先级高, 以它的结果为准.
由于具体时间没有转换到正确的时区有可能造成错误. 所以倾向于使用 cache-control: max-age
如果强缓存没有命中的话, 则进入协商缓存
协商缓存 (304 or 200)
判断的字段: last-modified 或 Etag
last-modified/If-Modified-Since
- 浏览器第一次请求数据之后,服务端在 Response Headers 会带上 Last-modified (服务端资源最后修改时间).
- 再次请求时, 请求头会带上 If-Modified-Since 去跟服务器资源的最后修改时间对比. 如果修改, 返回 200 , 否则返回 304 .
Etag/If-None-Match
- 第一次请求数据的时候, Response Headers 带上 ETag . (Etag 由服务端生成一段 hash 字段)
- 之后的请求带上 If-None-Match: 原Etag 的值.
last-modified 和 Etag 区别
- 有些服务无法精确的得到资源最后修改时间.
- last-modified 只能精确到秒.
- 一些资源的最后修改时间改变了,但是内容没改变,使用 Last-modified 看不出内容没有改变。
- Etag 的精度比 Last-modified 高,属于强验证. 优先级高
last-modified 和 Etag 优先级
先判断 Etag, 再判断 last-modified. 但是结果会由服务器决策.
一张图总结流程:
Service Worker 缓存
浏览器的请求过程
我们可以在 Chrome 的开发者工具中,Network -> Size 一列看到一个请求最终的处理方式:如果是大小 (多少 K, 多少 M 等) 就表示是网络请求,否则会列出 from memory cache, from disk cache 和 from ServiceWorker。一个请求在查找资源的过程中经过的缓存顺序
- Service Worker、
- Memory Cache(内存)
- 像一些 prefetch 资源也会暂存在内存中.
- HTTP Cache/Disk Cache (硬盘上的缓存)
- Push Cache
一般资源会存入内存. 如果内存不够, 会释放一些.
- 首次请求
走网络请求
- 再次请求 (F5)
三个请求都来自 memory cache。因为我们没有关闭 TAB,所以浏览器把缓存的应用加到了 memory cache。(耗时 0ms,也就是 1ms 以内)
- 关闭 TAB,打开新 TAB 并再次请求因为关闭了 TAB,memory cache 也随之清空。但是 disk cache 是持久的,于是所有资源来自 disk cache。(大约耗时 3ms,因为文件有点小) 而且对比 2 和 3,很明显看到 memory cache 还是比 disk cache 快得多的。
用户行为与浏览器缓存
- F5 刷新, 内存不见, 协商缓存依然存在
- 强制刷新/控制台强制清除缓存 内存不见, 协商缓存也存在
- 地址栏访问, 回车, 前进后退. 缓存都不在.
缓存日常实践
永久缓存: 带 hash 值的静态 js, css资源永久缓存. cache-control : max-age=3153600 一年过期时间
对 index.html 使用 Cache-Control: no-cache
幸运的是,关于协商缓存你无需管理,无需配置, nginx 或者一些 OSS 都会自动配置协商缓存,而对于协商缓存,也有它们自己的算法。协商缓存背后是基于 Last-Modified/ETag。浏览器每次请求资源时,会携带上次服务器响应的 ETag/Last-Modified 作为标志,与服务端此时的 ETag/Last-Modified 作比较,来判断内容更改。
nginx强制刷新用户缓存_HTTP 缓存相关推荐
- mac chrome 浏览器强制刷新,清除浏览器缓存
mac 强制刷新:command+shift+r mac 普通刷新:command+r windows 强制刷新:ctrl+f5 windows 刷新:f5 mac 开发者模式:option(alt) ...
- 深入分布式缓存_HTTP缓存的深入介绍:探索风景
深入分布式缓存 可以缓存我 (Cache Me If You Can) About 2 years ago, I remember witnessing a reunion that had a pr ...
- Chrome浏览器如何强制刷新页面(不使用缓存)?
在Chrome浏览器中按下F5或 Ctrl+F5 都没用,Chrome总是会强制使用页面缓存进行刷新,如何不使用页面缓存进行刷新? Chrome官方推荐使用如下快捷键,就可以不使用页面缓存进行刷新 W ...
- 微信浏览器强制刷新方法怎么清空缓存
在微信发一个消息,内容为这个网址 debugx5.qq.com 然后打开,打勾清空文件缓存.如下图
- 小技巧:强制刷新,避免浏览器缓存快捷键
IE中,快捷键是CTLR+F5. Firefox中,快捷键是CTLR+SHIFT+R.
- spring http缓存_HTTP缓存与Spring示例
spring http缓存 缓存是HTTP协议的强大功能,但由于某些原因,它主要用于静态资源,例如图像,CSS样式表或JavaScript文件. 但是,HTTP缓存不仅限于应用程序的资产,因为您还可以 ...
- Chrome浏览器强制刷新
在Chrome浏览器中按Ctrl+F5进行强制刷新,或者Ctrl+点击刷新,或者Ctrl+shift+R. Chrome浏览器会自动缓存页面信息,而强制刷新就是清楚页面缓存.
- nginx 部署前端项目,不缓存html文件,项目发版后,不用手动刷新页面
nginx 部署前端项目,不缓存html文件,项目发版后,不用手动刷新页面 location / {expires 1h;root /home/test/vue/dist/;index index.h ...
- Tip: 强制 Outlook 用户使用缓存模式
能否强制 Outlook 用户使用缓存模式 =========================== 可以.我们可以使用cmdlet Set-CASMailbox 来控制POP,MAPI,IMAP,EA ...
最新文章
- TCP/IP协议各层首部汇总
- UNDO Tablespace
- 多媒体计算机组装过程,多媒体技术及《计算机组装及维护》课精彩结合.doc
- winform开发框架介绍
- 一次 注册dll失败 的经历
- 迅雷下gho文件变成php,GHO格式文件转换成WIM格式文件
- 【转载】秦九韶算法 Horner算法
- 高并发解决方案——提升高并发量服务器性能解决思路
- 微信小程序直接引用外部地图(腾讯地图、高德地图导航)附代码!!
- 计算机房间的英语,酒店客房状态常用英语
- Epoll的本质(内部实现原理)
- [iPhone-APP]手机归属地查询软件
- 当当悲喜交加的19年
- 【LeetCode】606.根据二叉树创建字符串
- pdf转换软件在线转换
- 3d Max 一些操作技巧
- excel文件.xlsx操作 openpyxl 笔记
- 若依 ruoyi 配置多数据源 生成代码 导出代码
- 微机实验2 ——简单并行接口实验
- python输入三个整数_#python输入一个序列,其中包含表示年,月,日的三个整数,判断这个日期是当年的第几?#...
热门文章
- Java中IDEA,Springboot实现手机获取验证码和倒计时
- 项目经验少的怎么社招_想创业,但资金少,不知如何找项目?看看这些经验,你就知道了...
- python内存数据库触发器_Python内存数据库/引擎
- vscode中前端vue项目详解_web前端Vue项目实战-Music
- python 将多张大小不同的图依次放入较大的黑色背景_用户消费行为分析(Python)...
- Mysql索引查询失效的情况
- 初学python之路-day11
- 2018年5大微服务发展趋势
- SpringMVC自定义配置消息转换器踩坑总结
- iOS 细碎知识整理