http协议无状态,所以缓存设定从两方面考虑.客户端浏览器和服务器端.

浏览器端实现过期机制. 服务器端实现验证机制.

缓存机制.

为了减轻服务器负担,也减少网络传输数量.http1.0定义了Expires. http1.1 进一步定义了cache-control字段.

Expires: 返回一个date 类型时间戳,指定该文件被浏览器缓存到什么时间后过期.这个字段貌似在F5刷新时候仍会重新发送http请求.

Cache-Control:该字段定义了很多子项,  本人只关心浏览器端返回字段,如max-age 秒为单位,覆盖expires字段.no-cache 不缓存,public 可共享,private如仅限于某个用户,no-store不应被存储,no-transform 不应转换存储形式,must-revalidate必须向服务器验证.

适用http版本的不同,决定了在使用cache-control的同时必须使用expires,否则无法向下兼容.

cache-control的优先级高于expires

配置: nginx  nginx 的http_headers modules 支持expires 声场cache-control 和expires 字段. ngx_headers_more是增强版http头设置工具,支持自定义headers . 用法为more_set_headers "xx:xxx"  (

ngx_headers_more 包下载地址:http://github.com/agentzh/headers-more-nginx-module包含该模块

重新编译nginx 源码并 --add-module=/path/to/headers-more-nginx-module

)

//对图片,flash文件在浏览器本地缓存30天
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
//对js,css文件在浏览器本地缓存1小时
location ~ .*\.(js|css)$
{
expires 1h;
}

apache 要设置LoadModule expires_module modules/mod_expires.so ;或者LoadModule headers_module modules/mod_headers.so

验证机制.

主要是last-modified 和Etag

浏览器请求服务器端,服务器端返回包含last-modified字段,客户端再次请求带上if-modified-since:字段,服务器验证该字段和last-modified字段相同则返回304,不同则返回200.304 之后浏览器从本地加载.

Etag 类似. 浏览器请求,服务器返回包含etag,客户端再次请求带上if-none-match,服务器验证etag和if-none-match相同则返回304,不同则返回200

HTTP缓存缓存机制的更多相关文章

  1. Mybatis缓存处理机制

    一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...

  2. 并发读写缓存实现机制(一):为什么ConcurrentHashMap可以这么快?

    大家都知道ConcurrentHashMap的并发读写速度很快,但为什么它会这么快?这主要归功于其内部数据结构和独特的hash运算以及分离锁的机制.做游戏性能很重要,为了提高数据的读写速度,方法之一就 ...

  3. Android-Universal-Image-Loader的缓存处理机制

    讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西.看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制. ...

  4. 从源代码分析Android-Universal-Image-Loader的缓存处理机制

    讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西.看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制. ...

  5. Hibernate中的脏检查和缓存清理机制

    脏检查 Session到底是如何进行脏检查的呢?当一个Customer对象被加入到Session缓存中时,Session会为Customer对象的值类型的属性复制一份快照.当Session清理缓存时, ...

  6. Hibernate——脏检查和缓存清理机制

    Session到底是如何进行脏检查的呢? 当一个Customer对象被加入到Session缓存中时,Session会为Customer对象的值类型的属性复制一份快照.当Session清理缓存时,会先进 ...

  7. 使用Spring提供的缓存抽象机制整合EHCache为项目提供二级缓存

      Spring自身并没有实现缓存解决方案,但是对缓存管理功能提供了声明式的支持,能够与多种流行的缓存实现进行集成. Spring Cache是作用在方法上的(不能理解为只注解在方法上),其核心思想是 ...

  8. 艺多不压身 -- 常用缓存Cache机制的实现

    常用缓存Cache机制的实现 缓存,就是将程序或系统经常要调用的对象存在内存中,以便其使用时可以快速调用,不必再去创建新的重复的实例. 这样做可以减少系统开销,提高系统效率. 缓存主要可分为二大类: ...

  9. NFS缓存IO机制

    NFS的缓存IO机制<一> async 参数模式下分析 NFS 默认的mount参数为async,async 参数表示内核不会透传程序的IO请求给sever,对于写IO会延迟执行,积累一定 ...

  10. 浏览器 HTTP 协议缓存机制详解--网络缓存决策机制流程图

    1.缓存的分类 2.浏览器缓存机制详解 2.1 HTML Meta标签控制缓存 2.2 HTTP头信息控制缓存 2.2.1 浏览器请求流程 2.2.2 几个重要概念解释 3.用户行为与缓存 4.Ref ...

随机推荐

  1. Mac系统杂项 (持续更新)

    一.调整LaunchPad的图标显示列数和行数 .调整每一列显示图标数量.在我的电脑上(1366 * 768),每列7个个人觉得比较不错 defaults write com.apple.dock s ...

  2. C#同步数据库的数据到Neo4J

    数据组件采用https://github.com/Readify/Neo4jClient 在nuget里面有 需要注意的是 以下是示例代码: using System;using System.Col ...

  3. 记微信开发(自定义回复&关注回复)

    记微信开发(自定义回复&关注回复) 记微信开发(自定义回复&关注回复) code: <?php/** * wechat php test *///define your toke ...

  4. linux删除、移动、拷贝时,加-f仍然会提示的解决办法

    cp -f 还是提示 root# alias 可以看到,执行cp就等于执行了cp -i,-i是确认提示 alias cp='cp -i' root# vi ~/.bashrc 修改完毕Esc, :wq ...

  5. join函数——Gevent源码分析

    在使用gevent框架的时候,我们经常会使用join函数,如下: def test1(id): print(id) gevent.sleep(0) print(id, 'is done!') t = ...

  6. Max Sum(hd P1003)

    Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum ...

  7. C语言基础11

    函数指针的定义: 函数类型 (标识符 指针变量名)(形参列表) void  printHello( ); void printHello( ){ printf("hello world!!! ...

  8. What does cmd /C mean? [closed] 关于nodejs的子进程部分

    之前一直很不明白为什么 child_process.spawn(command[, args][, options]) shell <Boolean> | <String> I ...

  9. 浅谈 qmake 之 shadow build(就是将源码路径和构建路径分开)

    shadow build shadow build 是什么东西?就是将源码路径和构建路径分开(也就是生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁. 这不是qmake ...

  10. JVM 看不到某些异常的stacktrace问题(转)

    在java 1.5的release notes里面可以看到这样一句话: The compiler in the server VM now provides correct stack backtra ...