首页
学习
活动
专区
工具
TVP
发布

Nginx缓存详解(一)之客户端缓存

客户端缓存指的是浏览器缓存, 浏览器缓存是最快的缓存, 因为它直接从本地获取(但有可能需要发送一个协商缓存的请求), 它的优势是可以减少网络流量, 加快请求速度。...客户端判断缓存是否过期和先前请求时服务端返回的HTTP消息头字段有关: 服务端返回字段 作用 Cache-Control: max-age=x 客户端缓存时间超出x秒后则缓存过期。...如果Web服务器返回304,则客户端使用本地缓存,如果返回200,则使用Web服务器返回的新的数据。 Cache-Control: no-store 客户端不能对响应进行缓存。...协商缓存 协商缓存原理: 当客户端向服务端发起请求时,服务端会检查请求中是否有对应的标识(If-Modified-Since或Etag),如果没有对应的标识,服务器端会返回标识给客户端客户端下次再次请求的时候...当客户端第一次发起请求时,Etag的值在响应头中传递给客户端;当客户端再次发起请求时,如果验证完本地内容缓存后需要发起服务端验证,Etag的值将由请求消息头的If-None-Match字段传递给服务端。

1.8K40

亿及流量多级缓存 - 客户端缓存

文档整理于 马士兵教育 服务并发化 其他缓存 客户端 浏览器缓存 首先,限定在get请求 由于浏览器缓存涉及到的应用比较多,所以针对不同的应用和版本效果也会有差异 浏览器:chrome 服务器:nginx...Cache-Control缓存头,分为响应头和请求头 标记 类型 功能 public 响应头 响应的数据可以被缓存客户端和代理层都可以缓存 private 响应头 可私有缓存客户端可以缓存,代理层不能缓存...s-maxage 请求和响应 用户代理层缓存,CDN下发,当客户端数据过期时会重新校验 max-stale 请求和响应 缓存最大使用时间,如果缓存过期,但还在这个时间范围内则可以使用缓存数据 min-fresh...因为HTTP 规范是允许客户端在某些特殊情况下直接使用过期缓存的,比如校验请求发送失败的时候。那么带有must-revalidate的缓存必须校验,其他条件全部失效。...兜底数据 在服务器崩溃和网络不可用的时候展示 临时缓存 退出即清理 固定缓存 展示框架这种,可能很长时间不会更新,可用随客户端下发 父子连接 页面跳转时有一部分内容不需要重新加载,可用从父菜单带过来

83330
您找到你想要的搜索结果了吗?
是的
没有找到

Etcd 客户端缓存实践

具体想法是在客户端缓存查询结果,这样每次需要查询 etcd 的时候,如果缓存命中,则只需要访问一次本地内存省掉一次网络开销,如果没有命中,再到 etcd 中查询,并将查询结果加入缓存,这极大地降低了频繁查询...Etcd Watch 机制 在启用缓存之后就会面临本地缓存更新的问题,因为 etcd 是一个分布式的 KV 存储,允许多个客户端并发操作并保证一致性,那么如果其他客户端更新了 etcd 中的数据,那么如何更新本客户端本地缓存中的数据呢...客户端缓存的实现 有了 etcd 的 watch 机制和 revision 我们就可以实现一个客户端缓存。...我们来假设这样一个场景,本地主机上有两个进程,分别起了两个客户端,也就对应了两份缓存。...总    结 本文介绍了如何基于 etcd 的 watch 机制来实现客户端缓存,有了客户端缓存,极大地降低了访问 etcd 的延迟并提高了吞吐,非常适合读多写少的场景。

85720

Redis 6 客户端缓存

Redis服务器辅助的客户端缓存 客户端缓存是一种用于创建高性能服务的技术。它利用应用服务器中的可用内存,这些服务器通常是与数据库节点不同的计算机,以便将数据库信息的某些子集直接存储在应用程序端。...不管使用什么模式,有一个简单的事实:许多非常大的应用程序实现某种形式的客户端缓存,因为这是拥有快速存储或快速缓存服务器的下一个逻辑步骤。...客户端缓存的Redis实现 Redis客户端缓存支持称为跟踪,有两种模式: 在默认模式下,服务器会记住给定客户机访问的密钥,并在修改相同的密钥时发送无效消息。...然而,许多客户端实现可能更喜欢使用两个独立的连接来实现客户端缓存:一个用于数据,另一个用于无效消息。因此,当客户端启用跟踪时,它可以指定通过指定不同连接的“客户端ID”将无效消息重定向到另一个连接。...客户端将收到关于它没有缓存的对象的无效消息。

1.7K40

亿级流量客户端缓存之Http缓存与本地缓存对比

