详解浏览器缓存机制与Apache设置缓存

转载 2016年08月31日 15:08:24

一、详解浏览器缓存机制

  对于,如何说明缓存机制,在网络上找到了两张图,个人认为思路是比较清晰的。总结时,上图。

  这里需要注意的有两点:

     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添加以下内容

复制代码
<IfModule mod_expires.c>
#打开缓存
ExpiresActive On
#默认对所有资源缓存600秒
ExpiresDefault A600
#png格式的资源缓存5秒
ExpiresByType image/png A5
#jpg格式的资源缓存50秒
ExpiresByType image/jpg A50

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

</IfModule>
复制代码

      

    第二种方法:

      在Apache开启mod_headers模块

      去配置文件中添加以下内容:

        LoadModule headers_module modules/mod_headers.so

      在.htaccess中添加内容:

#包含这些后缀的资源都缓存33秒
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=33"
</FilesMatch>

    

    第三种方法:

      在.htaccess添加以下内容:

FileEtag INode Mtime Size

      要关闭etag,则添加以下内容:

FileEtag none

    

 

 

 

    经过测试,这几种方法同时使用,则会出现优先级:

      第三种方法>第二种方法>第一种方法

    还发现了一些小知识,Apache不缓存能解析的资源文件,比如php、php3等。如果修改配置文件,致使可以解析jpg格式的文件,那就不能缓存jpg格式的文件。可在配置文件中,添加以下代码,做测试:

        AddType application/x-httpd-php .jpg


 参考网页:

  http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html

  http://my.oschina.net/leejun2005/blog/369148

  http://yixun.yxsss.com/yw13.html


Apache如何实现静态缓存【实操案例】

mod_expires&mod_headers可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求。 在使用之前,首先要确认一下”mod_expir...
  • hj7jay
  • hj7jay
  • 2017年03月31日 10:19
  • 978

apache如何设置缓存

基本介绍       httpd是一个比较经典的web服务器,也就是静态资源服务器,主要用来服务于一些静态的文件,例如css,js,html等文件,所谓的静态文件,也就是不需要通过服务器进行运行的...
  • a545415
  • a545415
  • 2017年09月12日 22:18
  • 280

在apache下配置浏览器缓存

最近忙于系统的产品化设计,为了寻找灵感重新复习一下操作系统,读到缓存算法一章时突然想起可以试用一下浏览器缓存。还是以图片浏览为例,在同一个页面点击翻页链接以查看不同图片,每次都是向服务器发送请求,服务...
  • sunbobosun5680
  • sunbobosun5680
  • 2009年12月18日 10:48
  • 4306

Apache中关于页面缓存的设置

Expires、Cache-Control、Last-Modified、ETag是RFC 2616(HTTP/1.1)协议中和网页缓存相关的几个字段。前两个用来控制缓存的失效日期,后两个用来验证网页的...
  • Meseal
  • Meseal
  • 2017年06月05日 17:10
  • 562

前端开发时经常会被浏览器缓存搞得头大,apache设置一下就好了

apache设置 必要条件: httpd.conf中必须开启: LoadModule headers_module modules/mod_headers.so 设置下cache-control ...
  • haozq2012
  • haozq2012
  • 2015年08月15日 22:32
  • 2104

apache配置静态文件缓存

前端优化,利用.htaceess控制图片,js,css缓存时间提升网页加载速度。Add an Expires or a Cache-Control Header:简单点说:就是缓存一下不常修改的文件,...
  • joeyon
  • joeyon
  • 2015年04月22日 14:18
  • 1442

Apache 设置web 缓存

默认情况下,apache安装完以后,是不允许被cache的。如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要...
  • mrwu9902
  • mrwu9902
  • 2018年01月23日 09:35
  • 20

apache性能配置优化

最近在进行apache性能优化设置。在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯。      httpd相关查看命令了解  查看当前安装模块mpm(多路处理器...
  • zouqingfang
  • zouqingfang
  • 2015年07月15日 14:13
  • 10170

apache 设置缓存

默认情况下,apache安装完以后,是不允许被cache的。如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要...
  • chengfangang
  • chengfangang
  • 2012年12月12日 16:05
  • 1519

Apache 配置静态缓存+禁止解析+限制访问目录

1.Apache 配置静态缓存 为了提高资源的利用率,可以设置文件缓存的时间长短 # vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 找到...
  • haoyiyide
  • haoyiyide
  • 2017年02月17日 17:22
  • 684
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:详解浏览器缓存机制与Apache设置缓存
举报原因:
原因补充:

(最多只允许输入30个字)