缓存的概念

缓存

系统缓存 :buffer 与 cache:

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

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

    • cache 的保存位置:

      ​ 客户端:浏览器

      ​ 内存:本地服务器、远程服务器
      ​ 硬盘:本机硬盘、远程服务器硬盘

    • cache 的特性:

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

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

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

用户层缓存:

  • DNS 缓存:
    默认为 60 秒,即 60 秒之内在访问同一个域名就不在进行 DNS 解析:
    查看 chrome 浏览器的 DNS 缓存:
    chrome://net-internals/#dns

  • 浏览器缓存过期机制:

    • Etag 标记:
      基于 Etag 标记是否一致做判断页面是否发生过变化,比如基于 Nginx 的 etag on 来实现,数值自动生成。在页面文件如 常见的js文件可以看到

    • Last-Modified最后修改时间:

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

CDN 缓存

什么是 CDN:

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

CDN实现原理:

​ 若是对一个域名加A速,则cdn厂商会给我们一个基于A的加速域名B。我们把A的的域名解析CNAME 指向B 即可。cdn厂商完成域名B的解析,将B解析成各个地方节点的ip地址即可。

用户请求 CDN 流程:

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

mark

CDN 主要优势:
  • 提前对静态内容进行预缓存,避免大量的请求回源,导致主站网络带宽被打满而导致数据无法更新,
  • 另外 CDN 可以将数据根据访问的热度不同而进行不同级别的缓存,例如访问量最高的资源访问 CDN ,边缘节点的内存,其次的放在 SSD 或者 SATA,再其次的放在云存储,这样兼顾了速度与成本,缓存到最快的地方如内存,缓存的数据准确命中率高,访问速度就快
  • 调度准确-将用户调度到最近的边缘节点
  • 性能优化-CDN 专门用于缓存响应速度快
  • 安全相关-抵御攻击
    的数据准确命中率高,访问速度就快
  • 调度准确-将用户调度到最近的边缘节点
  • 性能优化-CDN 专门用于缓存响应速度快
  • 安全相关-抵御攻击
  • 节省带宽:由于用户请求由边缘节点响应,因此大幅降低到源站带宽。
发布了62 篇原创文章 · 获赞 7 · 访问量 1285

猜你喜欢

转载自blog.csdn.net/qq_36801585/article/details/104341132