Tomcat性能调优 通过ExpiresFilter设置资源缓存

【官方文档】

  http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Expires_Filter

【简介】

  ExpiresFilter是Java servlet API 当中的一部分,它负责控制设置response当中的响应头(Expires) 和 (  Cache-Control的max-age),过期时间可以设置为相对于源文件的最后修改时间,或者浏览器的访问时间。

  这些响应头指示浏览器控制文档的缓存,如果使用了缓存,那么浏览器在下一次获取文档(HTML)的时候就会从本地缓存中获取,而不是访问实际的资源服务器,除非超过失效时间。关于HTTP头控制客户端缓存的更多介绍请参见我的另外一篇文章,http://www.cnblogs.com/daxin/p/3981553.html或者可以直接查阅HTTP协议(see RFC 2616 section 14.9)。

【例子】

  Basic configuration to add 'Expires' and 'Cache-Control: max-age=' headers to images, css and javascript.

    下面的例子针对所有的 IMAGE CSS JAVASCRIPT 输出进行控制,添加HTTP头设置客户端缓存。

<filter>
<filter-name>ExpiresFilter</filter-name>
<filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
<init-param>
<param-name>ExpiresByType image</param-name>
<param-value>access plus 10 minutes</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType text/css</param-name>
<param-value>access plus 10 minutes</param-value>
</init-param>
<init-param>
<param-name>ExpiresByType application/javascript</param-name>
<param-value>access plus 10 minutes</param-value>
</init-param>
</filter>
...
<filter-mapping>
<filter-name>ExpiresFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>

【语法介绍】

<init-param>
<param-name>ExpiresDefault</param-name>
<param-value><base> [plus] {<num> <type>}*</param-value>
</init-param> <init-param>
<param-name>ExpiresByType type</param-name>
<param-value><base> [plus] {<num> <type>}*</param-value>
</init-param> <init-param>
<param-name>ExpiresByType type;encoding</param-name>
<param-value><base> [plus] {<num> <type>}*</param-value>
</init-param>

base可以设置为:

  • access 访问时间。
  • now (equivalent to 'access') 当前时间,相当于访问时间。
  • modification 文件的最后修改时间。

plus的值是可选的,可以不填,没什么意义。

num必须是一个integer。

type的值可以设置为:不一一解释了一看就明白了。

  • years
  • months
  • weeks
  • days
  • hours
  • minutes
  • seconds

下面的例子设置所有的MIME类型的输出被客户端缓存一个月,即缓存过期时间为一个月。ExpiresDefault代表所有的MIME类型 比如 text/plain image/png application/javascript等等。

<init-param>
<param-name>ExpiresDefault</param-name>
<param-value>access plus 1 month</param-value>
</init-param> <init-param>
<param-name>ExpiresDefault</param-name>
<param-value>access plus 4 weeks</param-value>
</init-param> <init-param>
<param-name>ExpiresDefault</param-name>
<param-value>access plus 30 days</param-value>
</init-param>

过期时间还可以使用子句进行调整,例如:

<init-param>
<param-name>ExpiresByType text/html</param-name>
<param-value>access plus 1 month 15 days 2 hours</param-value> //缓存到期时间设置为当前时间 加上 1个月 15天 2小时
</init-param> <init-param>
<param-name>ExpiresByType image/gif</param-name>
<param-value>modification plus 5 hours 3 minutes</param-value> //缓存到期时间设置为文件的修改时间 加上 5小时 3分钟
</init-param>

【什么样的情况response会被设置缓存头】

1、no expiration header is defined (Expires header or the max-age directive of the Cache-Control header)

也就是说这俩个响应头没有被定义情况过滤器才会设置,如果我们已经设置了该响应头,那么就不会再重复设置了。

2、the response status code is not excluded by the directive ExpiresExcludedResponseStatusCodes

response的status没有包含在ExpiresExcludedResponseStatusCodes这个属性的配置当中。

这个属性可以在web.xml当中配置过滤器当中配置,定义哪些状态吗不需要设置缓存头,默认304的时候就不会被设置。

