翔子 发表于 2012-7-3 16:22:52

Tomcat配置优化

1. 设置Java启动参数:
编辑bin/catalina.sh加上如下脚本:
JAVA_OPTS='-Xms512m -Xmx1024m'
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=64M -XX:MaxPermSize=256m"

其中 JAVA_OPTS='-Xms512m -Xmx1024m' 是设置Tomcat使用的内存的大小.
-XX:PermSize=64M -XX:MaxPermSize=256m 指定类空间(用于加载类)的内存大小
详细说明参看Java的Heap空间设置.

2.给特定MIME类型文件设置Gzip压缩:
conf/server.xml增加如下配置:<Connector port="8080" protocol="HTTP/1.1"maxHttpHeaderSize="8192"   
                maxThreads="150" minSpareThreads="4" maxSpareThreads="50"   
                enableLookups="false" redirectPort="8443" acceptCount="100"   
                connectionTimeout="30000" disableUploadTimeout="true" URIEncoding="utf-8"   
                compression="on"   
                compressionMinSize="2048"   
                noCompressionUserAgents="gozilla, traviata"   
                compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"/>      
               
    <!-- Note : To use gzip compression you could set the following properties :   
      
      compression="on"   
      compressionMinSize="2048"   
      noCompressionUserAgents="gozilla, traviata"   
      compressableMimeType="text/html,text/xml"   
   -->   具体参数说明如下:
1) compression="on" 打开压缩功能
2) compressionMinSize="2048" 启用压缩的输出内容大小,这里面默认为2KB
3) noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩
4) compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 压缩文件MIME类型

3.设置cache-control的Filter:
Java Filter代码:public class ResponseHeaderFilter implements Filter {   
    FilterConfig fc;   

    public void doFilter(ServletRequest req, ServletResponse res,   
            FilterChain chain) throws IOException, ServletException {   
      HttpServletResponse response = (HttpServletResponse) res;   
      // set the provided HTTP response parameters   
      for (Enumeration e = fc.getInitParameterNames(); e.hasMoreElements();) {   
            String headerName = (String) e.nextElement();   
            response.addHeader(headerName, fc.getInitParameter(headerName));   
      }   
      // pass the request/response on   
      chain.doFilter(req, response);   
    }   

    public void init(FilterConfig filterConfig) {   
      this.fc = filterConfig;   
    }   

    public void destroy() {   
      this.fc = null;   
    }   

}web.xml配置:<filter>
      <filter-name>NoCache</filter-name>
      <filter-class>apis.server.common.util.ResponseHeaderFilter</filter-class>
      <init-param>
            <param-name>Cache-Control</param-name>
            <param-value>no-cache, must-revalidate</param-value>
      </init-param>
    </filter>
    <filter>
      <filter-name>CacheForWeek</filter-name>
      <filter-class>apis.server.common.util.ResponseHeaderFilter</filter-class>
      <init-param>
            <param-name>Cache-Control</param-name>
            <param-value>max-age=604800, public</param-value>
      </init-param>
    </filter>

<filter-mapping>
      <filter-name>NoCache</filter-name>
      <url-pattern>*.do</url-pattern>
    </filter-mapping>
    <filter-mapping>
      <filter-name>CacheForWeek</filter-name>
      <url-pattern>/images/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
      <filter-name>CacheForWeek</filter-name>
      <url-pattern>/img/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
      <filter-name>CacheForWeek</filter-name>
      <url-pattern>/icons/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
      <filter-name>CacheForWeek</filter-name>
      <url-pattern>/ext/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
      <filter-name>CacheForWeek</filter-name>
      <url-pattern>*.js</url-pattern>
    </filter-mapping>
    <filter-mapping>
      <filter-name>CacheForWeek</filter-name>
      <url-pattern>*.css</url-pattern>
    </filter-mapping>   
页: [1]
查看完整版本: Tomcat配置优化