详解浏览器缓存机制与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配置静态文件缓存

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

apache 设置缓存

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

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

1.Apache 配置静态缓存 为了提高资源的利用率,可以设置文件缓存的时间长短 # vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 找到...

apache性能配置优化

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

Apache2.4配置(全)

--用户认证 --日志切割 --差异记录 --访问控制 --域名跳转 --配置静态文件缓存 --防盗链...

nginx和apache设置不缓存文件

在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。 apache: 首先确定配置文件...

nginx及apache不缓存配置;

今天碰见一个问题,我们要对页面实际展现量做一个统计,也不想给统计的pvcall.png加上时间戳,其实用nginx和apache自己的配置即可解决此问题,提供下apache不缓存配置和nginx不缓存...

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

apache设置 必要条件: httpd.conf中必须开启: LoadModule headers_module modules/mod_headers.so 设置下cache-control ...

apache如何设置缓存

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

事务型开发(如何设计防重入接口)

半年前,自己从BD来到一个创业小公司,开始接触事务型开发的一些基本技术。自己的服务器开发技术最开始部分源于腾讯,主要是使用服务器的单线程异步IO模型+UDP+状态机来做一些事情。对于很多高并发的服务是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:详解浏览器缓存机制与Apache设置缓存
举报原因:
原因补充:

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