缓存基础(一)|学习笔记

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 快速学习 缓存基础(一)

开发者学堂课程【Redis 入门实战演练 缓存基础(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/653/detail/10831


缓存基础(一)


内容简介

一、缓存概念

二、redis 部署与使用

 

一、缓存概念

1.系统缓存

(1)buffer 与 cache

buffer:缓冲也叫写缓冲,一般用于写操作,可以将数据先写入内存在写入磁盘,buffer一般用于写缓冲,用于解决不同介质的速度不一致的缓冲,先将数据临时写入到里自己最近的地方,以提高写入速度,CPU 会把数据先写到内存的磁盘缓冲区,然后就认为数据已经写入完成看,然后由内核在后续的时间在写入磁盘,所以服务器突然断电会丢失内存中的部分数据。

cache:缓存也叫读缓存,一般用于读操作,CPU 读文件从内存读,如果内存没有就先从硬盘读到内存再读到 CPU,将需要频繁读取的数据放在里自己最近的缓存区域,下次读取的时候即可快速读取。

CPU---内存---硬盘 java

(2)cache 的保存位置

客户端:浏览器

缓存服务器---内存(需要程序共享内存分享给 CPU 的存储硬盘)

内存:redis、memcached

内存:本地服务器、远程服务器

硬盘:本机硬盘、远程服务器硬盘

将远端服务器的内存共享出来、方便客户端即应用程序的使用

(3)cache 的特性

(4)凡是缓存都会有一个有效期

但部分缓存存在一直有效的情况。例如:公司的 logo 长期以来很小有变动,称为可永久有效的缓存内容

可抓取网页的图片或 logo 进行检验

例如京东网站购物页面的图片每隔一段时间或节日促销商品像手机、电脑、化妆品的商品图片展示有一定的改变,此时该缓存即为有期限的缓存

自动过期:给缓存的数据加上有效时间,超出时间后自动过期删除

过期时间:强制过期,源网站更新图片后 CDN 是不会更新的,需要强制是图片缓存过期

用户访问---cdn 缓存---原栈

缺点:服务器用户访问更新不一致

需要cache进行强制更新否则服务器和用户访问二者不能同时更新

更新之后,cnd 不会自动更新,那这个时候会让 cnd 上把它缓存的那些图片或者那些开始会让 cnd 把强制更新在cnd的管理台账管理平台。强制更新,必须强制更新,如果不强制更,就算站更新之后,用户访问时由于他访问 cnd 里面的内容,如果没有 cnd,那么这个用户就会直接发到公司的原网站,那么它可以直接找到实时的最新的信息,但是用了三天之后,这个内容会被缓存到手机上这个时候怎么强制刷新?可以注册云账号,先买个 cnd 尝试一下他会给管理平台,类似于在创建虚拟机的时候,可以对虚拟机进行删除,创建,重启等操作,对于 cnd 来说,它就可以有一个强制刷新,就可以打开管理界面,然后,把网站缓存内容就提交给 cnd,这样会给C的缓存区域下发的指令,它就会把他 flash 掉,就是删除全部清空,清空完之后从栈再重新的缓存下来,这样内容就会给更新了 cnd。更新完之后就可以被用户能够访问到了,否则会出现你的网站更新之后,用户访问的还是以前的内容

设置过期时间:

在 location 里添加 expires 30d;

Location /img {

root /data/img;

Expires 30d;

命中率:即缓存的读取命中率

2. 用户层缓存:

(1)DNS 缓存

默认为60秒,即60秒之内在访问同一个域名就不在进行 DNS 解析:

查看 chrome 浏览器的DNS缓存;

访问:chrome://net-internals/#dns

早期版本可以查找到,新版本出于安全的考虑已经禁止用户查找以免对其进行更改

image.png

从中可以找到过期时间等等

(2)火狐浏览器缓存

about:cache

image.png

包括内存、磁盘、应用

image.png

缓存到磁盘中的数据

包括日期、大小、访问次数、过期时间

(3)浏览器缓存过期机制

①最后修改时间

 image.png

系统调用文件的时候会获取文件的最后修改时间,如果没有发生变化就返回给浏览器304的状态码,表示没有发生变化,然后浏览器就使用的本地的缓存展示资源当跑了个外包服务,但是外部服务里面的那些应程序总是需要提供一些静态资源,或者各种资源程序的各种资源的,也就是我们的用户的浏览器,当我们去访问的时候,先不考虑中间的 CD,先考虑这个用户是直接可以放到我们的外包服务的。并且中间是经过了负载均衡和防火墙,负载机构和防火墙只是负责转发,不负责提供外包的外包的页面。除非是个七层的 nginx。

先不考虑中间经过了哪些防火墙和负载均衡,假如是直接通过防火墙到了 web 服务器,那么这个 web 服务器上的内容就是第一次访问的时候,这个内容会直接给用户反馈,因为用户本地没有访问过,也就是本地在之前没有任何缓存,那么在本地没有缓存的情况下会直接访问web服务器并1.jpg 或者是 index.html 等等各种计算资源直接发给用户。当用户上访了,要看个手机,但是考虑之后没买,有可能是这个价格不合适,或者有货比三家,看一下华为的是不是更好一些。所以说他上网只是查看了一下,没有购买,但是看完看完之后一对比可能觉得还是小米的那部手机比较好,还是要购买小米手机就会导致他过了一段时间之后又会去访问小米的网站。假如再一次访问网站,会导致最近一段时间访问过的信息本地存在,缓存情况下去访问了1.jpg 或者是 index.html,但是不知道这个文件是不是过期了,这时我们在访问这个服务器的时候,会把这个最后修改时间处理提交给服务器,有服务器进行判断,判断有没有发生变化,如果服务器没有发生变化,就会给用户一个反馈。一个时间处,告诉你我们网站信息没有什么变化,即返回的状态码。就是用户在访问这个文件时,会附带个稳定的最后修改时间,如果这个最后的修改时间,服务端进行判断没有发生过变化,那么之后服务端就会在这个地方给客户端再返回一个状态码。这个状况说明服务端在这种情况下,在我们的发给客户端访问的文件内容在文件的最后修改时间没有发生变化的时候,会给客户一个304,通过这个304状态码告诉客户端这个文件内容没有发生变化,这个时候用户的浏览器就会使用它之前缓存过的图片、数据,或者直接把它渲染出来,那么就可以看到 web 界面。其实会经么几次交精装交互。第一次是完全的访问,把内容图片先抓取下来,第二次访问的时会先向服务端提个请求,就是要获取文件的时间处到底有没有发生变化,如果没有发生变化就是304码。如果发生这个文件的内容发生了变化,在第一次访问和下一次访问期间,恰好服务端发生过代码部署,或者做了什么操作而导致这个内容发生了变化,那这个发生代码变化就是就是200。服务端判断,客户端提交的文件的最后修改时间不一样,不一样就不会发送304码而是把这个文件的内容重新给客户端发送一次或者再返回一次。

image.png

相关文章
|
3月前
|
缓存 NoSQL 关系型数据库
数据库缓存一致性学习笔记(一)
数据库缓存一致性学习笔记(一)
|
12月前
|
缓存 前端开发
前端学习笔记202306学习笔记第四十七天-vue-强制缓存3
前端学习笔记202306学习笔记第四十七天-vue-强制缓存3
59 0
|
3月前
|
存储 缓存 前端开发
《Webpack5 核心原理与应用实践》学习笔记-> webpack5持久化缓存
《Webpack5 核心原理与应用实践》学习笔记-> webpack5持久化缓存
164 1
|
10月前
|
缓存 NoSQL 算法
Redis学习笔记-缓存容量和淘汰机制核心思想
Redis学习笔记-缓存容量和淘汰机制核心思想
125 0
|
10月前
|
消息中间件 缓存 NoSQL
Redis学习笔记-如何解决缓存和数据库的数据不一致
Redis学习笔记-如何解决缓存和数据库的数据不一致
133 0
|
10月前
|
缓存 NoSQL 数据库
Redis学习笔记-如何应对缓存雪崩、击穿、穿透
Redis学习笔记-如何应对缓存雪崩、击穿、穿透
48 0
|
缓存 前端开发
前端学习笔记202307学习笔记第五十九天-react源码-双缓存技术
前端学习笔记202307学习笔记第五十九天-react源码-双缓存技术
59 0
前端学习笔记202307学习笔记第五十九天-react源码-双缓存技术
|
12月前
|
缓存 前端开发
前端学习笔记202306学习笔记第四十七天-vue-强制缓存2
前端学习笔记202306学习笔记第四十七天-vue-强制缓存2
64 0
|
12月前
|
缓存 前端开发
前端学习笔记202306学习笔记第四十七天-协商缓存1
前端学习笔记202306学习笔记第四十七天-协商缓存1
32 0
|
12月前
|
缓存 前端开发
前端学习笔记202306学习笔记第四十七天-协商缓存3
前端学习笔记202306学习笔记第四十七天-协商缓存3
34 0