客户端缓存分为Http缓存和本地缓存,使用缓存好处很多,例如减少相同数据的重复传输,节省网络带宽资源缓解网络瓶颈,降低了对原始服务器的要求,避免出现过载,这样服务器可以更快响应其他的请求 Http缓存...http缓存分文强制缓存和协商缓存,主要用来在客户端存储一些不经常变化的的静态文件,像图片、CSS、JS等。...在讲强制缓存和协商缓存之前,先了解一下Http缓存的过程: 强制缓存 浏览器在请求某一个资源时,会先获取资源的header信息,判断是否命中强缓存(cache-control和expires信息),若命中...的使用可以说是差不多的,但是,Etag(http1.1)的出现是为了解决几个Last-Modified比较难解决的问题: 一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候我们并不希望客户端认为这个文件被修改了...兜底数据 在服务器崩溃和网络不可用的时候展示 临时缓存 退出即清理 固定缓存 展示框架这种,可能很长时间不会更新,可用随客户端下发 父子连 页面跳转时有一部分内容不需要重新加载,可用从父菜单带过来 预加载

1.6K20

Apache 站点优化-客户端缓存

所以我们通过静态缓存的方式,将这些不常变化的数据缓存到用户本地磁盘,用户以后再访问这些请求,直接从本地磁盘打开加载,这样的好处是加载速度快,且节约公司带宽及成本。...应用场景:数据缓存 优化目的:提升用户访问页面加载速度,节约带宽 二、静态缓存实现 1)修改apache主配置文件,加载缓存模块 LoadModule expires_module modules/mod_expires.so...2)针对虚拟主机或者目录设置缓存策略 #开启缓存 ExpiresActive on #针对不同类型元素设置缓存时间...') 相当于access modification 从修改时间算起 缓存时间单位 years months weeks days hours minutes seconds 三、验证测试 *缓存没有生效前...缓存生效后测试 响应头中加载了缓存字段 Cache-control 和 Expires,并且缓存的时间和我们预设的一致,成功啦。

74020

客户端写得LRU缓存

前言 由于我们的客户端的元素和资源比较多,cocos框架的各种库质量参差不齐,导致了有些地方加载速度实在很慢。并且没有一个统一的内存管理机制导致了整个内存占用不太好控制。...LRU实现设计 由于最主要还是由客户端的问题引起的,所以最先还是考虑客户端的需求。...在实际使用过程中加入了自动调整各类上下限阈值的边界,因为在客户端场景里,有时候触发主动GC之后,有些资源会过一会再回收资源或在下一个关键点再回收。这会导致短时间内频繁触发主动GC。...客户端上的应用 实际缓存池的实际使用过程中还是碰到了一些问题的。...所以后来不得不对cocostudio创建的节点做缓存。然而如果是一开始就使用这个缓存的话就比较容易发现问题,我们中途开始切入这个缓存的话就发现。

2K10

使用传统前端技术增强客户端缓存能力

使用传统前端技术增强客户端缓存能力 前几天重构之后,Lighthouse 中有一个评分让我念念不忘: ProgressiveWebApp。...浏览器客户端代码 说到 PWA ,我们能直接想到的,无非是 增强缓存 和 推送能力。而这两个能力,都是 ServiceWorker API 实现的。...上面介绍浏览器客户端代码的时候,有引入一个外部脚本依赖 sw.js。...而需要缓存的资源一般分为两类: 短时间缓存:页面或者页面片段 相对长时间缓存:图片等媒体资源,或者有一定跨页面通用能力的脚本和样式资源 这里以10分钟(调试模式单位替换为秒)为一个时间段,为短时间缓存的资源进行缓存...没有定义启动屏幕(仿客户端体验)。 没有定义顶栏的主题色。 viewport 没有优化。 这些后面再说吧。

73310

「最强」Lettuce 已支持 Redis6 客户端缓存

Redis 客户端缓存 缓存的解决方案一般有两种: 【L1】 内存缓存(如 Caffeine、Ehcache) —— 速度快,进程内可用,但重启缓存丢失,出现缓存雪崩的问题。...如下 J2Cache 两级缓存框架 hotkey 热点数据实时同步 在 redis 6.0 版本中,已经默认支持了客户端缓存功能,Java 中主流的连接客户端 lettuce 在最新的快照版本 (6.0.0...下边就通过代码来体验一下客户端缓存的神奇功能。...我们可以通过以下监控看下客户端具体的操作细节 监控 ....57483] "GET" "k1" # 由于k1 值发生变化,循环 会重新查询redis-server 如上: 虽然是个死循环,但是关于 redis 操作只有以上注释的几条,说明客户端缓存生效

1.2K20

带你100% 地了解 Redis 6.0 的客户端缓存

