Compress components with gzip - Java EE

守給你的承諾、 提交于 2019-12-02 01:31:58
Guido

I recommend to use a Servlet Filter (since servlet 2.3 spec)

A gzip filter is well documented, so there is no need to reinvent the wheel:

Also, some servlet containers can do gzip on the fly. Take a look at this related question.

Rajendra

To improve client side performance of Java EE web application, WebUtilities java library can be helpful.

Here is the link :: https://github.com/rpatil26/webutilities.

It is also available through maven central.

Since version 0.0.4 it helps with following performance practices.

  1. Minimize HTTP requests - can serve multiple JS/CSS files in one request
  2. Client Side Caching - adds proper Cache-Control, Expires header
  3. On the fly JS/CSS minification - using YUICompressor
  4. Compression - supports 2way compression for gzip/deflate/compress encodings
  5. Response Caching at Server - to avoid reprocessing of unchanged resources
  6. Add Character Encoding - to let browser know in advance

I recommend to use Granule Tag lib the http://code.google.com/p/granule/

It gzip and combine javascripts wrapped by g:compress tag

code sample is:

<g:compress>
  <script type="text/javascript" src="common.js"/>
  <script type="text/javascript" src="closure/goog/base.js"/>
  <script>
       goog.require('goog.dom');
       goog.require('goog.date');
       goog.require('goog.ui.DatePicker');
  </script>
  <script type="text/javascript">
      var dp = new goog.ui.DatePicker();
      dp.render(document.getElementById('datepicker'));
  </script>
</g:compress>
...

You normally configure it at appserver/servletcontainer level. I don't know which one you're using, so here's just a Tomcat targeted example. In the /conf/server.xml configure the <Connector> component as follows:

<Connector compression="on">

That's all. Just add compression="on". The other servers provides a comparable setting. consult its documentation for details. Often it's exactly the same because they're built on top of Tomcat.

For more YSlow hints in Java EE webapplication perspective you may find this blog article more useful.

Are you sure you are trying to compress JS and CSS rather than trying to minify it? Generally JS and CSS are cached by the browser after the first visit provided your caching headers are set correctly by your web server. In practice I have found that minifying JS and CSS is usually good enough for the initial download by the browser.

There are many JS minifiers. For example one is located here.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!