一、web缓存可以分为数据库缓存、代理服务器缓存、浏览器缓存。

  其中浏览器缓存又包含很多内容:http缓存、indexDb、cookie、localStorage等。本片只讨论http缓存相关内容。

二、http缓存是通过头信息控制缓存。

  a. 分为强缓存和协商缓存两种。

  b. 强缓存如果命中,则不需要和服务器发生交互。

  c. 协商缓存不管是否命中,都要和服务器发生交互。

  d. 强缓存的优先级高于协商缓存。

三、强缓存。

  a. 可以理解为无需验证的缓存策略。

  b. 响应头中有两个字段来表明规则Expires/Cache-Control。

  c. Expires指定资源过期时间,超过这个时间点表明资源过期。是http1.0的标准。

  d. Cache-Control是http1.1的标准,优先级高于Expires。可能的取值有:max-age, s-maxage, public, private, no-cache, no-store, mast-revalidate。

  e. max-age指定资源过期时间,单位是s。在指定时间内直接使用缓存,不发送请求。

  d. s-maxage作用同max-age,但仅限于共享缓存,在私有缓存中被忽略。

  e. public表示响应既可以被代理服务器缓存又能被客户端缓存。

  f. private表示响应只能被客户端缓存。

  g. no-cache强制所有缓存了该响应的用户,在使用已缓存的数据前,发送带验证器的请求到服务器。

  h. no-store禁止缓存,每次请求都要向服务器重新获取。

  i. mast-revalidate表示如果缓存资源已过期则请求服务器重新拉取。

  

四、协商缓存。

  a. 缓存的资源到期了,不代表资源的内容发生了改变,如果和服务器上的资源没有差异,实际上没有必要再次请求。

  b. 浏览器第一次请求数据后会将数据和响应头部的缓存标识存储起来,再次请求时会带上存储的头部字段,服务器端验证是否可用。返回304代表资源没有发生改变可以使用缓存的数据,获得新的过期时间。返回200就相当于重新请求了一遍资源并替换旧资源。

  c. Last-modified  /  If-Modified-Since: Last-modified服务器端资源的最后修改时间,响应头部会带上这个标识。第一次请求后浏览器记录这个时间,再次请求时,请求头部带上

If-Modified-Since即之前记录下的时间。服务器端收到带If-Modified-Since的请求后回去和资源的最后修改时间对比。相等返回304,否则返回最新资,源状态码200。

  d. Etag  /  If-None-Match:原理同Last-modified  /  If-Modified-Since,只不过Etag是服务器端生成的一段hash字符串,精确度比laste-modified要高,属于强验证,要求资源字节级别的一致。

  

  

web缓存之--http缓存机制的更多相关文章

  1. System.Web.Caching.Cache类 缓存 各种缓存依赖

    原文:System.Web.Caching.Cache类 缓存 各种缓存依赖 Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.C ...

  2. 005-优化web请求一-gzip压缩、http缓存控制和缓存校验[Pragma、Expires、Cache-Control、max-age、Last-Modified、用户刷新访问、避免过度304]

    优化Web应用的典型技术:缓存控制头信息.Gzip.应用缓存.ETag.反应型技术[异步方法调用和WebSocket] 一.模板缓存 spring.thymeleaf.cache=true sprin ...

  3. System.Web.Caching.Cache类 缓存 各种缓存依赖(转)

    转自:http://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html Cache类,是一个用于缓存常用信息的类.HttpRuntime ...

  4. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  5. 说说web缓存-强缓存、协商缓存

    网上关于WEB缓存的文章很多,今天汇总一下. 为什么要用缓存 一般针对静态资源如CSS,JS,图片等使用缓存,原因如下: 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影 ...

  6. 【Web技术】276- WebView缓存原理分析和应用

    前言 混合式开发,在产品体验以及页面加载速度的体验上已经非比以往的.今日早读文章由@unclechen分享. 正文从这开始- 一.背景 现在的App开发,或多或少都会用到Hybrid模式,到了WebV ...

  7. C# System.Web.Caching.Cache类 缓存 各种缓存依赖

    原文:https://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html Cache类,是一个用于缓存常用信息的类.HttpRuntim ...

  8. Web前后端缓存技术(缓存的主要作用是什么)

    Web前后端缓存技术Web前后端缓存技术(缓存的主要作用是什么) 一.总结 一句话总结: 加快页面打开速度 减少网络带宽消耗 降低服务器压力 1.在Web应用中,应用缓存的地方有哪些? 主要有浏览器缓 ...

  9. 如何构建高性能web网站:分布式缓存

    一.数据库前端缓冲区 要清除数据库前缓冲区,首先必须明确什么是文件系统的内核缓冲区(Buffer Area):它位于内核的物理内存地址空间,除了使用O_DIRECT比其他标签中打开文件,所有的磁盘的读 ...

随机推荐

  1. GIT入门笔记(18)- 标签创建和管理

    git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id: git tag -a <tagname> -m "blablabla ...

  2. Docker学习笔记 - Docker数据卷的备份和还原

    学习目标: 备份数据卷 还原数据卷 # 通过容器备份数据卷容器中的数据卷 docker run --volumes-from dvt5 -v ~/backup:/backup --name dvt10 ...

  3. spring-oauth-server实践:授权方式四:client_credentials 模式下有效期内重复申请 access_token ?

    spring-oauth-server入门(1-12)授权方式四:client_credentials 模式下有效期内重复申请 access_token ? 一.失效重建邏輯 二.如果沒有失效,不会重 ...

  4. OAuth2.0学习(1-7)授权方式4-客户端模式(Client Credentials Grant)

    授权方式4-客户端模式(Client Credentials Grant) 客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向"服务提 ...

  5. Python:使用youtube-dl+ffmpeg+FQ软件下载youtube视频

    声明:本文所述内容都是从http://blog.csdn.net/u011475134/article/details/71023612博文中学习而来. 背景: 一同学想通过FQ软件下载一些youtu ...

  6. JSONObject和JSONArray区别及基本用法

    一.JSONObject和JSONArray的数据表示形式 JSONObject的数据是用 {  } 来表示的, 例如:   { "id" : "123", & ...

  7. Git reset到某一次commit

    下图场景:张三和李四并行开发,张三提交commit1(bc2dd00),李四提交commit2(7f019d2),张三再提交commit3(44d4fc5),如果此时李四revert commit2, ...

  8. Java动态代理模式浅析

    Java代理设计模式 - 静态代理 Java中的动态代理 - 调用处理器 代理设计模式的UML图: 我将首先介绍Java中的各种代理实现方法 Java代理设计模式 - 静态代理 这个例子非常简单,只有 ...

  9. 计蒜客NOIP模拟赛D2T3 数三角形

    刚刚上高中的洁洁在学习组合数学的过程中遇到一道麻烦的题目,她希望你能帮助她解决.给定一张无向完全图 G,其中大部分边被染成蓝色,但也有一些边被染成红色或者绿色.现在,洁洁需要给这张图的多样性进行打分. ...

  10. POJ1743 Musical Theme(二分+后缀数组)

    题目大概是给n个数组成的串,求是否有多个“相似”且不重叠的子串的长度大于等于5,两个子串相似当且仅当长度相等且每一位的数字差都相等. 这题是传说中楼教主男人八题之一,虽然已经是用后缀数组解决不可重叠最 ...