晓木虫
学术数据库客户端

基于Apache的浏览器缓存机制与缓存设置方法

 找回密码
 注册会员

QQ登录

微信登录

基于Apache的浏览器缓存机制与缓存设置方法

跳转到指定楼层
一、浏览器缓存机制
  对于,如何说明缓存机制,在网络上找到了两张图,个人认为思路是比较清晰的。总结时,上图。
  这里需要注意的有两点:
    1、Last-Modified、Etag是响应头里的数据
     2、If-None-Match、If-Modified-Since是请求头里的数据
     Last-Modified/If-Modified-Since这种搭配,好像已经过时了。在测试时,就是关掉etag,并时间过期了,服务器也照样返回304。
  Etag/If-None-Match这种搭配,还挺好用的。测试时,可用。那就解释下什么是etag?什么是if-none-match?
    etag:当前资源的唯一标识。是文件的索引节、文件大小、文件创建时间组合的hash。
    if-none-match:这就是上面etag的copy。但是,请求服务器时,如果发现if-none-match与etag不对应时,就说明文件被修改了,这时返回200,重新获取文件,没修改则返回304,继续使用缓存文件。
二、Apache设置缓存
  使用Apache的.htaccess设置缓存有三种方法
第一种方法:
      在Apache开启mod_expires.so模块
      在配置文件中打开:LoadModule expires_module modules/mod_expires.so
      在.htaccess添加以下内容
  1. <IfModule mod_expires.c>
  2. #打开缓存
  3. ExpiresActive On
  4. #默认对所有资源缓存600秒
  5. ExpiresDefault A600
  6. #png格式的资源缓存5秒
  7. ExpiresByType image/png A5
  8. #jpg格式的资源缓存50秒
  9. ExpiresByType image/jpg A50

  10. #好含这些后缀的资源,都缓存100秒
  11. <FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
  12. ExpiresDefault A100
  13. </FilesMatch>

  14. </IfModule>
复制代码
第二种方法:
      在Apache开启mod_headers模块
      去配置文件中添加以下内容:
        LoadModule headers_module modules/mod_headers.so
      在.htaccess中添加内容:
  1. #包含这些后缀的资源都缓存33秒
  2. <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf)$">
  3. Header set Cache-Control "max-age=33"
  4. </FilesMatch>
复制代码
第三种方法:
      在.htaccess添加以下内容:
  1. FileEtag INode Mtime Size
复制代码
要关闭etag,则添加以下内容:
  1. FileEtag none
复制代码

基于Apache的浏览器缓存机制与缓存设置方法
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则  | 请遵守晓木虫管理条例,不得违反国家法律法规

返回顶部