访问一个网站的时候,里面有各种各样的小图片,这些在每个页面里有很多的元素,它们所占用的空间也很大,那我们为了把网页传输的大小变小,可以把静态文件在浏览器这一侧做个缓存,在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
## 检查并重新加载
[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?的形式