Apache缓存策略可以通过apache的mod_expires和mod_headers两个模块设置。

模块mod_expires设置

允许通过配置文件控制HTTP的ExpiresCache-Control头内容。

mod_expires模块的主要作用是自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要流量和增加访问速度的目的。

mod_expires是Apache众多模块中配置比较简单的一个,共有以下三条指令。
  • ExpiresActive指令:打开或关闭产生ExpiresCache-Control头的功能。
  • ExpiresByType指令:指定MIME类型的文档(例如:text/html)的过期时间。
  • ExpiresDefault指令:默认所有文档的过期时间。
过期时间的写法如下:
  • “access plus 1 month”
  • “access plus 4 weeks”
  • “now plus 30 days”
  • “modification plus 5 hours 3 minutes”
  • A2592000
  • M604800
说明
  • “access plus 1 month”、“access plus 4 weeks”access、“now plus 30 days”和A2592000三种写法意义相同,指过期时间从访问时开始计算。
  • “modification plus 5 hours 3 minutes”和M604800意义相同,指过期时间是以被访问文件的最后修改时间开始计算。
  • M604800只对静态文件起作用,而由脚本生成的动态页面不起作用。

配置实例

ExpiresActive On(开启mod_expires功能)。

ExpiresDefault "access plus 6 months"(默认的过期时间是6个月)。

ExpiresByType image/* "access plus 10 years"(图片的文件类型缓存时间为10年)。

ExpiresByType text/* "access plus 10 years"(文本类型缓存时间为10年)。

ExpiresByType application/* "access plus 30 minutes"(application文件类型缓存30分钟)。

验证:image/jpeg缓存时间为315360000s(10年) 。缓存时间验证

如果将image/jpeg设置为不缓存,将max-age设置为0s。

#ExpiresByType image/* "access plus 10 years"

ExpiresByType image/* A0。max-age

模块mod_headers设置

# YEAR

Header set Cache-Control “max-age=2592000″

# WEEK

Header set Cache-Control “max-age=604800″

# NEVER CACHE

Header set Expires “Thu, 01 Dec 2003 16:00:00 GMT”

Header set Cache-Control “no-store, no-cache, must-revalidate”

Header set Pragma “no-cache”