3、根据ExpiresByType 指定的 Content-Type 或者 使用了ExpiresDefault

Tomcat性能优化(二) ExpiresFilter设置浏览器缓存的更多相关文章

  1. Tomcat性能优化(二) 启动参数设置

    一.tomcat绿色版设置方法 进入tomcat/bin目录下,找到catalina.bat文件在文件首行中插入下面这段配置即可. set JAVA_OPTS=-server -Djava.awt.h ...

  2. Tomcat性能优化之(一) 启动GZIP压缩

    Tomcat性能优化之(一) 启动GZIP压缩 1:设置TOMCAT启用GZIP压缩,通过浏览器HTTP访问对应的资源会根据配置进行压缩. <Connector port="8080& ...

  3. MySQL性能优化(二):优化数据库的设计

    原文:MySQL性能优化(二):优化数据库的设计 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.n ...

  4. tomcat性能优化梳理

    tomcat性能优化 Tomcat本身优化 Tomcat内存优化 启动时告诉JVM我要一块大内存(调优内存是最直接的方式) 我们可以在 tomcat 的启动脚本 catalina.sh 中设置 jav ...

  5. tomcat 性能优化

    tomcat 性能优化tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. tomcat内存优化linux修改TOMCAT_HOME/bin/ ...

  6. Apache性能优化、超时设置,linux 重启apache

    在httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.php生效.其中调节以下参数Timeout 15 (连接超时 ...

  7. EMW 性能优化二之---并发配置

    EMW 性能优化二之---并发配置 在前一个日志中写到交货的异步更新,对于RFUI RF的前台操作会提升效率,异步更新不用等待更新状态的返回,启用更新队列的方式执行(SM13). 下面再补全性能相关的 ...

  8. Tomcat性能优化(转载)

    出处:微信订阅号GitChat精品课程 — Tomcat性能优化 Tomcat 简单介绍 Sun 公司创建了第一个 Servlet 容器,即 Java Web Server,但 JWS 只是为了演示 ...

  9. tomcat 性能优化(内存优化 线程优化)

    转自:http://blog.sina.com.cn/s/blog_4b5bc01101014s81.html tomcat 性能优化 linux修改TOMCAT_HOME/bin/catalina. ...

随机推荐

  1. 跟我学SharePoint 2013视频培训课程——探索默认的列表和库(6)

    课程简介 第6天,探索默认的列表和库. 视频 SharePoint 2013 交流群 41032413

  2. SharePoint自动化部署,利用SPSD工具包

    目录 怎样使用SPSD 配置Environment XML文件 PowerShell激活Feature  上篇博客讲了利用PowerShell导出.导入AD中的Users.这篇介绍简单介绍一下SPSD ...

  3. 两种方法实现js页面隔几秒后跳转,及区别

    这里需要用到window的两个对象方法,setInterval()和setTimeout() 一. 区别: 1.  setInterval(code,millisec)  周期性(millisec单位 ...

  4. Java 8 – Filter a Map examples

    Java 8 – Filter a Map examplesFew Java examples to show you how to filter a Map with Java 8 stream A ...

  5. js 社会主义点击事件

    index.js 效果演示地址: https://www.purecss.cn/ (function() { var coreSocialistValues = ["富强", &q ...

  6. Knockout与Require框架同时使用时的visible绑定的问题,造成的影响,以及解决的方法。

    Knockout 可以将 visible 绑定到DOM 元素上,使得该元素的hidden 或visible 状态取决于绑定的值. 查看以下knockout的描述,http://knockoutjs.c ...

  7. VS2005快捷键大全

    快捷键功能 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图 ...

  8. XMPP 安装ejabberd 搭建服务器环境

    网上各种找..各种安装失败.. 终于.... ejabberd 下载列表.... http://www.process-one.net/en/ejabberd/archive/  建议下载old 版本 ...

  9. JSTL标签之&lt;c:choose&gt;&lt;c:when&gt;&lt;c:otherwise&gt;标签

    假设是JSTL1.1版本号,使用<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" ...

  10. [LeetCode] Meeting Rooms I & II

    Meeting Rooms Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s ...