访问一个网站的时候,里面有各种各样的小图片,这些在每个页面里有很多的元素,它们所占用的空间也很大,那我们为了把网页传输的大小变小,可以把静态文件在浏览器这一侧做个缓存,在apache服务端可以配置的,规定它缓存多少天,多少个小时,等过了那些小时,它再重新请求、刷新,也就意味着我们的网站会有很多次请求,每次请求它就不会在服务端调用它,这样就会节省很大的带宽资源。

访问很慢:北京-->U2B

解决方案:北京-->代理服务器(缓存U2B上的静态文件)-->U2B

## 编辑虚拟主机配置文件

[root@wy ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

  <IfModule mod_expires.c>

        ExpiresActive on

        ExpiresByType p_w_picpath/gif "access plus 1 days"

        ExpiresByType p_w_picpath/jpeg "access plus 24 hours"

        ExpiresByType p_w_picpath/png " now plus 24 hours"

        ExpiresByType text/css "now plus 2 hours"

        ExpiresByType application/x-javascript "now plus 2 hours"

        ExpiresByType application/javascript "now plus 2 hours"

        ExpiresByType application/x-shockwave-flash "now plus 2 hours"

        ExpiresDefault "now plus 0 min"

    </IfModule>

解释说明:

在匹配.js文件时候需要写两行javascript与x-javascript

Apache配置——静态缓存_静态缓存

## 检查并重新加载

[root@wy ~]# /usr/local/apache2/bin/apachectl -t

Syntax OK

[root@wy ~]# /usr/local/apache2/bin/apachectl graceful

## 测试gif(设置为1天的时候)

[root@wy ~]# curl -xlocalhost:80 http://www.test.com/static/p_w_picpath/common/online_supermod.gif -I

HTTP/1.1 200 OK

Date: Sat, 05 Nov 2016 16:00:11 GMT

Server: Apache/2.2.16 (Unix) DAV/2 PHP/5.3.28

Last-Modified: Thu, 04 Sep 2014 03:22:34 GMT

ETag: "20a62-17c-50234dd113280"

Accept-Ranges: bytes

Content-Length: 380

Cache-Control: max-age=86400

Expires: Sun, 06 Nov 2016 16:00:11 GMT

Content-Type: p_w_picpath/gif

## 测试gif(设置为2天的时候)

[root@wy ~]# curl -xlocalhost:80 http://www.test.com/static/p_w_picpath/common/online_supermod.gif -I          

HTTP/1.1 200 OK

Date: Sat, 05 Nov 2016 16:03:23 GMT

Server: Apache/2.2.16 (Unix) DAV/2 PHP/5.3.28

Last-Modified: Thu, 04 Sep 2014 03:22:34 GMT

ETag: "20a62-17c-50234dd113280"

Accept-Ranges: bytes

Content-Length: 380

Cache-Control: max-age=172800

Expires: Mon, 07 Nov 2016 16:03:23 GMT

Content-Type: p_w_picpath/gif

或者使用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=31536000"

        </filesmatch>

    </IfModule>

解释说明:

max-age=3600 表示一个小时

"\.(css|js|swf).*" 因为有.css?的形式