Apache配置静态缓存

老问题,什么是静态缓存?为什么配置静态缓存?

这里的静态文件指的是图片、 js、 css 等文件,用户访问一个站点,其实大多数元素都是图片、 js、 css 等,这些静态文件其实是会被客户端的浏览器缓存到本地电脑上的,目的就是为了下次再请求时不再去服务器上下载,这样就加快了速度,提高了用户体验。但这些静态文件不能一直缓存,它有一些时效性。


配置静态缓存的两种方法如下:

1. 通过mod_expires.c模块

打开mod_expires模块

vim /usr/local/apache2/conf/httpd.conf

找到

#LoadModule expires_module modules/mod_expires.so

将前面的#去掉,取消注释,加载模块

然后编辑虚拟主机配置文件

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

在相应的虚拟主机配置中加入以下内容


      ExpiresActive on

      ExpiresByType image/gif "access plus 1 days"

      ExpiresByType image/jpeg "access plus 24 hours"

      ExpiresByType image/png "access plus 24 hours"

      ExpiresByType text/css "now plus 2 hour"

      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"

配置分析:

老规矩,看下官方解释

This module controls the setting of the Expires HTTP header and the max-age directive of the Cache-Control HTTP header in server responses. The expiration date can set to be relative to either the time the source file was last modified, or to the time of the client access.

Expires Default base[plusnumtype[numtype]...

Expires ByType type/encoding "base[plus numtype] [numtype] ..."

where base is one of:

access

now(equivalent to 'access')

modification

The plus keyword is optional. num should be an integer value [acceptable toatoi()], and type is one of:

years,months,weeks,days,hours,minutes,seconds


所以呢,有两种格式,

第一种是

Expires Default 

第二种是

Expires ByType


区别

1. Expires ByType可以通过微调,专门指定对哪种类型的文件设置缓存

2. 格式上的区别:ExpiresByTypetext 要加上要指定的类型

ExpiresDefault"access plus 1 month"

ExpiresByType  text/html "access plus 1 month 15 days 2 hours"


然后我们来看下文件的格式:

ExpiresDefault"access plus 1 month"

access是什么呢,代表的就是查看这些网页的时候,其他的选择还有

access          访问网页的时间

now               和access一个效果

modification   网页的修改时间

plus也就是字面意思,加上多久

后面的month代表时间,其他的选项还有以下内容,注意单复数哦

years,months,weeks,days,hours,minutes,seconds

还有一种写法:

ExpiresByTypetext/html M604800

M代表modification

A代表acess

后面跟的就是要增加的秒数

2. 通过mod_headers模块

具体配置如下


       

                 header set cache-control "max-age=3600"

       

     

                header set cache-control "max-age=604800"

     

     

            header set cache-control "max-age=29030400"

     


filematch就是匹配文件,后面的是正则表达式

header set cache-control "max-age=29030400"

这也没啥说的了,都是固定的语法

max-age=29030400指定的秒数


最后重启Apache即可

/usr/local/apache2/bin/apachectl graceful

你可能感兴趣的:(Apache配置静态缓存)