美文网首页
缓存知识前奏

缓存知识前奏

作者: 麟之趾a | 来源:发表于2020-05-13 17:59 被阅读0次

程序运行的局部性

时间局部性:一个数据访问后,很快被再次访问
空间局部性:一个数据被访问时,其周边数据也有可能被访问到网页

缓存概念

热区

我们一个站点可能20%的页面,承担80%的流量,我们把这20%称为热区

失效性

缓存空间耗尽:LRU,最近最少使用的被清除
过期时间:缓存清理(即空间没有耗尽,缓存到了过期时间也要清理。)

命中率

衡量缓存的指标,是缓存命中率
页面命中率:基于页面数量进行衡量
字节命中率:基于页面体积进行衡量

命中率低的原因

缓存空间太小: 导致大量LRU缓存被删除了
缓存时间太短: 数据刚刚缓存,就过期了(原数据更新频繁)
缓存没有预热
我们要缓存读多写少的页面

web缓存

私有数据:用户私有信息,只能为特定用户的缓存(带cookie信息的,但电商里,用户浏览的商品也有可能带有cookie信息),因此我们要区分私有数据和公有数据
公有数据:放在公共区域,能被所有用户缓存命中的
缓存键:如果键带有私有数据,那只能被私有缓存
因此我们要在缓存中,区分有哪些是私有缓存哪些数据可以被公有缓存

缓存分类

代理缓存(递归式缓存)

image.png

当用户请求,缓存没有命中,缓存服务器会自动请求后端节点,拿到数据后。返回给客户端
http协议的所有连接都为代理缓存,squid,varnish

旁挂式缓存

image.png

客户端请求缓存,当缓存不存在时,客户端就会请求服务器,拿到数据,自行决定是否缓存到缓存服务器 memcache

HTTP 缓存概念

HTTP1.1改善了过期缓存机制,和增加了条件缓存机制(当缓存过期了,问后端服务器,我这个缓存要不要更新)

过期缓存

HTTP1.0

Expires:过期时间 定义什么时候缓存失效,但如果浏览器和服务器的时区不一致会出现问题

HTTP1.1

cache-Control:maxage 缓存数据的最大存活时间
cache-Control:s-maxage公共数据缓存的最大存活时间

条件式请求缓存

Last-Modified/If-Modified-since基于文件修改时间戳来判断
Etag/If-None-Match 基于Etag标记,基于文件内容校验码进行对比

image.png
基于Etag判断
客户端拿到数据向后端请求,我缓存中的数据是否和后端服务器的数据内容一致,如果一致,后端服务器返回304,如果不一致返回200
基于时间戳判断
客户端缓存中的数据,和后端服务器的数据修改时间戳进行对比,是否比我更新,如果比我更新服务器返回200,如果一致返回304

过期缓存和条件式缓存一起工作

当客户端请求数据缓存到了本地,当过期的缓存时间过期了,缓存就会向服务器问,我这个缓存是否有变动,如果有变动服务器返回200,如果没有变动返回304,之后缓存继续过期缓存

HTTP 请求报文中缓存

Cache-Control:no-cache不用缓存响应报文,强制刷新

HTTP 响应报文

      Cache-Control:
              public  公有缓存
              private 私有缓存
              no-cache:告诉缓存系统,内容可以缓存。但过期缓存没用,必须每次向服务端请求缓存的有效性(条件式缓存)
              no-store: 不能缓存
              must-relvalidate: 必须重新效验缓存,no-cache一样
              proxy-revailddate:由代理服务器进行重新效验
              max-age: 缓存数据的存活时间
              s-maxage:公共数据的缓存存活时间

相关文章

  • 缓存知识前奏

    程序运行的局部性 时间局部性:一个数据访问后,很快被再次访问空间局部性:一个数据被访问时,其周边数据也有可能被访问...

  • 缓存知识

    权限系统是管理类系统中必不可少的一个模块,一个好的缓存设计更是权限系统的重中之重,今天来聊下如何更好设计权限系统的...

  • 前端缓存大全

    前端缓存是我们前端开发中, 缓存是不可避免的知识点, 最近在复习缓存的知识, 整理了一下浏览器所有缓存类型, 希望...

  • Ajax前奏之HTTP与缓存

    协议 世界上任何一幢建筑必须有一个“地址”才能被找到。互联网上的任何一个资源必须有一个“URL”才能被访问 URL...

  • redis应用场景之缓存

    一、缓存一些知识 1.1、缓存击穿、缓存穿透、缓存雪崩是什么? 缓存击穿用户请求的某个key在DB或者缓存中存在,...

  • RecyclerView源码学习笔记二(缓存机制)

    在本文我们继续学习RecyclerView缓存的相关知识。缓存分为缓存取出和缓存存入,首先来分析下缓存取出: 一、...

  • 快速理解浏览器缓存

    快速理解浏览器缓存知识。 浏览器缓存主要为两类:强缓存、协商缓存。 和缓存相关的HTTP头有6个。 强缓存: Ca...

  • 知识分享之规范——个人理解的一级缓存、二级缓存、三级缓存

    知识分享之规范——个人理解的一级缓存、二级缓存、三级缓存 背景 知识分享之规范类别是我进行整理的日常开发使用的各类...

  • 缓存知识梳理

  • 浏览器缓存知识小结及应用

    转载:浏览器缓存知识小结及应用 阅读目录 1. 浏览器缓存基本认识 2. 强缓存的原理 3. 强缓存的管理 4. ...

网友评论

      本文标题:缓存知识前奏

      本文链接:https://www.haomeiwen.com/subject/schonhtx.html