注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

apache利用mod_expires,mod_headers来缓存静态文件  

2017-10-11 09:30:08|  分类: 服务器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
大家都知道,采用静态文件缓存能提高服务器的性能,有以下好处:
1.缩短服务的响应时间
2.减轻服务器负担
3.减少网络带宽使用量
尤其体现在一些限制流量的虚拟主机上,至少可以减少10%左右的重复请求流量。原理并不复杂,就是设定网页文件的过期时间,加长网页文件被浏览器缓存(Cache)保存的时间。如此一来,只要网页文件的过期时间未到,浏览器就会直接读取缓存中的文档,而不用再花时间去网站取回。当然apache启用这个mod_expires也很容易,下面就来看看要如何做。
a) 编译安装apache的时Configure步骤中添加--enable-expires以便开启模块 ,这样在apache安装目录的modules目录里就会生成mod_expires.so,同时在httpd.conf也会自动添加如下代码:

LoadModule expires_module modules/mod_expires.so

当然如果这行代码前面有#,请去掉。
b)在配置文件httpd.conf中加入如下代码:

<IfModule mod_expires.c>
 ExpiresActive on
 #缓存3天。
ExpiresDefault "access plus 3 days"
 #css只缓存1天
ExpiresBytype text/css "access plus 1 days"
#以下是另一种表达形式,259200=3X24X60X60[三天]
#ExpiresDefault A259200
 #86400=24X60X60[一天]
#ExpiresBytype text/css A86400
#还可以这样用,css文件只缓存一天,其它默认缓存三天
#<FilesMatch "\.(css)$">
# ExpiresDefault A86400
 #</FilesMatch>
</IfModule>

这里使用<IfModule></IfModule>来包含指令是为了避免mod_expires模组没有启用的情况下执行出错。如果确定mod_expires模组已经启用,那么不加<IfModule></IfModule>也没关系。
c)关于时间设定的方式有分两种,一个是文字叙述型,一个是代码加上秒数型。文字叙述型:
文字叙述型:依照Apache官方说明文件,过期起算时间有三种,分别是access、now 以及modification。其中access与now等价,而modification则指的是网页文件的”最后编辑时间”。所以如果要以文档最后修改时间起算,可以写成这样,”modification plus 3 days”。而时间格式也很简单,就是英文单字(years、months、weeks、days、hours、minutes、seconds)。
代码加上秒数型:代码有分两种,”A”等同”access”,意指浏览时起算过期时间,比较适合应用在不常变动的网页文件类型,例如图片。另外一种代码是”M”,其意义等同于”modification”,指的是网页文件的”最后修改时间”,比较适合应用在经常变动的网页文件类型,例如HTML。
d)如果mod_expires没有开启,又无法修改的话,请使用mod_headers[当然这个模块功能要开启],在.htaccess文件中添加如下内容也可以实现缓存:

<ifmodule mod_headers.c>
# htm,html,txt类的文件缓存一个小时
<filesmatch “\.(html|htm|txt)$”>
header set cache-control “max-age=3600″
</filesmatch>
# css, js, swf类的文件缓存一个星期
<filesmatch “\.(css|js|swf)$”>
header set cache-control “max-age=604800″
</filesmatch>
#jpg,gif,jpeg,png,ico,flv,pdf等文件缓存一年
<filesmatch “\.(ico|gif|jpg|jpeg|png|flv|pdf)$”>
header set cache-control “max-age=29030400″
</filesmatch>
</ifmodule>

f)开启了缓存之后,如果有需要取最新的文档,请在url加入参数。比如想取不缓存的style.css,就使用如下的方式:

<link rel="stylesheet" type="text/css" href="http://593668.com/css/style.css?v=804120090827100441" />

在掌握后,希望对于大家的网站性能优化有所帮助。
  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017