近日 Redis 6.0.0 GA 版本发布,这是 Redis 历史上最大的一次版本更新,包括了客户端缓存 (Client side caching)、ACL、Threaded I/O 和 Redis...我们今天就依次聊一下客户端缓存的必要性、具体使用、原理分析和实现。 为什么需要客户端缓存?...功能介绍和演示 下面使用 Docker 安装 Redis 6.0.1,然后使用 telnet 来简单演示一下 Redis 6.0 的客户端缓存功能。...client tracking off+OK 广播模式 Redis 还提供了一种广播模式(BCAST),它是另外一种客户端缓存的实现方式。...客户端缓存的相关操作就是对该数据的增删改查: 当开启 track 功能的客户端获取某一个键值时,Redis 会调用 enableTracking 方法使用基数树记录下该 key 和 clientId 的映射关系

1.6K20

【译】antirez:Redis6将支持客户端缓存

有两个主要的原因,一是需要给客户端提供更加具有语义的回复,二是提供一个旧版本不能实现的新功能:客户端缓存。 时间倒回一年前,我到达圣安东尼奥的Redis Conf 2018。...当时公司就有一个共识是客户端缓存是Redis在未来非常重要的事情。如果我们需要更快的存储和更快的缓存,我们就需要在客户端存储一部分信息。这是提供低延迟和大规模数据服务的很自然的想法。...在客户端是否缓存了key呢?要记住缓存每个key和收到失效消息时的时间戳,记住每个slot的失效时间。...key,Redis将会检查失效表,发现客户端123和444都缓存了这个slot上的key。...我们将会给这些客户端发送失效信息,然后会记录下slot最后的失效时间戳,并在以后懒检查缓存对象的时间戳,并对照后判断是否失效。此外,客户端可以回收表中缓存的指定slot的对象。

69620

带你100% 地了解 Redis 6.0 的客户端缓存

近日 Redis 6.0.0 GA 版本发布,这是 Redis 历史上最大的一次版本更新,包括了客户端缓存 (Client side caching)、ACL、Threaded I/O 和 Redis...我们今天就依次聊一下客户端缓存的必要性、具体使用、原理分析和实现。 为什么需要客户端缓存?...功能介绍和演示 下面使用 Docker 安装 Redis 6.0.1,然后使用 telnet 来简单演示一下 Redis 6.0 的客户端缓存功能。...client tracking off +OK 广播模式 Redis 还提供了一种广播模式(BCAST),它是另外一种客户端缓存的实现方式。...客户端缓存的相关操作就是对该数据的增删改查: 当开启 track 功能的客户端获取某一个键值时,Redis 会调用 enableTracking 方法使用基数树记录下该 key 和 clientId 的映射关系

1.4K01

redis6.0 客户端缓存(Client side caching)及实践

什么是客户端缓存(Client side caching) 通常的缓存会放在应用和DB之间,比如redis。客户端缓存是指在应用服务内部再加一层缓存,也就是内存缓存,从而进一步提升访问速度。 ?...redis对客户端缓存的支持方式被称为Tracking,分为两种模式:默认模式,广播模式。...新协议目的之一是支持客户端缓存。...想对新协议有更多了解可以参看如下两篇文章: RESP3 specification 读写 Redis RESP3 协议以及Redis 6.0客户端缓存 这里,我们只关注与客户端缓存相关的部分 hello...不过,许多客户端实现可能倾向于使用两个单独的连接来实现客户端缓存:一个用于数据,另一个用于失效消息。redis通过redirect支持这一功能。

2.6K10

慕课网2021-01-29 Redis6直播笔记 - 上(acl客户端缓存多级缓存

客户端缓存 Client Side Cache 这是他的官网地址,有兴趣可以看看: https://redis.io/topics/client-side-caching 我们应该都知道,redis作为缓存中间件...可以看一下这图,他本质上就是基于redis-server服务端来维系和应用后端的关系,用的pub/sub发布订阅的通知机制,如果服务端缓存发生更改,那么可以向应用后端来推送,让其更新本地缓存。...实现客户端缓存的方式 - 默认模式 Redis-server 服务端会记录客户端访问了哪些key,这客户端id与key有唯一的映射关系,当其中的key发生变更时给客户端发送失效信息。...实现客户端缓存的方式 - 广播机制 客户端订阅访问过的key的前缀,当符合的key发生变更就会被redis-server通知(如果变更的key没有被客户端缓存,也会通知),由于服务器端不记录客户端访问的...在广播模式下,只要符合客户端设置的key前缀的key发生新增、修改、删除、还有过期、淘汰等动作,即使该key没有被该客户端缓存,也会收到key的失效消息; 多级缓存 直播过程中提到了多级缓存架构,可以通过这图了解一下

66910
领券