apache配置优化(六)

Apache--mod_expires缓存模块(这是apache调优的重要参数)

mod_expires介绍:

mod_expires允许图片在用户浏览器进行缓存,用户打开网站,第一次会把图片加载到本地,如果在有效期呢,用户在访问,就不需要去网站读取,只是加载在本地。

好处一:提升用户体验

由于用户读本地缓存了,所以访问页面就快了,也节省网站的带宽流量成本。

好处二:节省网站带宽成本

由于读本地缓存了,和服务器的交互就少了,也节省网站带宽流量成本。

好处三:节省网站服务器及维护成本

由于用户读本地缓存了,和服务器的交互就少了,服务器的压力小了,服务器数量及维护人员等成本都降低了,这也是为什么taobao的缓存是10年过期。

expires失效条件:

1、内容过期

2、用户自己手动清除

控制expires方法:

如果网站更新功能或更新文件后,用户再访问时的内容还是旧的(上面已提到不会再下载了)

怎么解决这个问题呢?

1)首先,对于大公司业务来说,图片等资源一般很少会去修改。因此,taobao,jd可以肆无忌惮的吧expirts设置为10年。一年可以节省费用上亿元。

2)对于js,css偶尔会变化的资源,一般expires设置时间会比较短。如1-30天。

3)在更新文件上采取策略,如,更新后以新的文件名发布,这样对于用户又是新的资源了。

expires特殊缓存情况:

1)特殊缓存,google首页expires一日(经常会变更图片)

2)网站的js统计代码不会设置缓存


检查模块是否安装:

[root@eric6 ~]#/application/apache/bin/apachectl -l|grep mod_expires.c

mod_expires.c

[root@eric6 ~]#/application/apache/bin/apachectl -M|grep expires

expires_module (static)

Syntax OK

如果有以上两个参数,说明mod_expires已经编译安装

如果在查找的时候没有安装该模块,可以使用DSO方式安装:

[root@eric6metadata]# cd /home/tools/httpd-2.2.25/modules/metadata/

[root@eric6metadata]# ll mod_expires.c

-rw-r--r-- 1liuyalei liuyalei 18285 11月 12 2008mod_expires.c

[root@eric6 metadata]#/application/apache/bin/apxs -c -i -a mod_expires.c


[root@eric6metadata]# wget 127.0.0.1

--2013-10-2022:12:10--http://127.0.0.1/

Connecting to127.0.0.1:80... connected.

HTTP request sent,awaiting response... 200 OK

Length: 8[text/html]

Saving to:`index.html.1'


100%[==========================================================================================>]8--.-K/sin 0s


2013-10-20 22:12:10(1.77 MB/s) - `index.html.1' saved [8/8]


[root@eric6metadata]# curl -I 127.0.0.1

HTTP/1.1 200 OK

Date: Sun, 20 Oct2013 14:12:11 GMT

Server:Apache/2.2.25 (Unix) DAV/2

Last-Modified: Sat,19 Oct 2013 04:57:07 GMT

ETag:"43ddb-8-4e910e1fef476"

Accept-Ranges:bytes

Content-Length: 8

Content-Type:text/html

注释expires配置

ExpiresActive on#开启expires功能

ExpiresDefault "access plus 12month"#缺省缓存情况(12个月)

ExpiresByType text/html "accessplus 12 months"#缓存类型html

ExpiresByType text/css "accessplus 12 months"#缓存类型css

ExpiresByType image/gif "accessplus 12 months"#缓存类型gif

ExpiresByType image/jpeg "accessplus 12 months"#缓存类型jpeg

ExpiresByType image/jpg "accessplus 12 months"#缓存类型jpg

ExpiresByType image/png "accessplus 12 months"#缓存类型png

EXpiresByTypeapplication/x-shockwave-flash "access plus 12 months"#缓存类型flash

EXpiresByType application/x-javascript"access plus 12 months"#缓存类型JavaScript

ExpiresByType video/x-flv "accessplus 12 months"#缓存类型x-flv

实例:为一个server标签添加expires功能

[root@eric6apache]# vi /application/apache/conf/extra/httpd-vhosts.conf

<VirtualHost*:80>

ServerAdmin [email protected]

DocumentRoot "/var/bbs"

ServerName bbs.liuyalei.com

ServerAlias liuyalei.com

ErrorLog "logs/bbs-error_log"

CustomLog "logs/bbs-access_log"common

ExpiresActive on

ExpiresDefault "access plus 12month"

ExpiresByType text/html "accessplus 12 months"

ExpiresByType text/css "accessplus 12 months"

ExpiresByType image/gif "accessplus 12 months"

ExpiresByType image/jpeg "accessplus 12 months"

ExpiresByType image/jpg "accessplus 12 months"

ExpiresByType image/png "accessplus 12 months"

EXpiresByTypeapplication/x-shockwave-flash "access plus 12 months"

EXpiresByType application/x-javascript"access plus 12 months"

ExpiresByType video/x-flv "accessplus 12 months"

</VirtualHost>

[root@eric6apache]# ../apache/bin/apachectl -t

Syntax OK

[root@eric6apache]# ../apache/bin/apachectl graceful

[root@eric6apache]# ps -ef|grep httpd

root473410 11:56 ?00:00:03/application/apache2.2.25/bin/httpd -k start

daemon817747340 22:30 ?00:00:00/application/apache2.2.25/bin/httpd -k start

daemon817847340 22:30 ?00:00:00/application/apache2.2.25/bin/httpd -k start

daemon817947340 22:30 ?00:00:00/application/apache2.2.25/bin/httpd -k start

daemon818047340 22:30 ?00:00:00/application/apache2.2.25/bin/httpd -k start

root826379690 22:30 pts/000:00:00 grep httpd

服务端网站上传一张图片,然后在火狐浏览器安装2个插件,进行查看,检查缓存情况:


你可能感兴趣的:(apache配置优化)