如今的Web网站会由不少的图片、脚本、css以及flash等这些元素嵌入到页面中,若是不设置缓存或者缓存设置不当,会致使客户端向Web服务器访问时都会从新下载一次这些内容,浪费了不少带宽。经过Apache的mod_expires缓存模块来设置ExpiresHeader来缓存这些文件。expires模块经过Header报文来指定特定类型的文件在浏览器中的缓存时间,好比像图片、flash等这些在发布后不须要常常作修改的内容。所以作了缓存以后,浏览器从web服务器上下载第一次以后,就不须要从新再次下载这些文件了,而是直接从浏览器的缓存中读取了。经过这样的设置可以让客户端的访问速度加快,同时也节省了不少带宽。javascript
安装方法:编译时configure后面加--enable-expires便可,若是在编译安装时没有安装该模块,能够参考《CentOS7 Apache调优之开启deflate压缩模块,http://www.javashuo.com/article/p-mbwtpwlw-t.html》文章中单独编译模块的方法。
css
/usr/local/apache/bin/apxs -c -i -a /usr/local/src/httpd-2.4.33/modules/filters/mod_expires.chtml
vi /usr/local/apache/conf/httpd.conf,找到并开启java
LoadModule expires_module modules/mod_expires.soweb
缓存的方法有三种,分别是对目录,对全局,对虚拟主机apache
<ifmodule mod_expires.c>浏览器
ExpiresActive on缓存
ExpiresDefault "access plus 12 month"
服务器
ExpiresByType text/html "access 12 month"
网络
ExpiresByType text/css" access 12 month"
ExpiresByType image/gif" access 12 month"
ExpiresByType image/jpeg" access 12 month"
ExpiresByType image/jpg "access 12 month"
ExpiresByType image/png "access 12 month"
ExpiresByType application/x-shockwave-flash "access 12 month"
ExpiresByType application/x-javascript "access 12 month"
ExpiresByType video/x-flv "access 12 month"
</ifmodule>
全局缓存:直接在httpd.conf中配置以上内容
目录缓存:在httpd.conf中,找到你的网站目录位置中添加以上内容
<Directory '/usr/local/apache/htdocs'>
#上面配置
</Directory>
虚拟主机:
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host2.example.com
# DocumentRoot "/usr/local/apache/htdocs"
# ServerName 127.0.0.1:80
# ErrorLog "logs/dummy-host2.example.com-error.log"
# CustomLog "logs/dummy-host2.example.com-access.log" common
# 在这里加入上面的配置
#</VirtualHost>
expires模块语法:
expires模块用到了ExpiresDefault和ExpiresByType两个指令,如下是这两个指令的语法:
ExpiresDefault "<base>[plus]{<num><type>}*"
ExpiresByType type/encoding '<base>[plus]{<num><type>}'
其中,base的参数有三个:access,now(等价于'access'),modification
plus关键字是可选的
<num>必须是整数,确保能够atoi()所接收,(atoi能够把字符串转换成长整型数)
<type>参数类型:years,months,weeks,days,hours,minutes,seconds
使用缓存的好处:
缩短服务响应时间,
减小服务器负载,
减小所需的网络带宽量,下降成本。
缓存的缺点:因为使用了缓存,致使被缓存的内容有更新时,客户端看到的仍是旧的
解决方案:
根据业务内容和需求,缩短缓存的时间
修改缓存文件的命名