缓存概念

缓存概念

缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较快的一方起到一个加速访问速度较慢的一方的作用,比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的raid 卡有也缓存,都是为了起到加速CPU 访问硬盘数据的目的,因为CPU的速度太快了,CPU需要的数据由于硬盘往往不能在短时间内满足CPU的需求,因此PCU缓存、内存、Raid 卡缓存以及硬盘缓存就在一定程度上满足了CPU的数据需求,即CPU 从缓存读取数据可以大幅提高CPU的工作效率。

系统缓存

buffer与cache

(1)buffer:

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

  • buffer是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。

(2)cache:

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

  • cache是为了提高CPU和内存之间数据交换而设计的,即平时常见的一级缓存、二级缓存、三级缓存。

(3)cache的保存位置

  • 客户端:浏览器
  • 内存:本地服务器、远程服务器
  • 硬盘:本机硬盘、远程服务器硬盘

(4)cache的特性

  • 自动过期:给缓存的数据加上有效时间,超出时间后自动过期删除
  • 过期时间:强制过期,源网站更新图片后CDN是不会更新的,需要强制是图片缓存过期
  • 命中率:即缓存的读取命中率

用户层缓存

DNS缓存

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

  • 查看chrome浏览器的DNS缓存:
    chrome://net-internals/#dns

(2)火狐浏览器缓存

  • about:cache

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

  • ①最后修改时间:系统调用文件的时候会获取文件的最后修改时间,如果没有发生变化就返回给浏览器304的状态码,表示没有发生变化,然后浏览器就使用的本地的缓存展示资源

  • 如果服务端返回最后修改时间没有发生过变化,则直接使用浏览器的本地缓存,状态码就是304

  • ②Etag标记:基于Etag标记是否一致做判断页面是否发生过变化(比如对资源进行hash,只要资源内容没有,Etag就不会改变,浏览器本地缓存就可以使用)

(4)过期时间:

  • 最后修改时间Etag两种都需要发送请求,即不管资源是否过期都要发送请求进行协商,这样会消耗不必要的时间,因此有了缓存的过期时间,即第一次请求资源的时候带一个资源的过期时间,默认为30天,当前这种方式使用的比表较多,但是无法保证客户的时间都是准确并且一致的,因此会加入一个最大生存周期,使用用户本地的时间计算缓存数据是否超过多少天,下面的过期时间为2027年,但是缓存的最大生存周期计算为天等于3650天即10年,过期时间如下:

CDN缓存

什么是CDN

内容分发网络(Content Delivery Network),通过将服务内容分发至全网加速节点,利用全球调度系统使用户能够就近获取,有效降低访问延迟,提升服务可用性,CDN 第一降低机房的使用带宽,因为很多资源通过CDN就直接返回用户了,第二解决不同运营商之间的互联,因为可以让联通的网络访问联通让电信的网络访问电信,起到加速用户访问的目的, 第三:解决用户访问的地域问题,就近返回用户资源。

用户请求CDN流程

提前对静态内容进行预缓存,避免大量的请求回源,导致主站网络带宽被打满而导致数据无法更新,另外CDN可以将数据根据访问的热度不同而进行不同级别的缓存,例如访问量最高的资源访问CDN 边缘节点的内存,其次的放在SSD或者SATA,再其次的放在云存储,这样兼顾了速度与成本。

CDN主要优势

提前对静态内容进行预缓存,避免大量的请求回源,导致主站网络带宽被打满而导致数据无法更新,另外CDN可以将数据根据访问的热度不同而进行不同级别的缓存,例如访问量最高的资源访问CDN 边缘节点的内存,其次的放在SSD或者SATA,再其次的放在云存储,这样兼顾了速度与成本。缓存-缓存到最快的地方如内存,缓存的数据准确命中率高,访问速度就快。

  • ①调度准确-将用户调度到最近的边缘节点
  • ②性能优化-CDN 专门用于缓存响应速度快
  • ③安全相关-抵御攻击
  • ④节省带宽:由于用户请求由边缘节点响应,因此大幅降低到源站带宽

应用层缓存

Nginx、PHP等web服务可以设置应用缓存以加速响应用户请求,另外有些解释性语言比如PHP/Python/Java不能直接运行,需要先编译成字节码,但字节码需要解释器解释为机器码之后才能执行,因此字节码也是一种缓存,有时候会出现程序代码上线后字节码没有更新的现象。

其他层面缓存

CPU缓存

CPU缓存(L1的数据缓存和L1的指令缓存)、二级缓存、三级缓存

cookie与session

Cookie是访问某些网站以后在本地存储的一些网站相关的信息,下次再访问的时候减少一些步骤,比如加密后的账户名密码等信息 Cookies是服务器在客户端浏览器上存储的小段文本并随每一个请求发送至同一个服务器,是一种实现客户端保持状态的方案。 session称为会话信息,位于web服务器上,主要负责访问者与网站之间的交互,当浏览器请求http地址时,可以基于之前的session实现会话保持、session共享等。

session与cookie的区别

  • 1、Cookie以文本文件格式存储在浏览器中,而session存储在服务端。
  • 2、cookie的存储限制了数据量,只允许4KB,而session是无限制的。
  • 3、cookie包含在每一个客户端请求报文中,因此容易被人捕获。
  • 4、cookie和session都可以设置过期时间。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值