性能主题

使用缓存和压缩提升Java Web应用性能

  使用缓存和压缩提升Java Web应用性能源码下载

这是使用GZip压缩和HTTP 缓存加速Web应用的案例。

HTTP压缩是一种压缩传输内容,这样从服务器到浏览器的HTTP响应大小提高。这种基于标准内置到HTTP/1.1的方法提供了内容的压缩,所有现代的Web浏览器都支持HTTP/1.1协议,在客户端的浏览器会自动解码压缩文件。您的信息的尺寸越小,它速度越快地被发送,在用户的屏幕上显示得也会更快。

Gzip已是最流行和最有效的压缩方法,gzip压缩一般减少约70%响应的大小。

在web.xml配置:

<filter>
<filter-name>GZIPFilter</filter-name>
<filter-class>com.opcat.gzip.GZIPFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>GZIPFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>]]>

注意,如果你的Web前端有Nginx等已经打开了zip压缩,这一步就没有必要,压缩两次浪费CPU。当然如果Nginx和Web应用服务器在两台,之间需要网络,这一步是有必要的,同时关闭Nginx对来自Web服务器的压缩。

Http缓存将减少HTTP请求,从而使得网页的速度更快。 Web应用程序生成很多不同场景下的浏览器内容,你可以缓存响应内容,以便重复使用,实现缓存只写简单的缓存过滤器:

在web.xml中加入:

<filter>
<filter-name>jsCache</filter-name>
<filter-class>com.opcat.cache.CacheFilter</filter-class>
<init-param>
<param-name>private</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>expirationTime</param-name>
<!-- Change this to add the expiry time for re-validating the files -->
<param-value>0</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jsCache</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>

Http缓存主要体现在浏览器本地缓存和代理服务器缓存以及网关缓存,Http缓存主要通过Http协议中expries 告诉浏览器或网关,这个Http中内容失效日期是多少,Etag也是另外一种缓存。

Http缓存Last-Modified、ETag和Expires的Java终结解决之道