缓存机制笔记

浏览器端的缓存规则

  1. 新鲜度(过期机制):1)HTTP协议报头中带有完整的过期时间,并仍在有效内。 2)浏览器已经使用过缓存且在一个会话中检查过新鲜度
  2. 校验值(验证机制):浏览器再次请求,通过此值判定是否获取新的内容

浏览器缓存的控制

  1. HTML的<meta>标签,但不是所有浏览器都支持,且对代理服务器无效
  2. HTTP协议的报头中带有控制信息。

新鲜度:

  1. Expires: 设定过期的具体时间
  2. Cache-Control: 更加细致的控制。1)no-cache or no-store。2)max-age。3)public or private
  3. Last-Modified: 告诉浏览器当前资源的最后修改时间
  4. If-Modified-Since: 告诉服务器当前资源的浏览器所知道的最后修改时间

校验值:

  1. ETag:告知浏览器当前资源的唯一标识符
  2. If-None-Match: 告知服务器当前资源浏览器所知道的唯一标识符

缓存机制的层次

  1. 通过Cache-Control/Expires形成第一道缓存:直接去本地
  2. 通过Last-Modified/ETag形成第二道缓存:304返回

ETag存在的原因

  1. Last-Modified是秒级的,在一秒内多次变化的资源无法体现
  2. 定期生成的文件,无变化但也无法缓存

优先级

  1. Cache-Control > Expires
  2. ETag > Last-Modified
  3. Cache-Control/Expires > ETag/Last-Modified

不缓存的情况

  1. HTTP头中,Cache-Control:max-age=0 或是 Cache-Control:no-cache 或是 Pragma:no-cache
  2. 不带任何和缓存有关的HTTP头时,不缓存
  3. POST请求不会被缓存
  4. HTTPS请求不会被缓存
  5. 动态内容不会被缓存

参考资料:

  1. http://www.alloyteam.com/2012/03/web-cache-2-browser-cache/
时间: 2024-10-27 13:50:34

缓存机制笔记的相关文章

Android笔记(二十五) ListView的缓存机制与BaseAdapter

之前接触了ListView和Adapter,Adapter将数据源和View连接起来,实际应用中,我们要显示的数据往往有很多,而屏幕只有那么大,系统只能屏幕所能显示的内容,当我们滑动屏幕,会将旧的内容放入到缓冲池中,再从缓存池中拿出新的内容显示出来,这就是ListView的缓存机制,这一机制可以极大的节省系统资源. BaseAdapter BaseAdapter通常用于被扩展,扩展BaseAdapter可以对各项列表进行最大限度的定制. 我们可以用自己的类去继承BaseAdapter,然后实现g

Spring笔记——14.Spring3新增加的缓存机制

Spring3.1新增了一种缓存机制,这种缓存机制与Spring容器无缝结合在一起,可以对容器中的任意bean或bean的方法增加缓存.Spring的缓存级别更高,可以在控制器组件或业务逻辑组件级别进行缓存,这样应用完全无需重复调用底层的DAO. 启动Spring缓存 xml中有一个cache命名空间专门用来配置缓存.启动缓存需要在xml中添加如下一行: <cache:annotation-driven chache-manager="缓存管理器ID"/> 该元素指定Spr

H5离线缓存机制-manifest

简介:Manifest 其实就是web应用的一种缓存机制,主要用于现在webapp应用中,它是浏览器自己的一种机制,随着移动互联网时代的到来,网络可靠性降低,如果我们已经将需要的文件缓存下下来,一旦网络无法访问,也能继续访问. 而且做好相应资源的缓存可以带来更好的用户体验,当用户使用自己的流量上网时,本地缓存不仅可以提高用户访问速度,而且大大节约用户的使用流量. 先来看下我们公司实际项目中的使用情况.(阿里淘点点也使用了manifest) 第一次加载时:整体请求是392KB耗时1.82s 当本地

H5缓存机制浅析-移动端Web加载性能优化【干货】

转载:H5缓存机制浅析-移动端Web加载性能优化[干货] 作者:贺辉超,腾讯游戏平台与社区产品部 高级工程师 目录 1 H5缓存机制介绍 2 H5缓存机制原理分析 2.1 浏览器缓存机制 2.2 Dom Storgage(Web Storage)存储机制 2.3 Web SQL Database存储机制 2.4 Application Cache(AppCache)机制 2.5 Indexed Database (IndexedDB) 2.6 File System API 3 移动端Web加载

手把手教你构建 Android WebView 的缓存机制 &amp; 资源预加载方案

前言 由于H5具备 开发周期短.灵活性好 的特点,所以现在 Android App大多嵌入了 Android Webview 组件进行 Hybrid 开发 但我知道你一定在烦恼 Android Webview 的性能问题,特别突出的是:加载速度慢 & 消耗流量 今天,我将针对 Android Webview 的性能问题,提出一些有效解决方案. 目录 1. Android WebView 存在什么性能问题? Android WebView 里 H5 页面加载速度慢 耗费流量 下面会详细介绍. 1.

相约98-与你畅谈:MyBtis内置缓存机制

在实际的项目开发中,通常对数据库的查询性能要求很高,而mybatis提供了查询缓存来缓存数据,从而达到提高查询性能的要求. mybatis的查询缓存分为一级缓存和二级缓存,一级缓存是SqlSession级别的缓存,二级缓存时mapper级别的缓存,二级缓存是多个SqlSession共享的. mybatis通过缓存机制减轻数据压力,提高数据库性能. 查看个人笔记:http://note.youdao.com/noteshare?id=80eda2335aa3c7605116c24ac6e03b48

浏览器缓存机制浅析

非HTTP协议定义的缓存机制 浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: Expires: Cache-control等).但是也有非HTTP协议定义的缓存机制,如使用HTML Meta 标签,Web开发者可以在HTML页面的<head>节点中加入<meta>标签,代码如下: <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 上述代码的作用是告诉浏览器当前页面不被缓存,每

Hibernate 缓存机制

一.why(为什么要用Hibernate缓存?) Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能. 缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据. 二.what(Hibernate缓存原理是怎样的?)Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存. 1.Hibernate一级缓存又称为“Session的

Android开源框架ImageLoader:加载图片的三级缓存机制

前言:可从  https://github.com/nostra13/Android-Universal-Image-Loader 下载三级缓存机制的开源框架.下文简单介绍该框架中主要的常用方法,掌握这些方法,基本就可应对多数图片下载的需求. 注意:以下代码为示意代码片断,仔细读一下应能知道怎么用.蓝色表示为开源框架中的类. 1.初始化ImageLoader类对象: ImageLoader imageLoader = ImageLoader.getInstance(); imageLoader.