在apache下配置浏览器缓存

最近忙于系统的产品化设计,为了寻找灵感重新复习一下操作系统,读到缓存算法一章时突然想起可以试用一下浏览器缓存。

还是以图片浏览为例,在同一个页面点击翻页链接以查看不同图片,每次都是向服务器发送请求,服务器根据路径信息将图片文件流写入JSP页面。

服务器使用Apache2.2 + Tomcat5.5,在访问页面时监控http头。第一次查看图片得到如下信息:

在apache下配置浏览器缓存_第1张图片 

翻回曾经打开的页面时得到如下信息:

 

在apache下配置浏览器缓存_第2张图片

 

翻到过去页居然只有css文件使用了缓存!这实在让人不爽。打开缓存目录看看,JSP的“截止日期”和“最后修改日期”都是“无”,这就可以解释为什么没有用到浏览器缓存。

Apache的httpd.conf中默认不加载浏览器缓存模块,需要把#LoadModule expires_module modules/mod_expires.so的注释去掉;在mod_expires.xml中有如下说明:

 

ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"

 

这段说明简述了缓存配置。

在httpd.conf中添加expires_module模块:

 

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

 

重启apache。

 

这次重新翻回过去页时终于用上了浏览器缓存:

 

在apache下配置浏览器缓存_第3张图片

 

 

这里的缓存仅对超链接和“转到”有效,当使用F5刷新时,依然会重新与服务器确认,使用Ctrl+F5会重新下载所有信息。

 

 

 

你可能感兴趣的:(技术&&管理)