码迷,mamicode.com
首页 > Web开发 > 详细

http_cache

时间:2015-10-22 01:34:29      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

http_cache

http_cache

private cache     <== 存在客户端主机上
public cache      <== 存在缓存服务器上

缓存过期控制:

Cache-Control: max-age=484200     <== 多少秒
Expires: <date>                   <== 是一个时间, 类似 2015..

缓存验证:

If-Modified-Since: <date>     <== 是一个时间, 类似 2015.., 对应服务器端的 Last-Modified
If-None-Match: <etags>        <== 缓存的唯一标识, 类似 hash, 对应服务器端的 Etag

还有两个条件请求

If-Match, If-None-Modified-Since

验证规则:
仅仅匹配日期是不够的

  1. 日期修改, 内容不会被修改
  2. 修改如果不是很重要
  3. 无法准确判断时间

..

  1. 如果服务器有 etags 标签, 客户端必须用实体标签验证 If-None-Match
  2. 如果服务器只有 Last-Modified 值, 客户端要使用 If-Modified-Since 验证
  3. 如果服务器两个都有提供, 客户端两个都要验证

弱验证和强验证:
弱验证

GET /index.html HTTP/1.1
If-None-Match: W/"v4.0"        <== Weak

强验证: md5 校验和


Cache-Control:
请求: Client 请求 Server

no-store                  不要返回缓存过的文档, 表示要真正的文档
no-cache                  如果是缓存过的文档, 要先向 Server 验证一次, 再给 Client
max-age=484200            存活时间, Expires
max-stale                 过期了无所谓
max-stale=484200          过期 484200 秒才可用, 超过这个时间就不要
min-fresh=484200          484200 秒后可用, 就继续使用这个缓存, 不然不要
only-if-cached            当缓存中有副本存在时, Client 才再次获得一份缓存
no-transform              文档在发送之前不允许被转换

响应: Server 响应 Client 的请求

public             响应可以被任何服务器缓存
private            响应可以被缓存, 但只能被单个 Client 访问
no-cache           如果该报文被另一个 缓存 Server 所保存, 缓存 Server 必须要重新验证才能给 Client
no-store           响应不允许被缓存
no-tranform        响应在提供给 Client 之前, 不能做任何形式的修改
must-revalidate    响应在提供给 Client 之前, 必须要验证
proxy-revalidate   共享的缓存在提供给客户端之前必须重新向 Server 验证, 如果 Client 直接和 Server 连接可以忽略这个首部
max-age=484200     响应存活时间, Expires
s-maxage           响应存活时间, 仅对 public cache 生效

html 控制缓存

<meta http-equiv="Cache-Control" content="no-cache">

http-equiv 控制 3 秒后跳转

<meta http-equiv="refresh" content="3;url=http://www.baidu.com">

apache 控制缓存

来源: http://blog.csdn.net/21aspnet/article/details/6604814

mod_headers

<ifmodule mod_headers.c>
    <filesmatch "\.(html|htm|txt)$">
        header set cache-control "max-age=3600"
    </filesmatch>

    <filesmatch "\.(css|js|swf)$">
        header set cache-control "max-age=604800"
    </filesmatch>

    <filesmatch "\.(ico|gif|jpg|jpeg|png|flv|pdf)$">
        header set cache-control "max-age=29030400"
    </filesmatch>
</ifmodule>

mod_expires

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault A0

    # 1 年
    <FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
        ExpiresDefault A9030400
    </FilesMatch>

    # 1 星期
    <FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
        ExpiresDefault A604800
    </FilesMatch>

    # 3 小时
    <FilesMatch "\.(txt|xml|js|css)$">
        ExpiresDefault A10800
    </FilesMatch>
</IfModule>

nginx 控制缓存

http_cache

标签:

原文地址:http://www.cnblogs.com/sunznx/p/4899697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!