2

我希望提高我的应用程序的前端性能,所以我在 Firefox 中使用了 YSlow 工具。当我为我的应用程序运行此工具时,在 YSlow 等级选项卡中,它显示了一个问题“使用 gzip 压缩组件的等级 F”。似乎是我们需要在从服务器发送到客户端时压缩文件(js,css)以增加服务器响应时间。

我的应用程序是一个 Struts Java 应用程序。谁能让我知道如何从服务器压缩和发送前端 UI 文件(JS、CSS),以便响应时间增加并且我的页面快速很多?在服务器上用 Java 压缩这些文件需要做什么?

4

5 回答 5

6

我建议使用Servlet 过滤器(从 servlet 2.3 规范开始)

gzip 过滤器有据可查,因此无需重新发明轮子:

此外,一些 servlet 容器可以即时执行 gzip。看看这个相关的问题

于 2010-03-02T10:38:14.880 回答
2

为了提高 Java EE Web 应用程序的客户端性能,WebUtilities java 库会很有帮助。

这是链接:: https://github.com/rpatil26/webutilities

它也可以通过 maven central 获得

从 0.0.4 版开始,它有助于遵循性能实践。

  1. 最小化 HTTP 请求 - 可以在一个请求中提供多个 JS/CSS 文件
  2. 客户端缓存 - 添加适当的 Cache-Control、Expires 标头
  3. 动态 JS/CSS 缩小 - 使用 YUICompressor
  4. 压缩 - 支持 gzip/deflate/compress 编码的 2way 压缩
  5. 服务器上的响应缓存 - 避免重新处理未更改的资源
  6. 添加字符编码 - 让浏览器提前知道
于 2011-03-31T12:48:51.247 回答
1

我建议使用http://code.google.com/p/granule/的 Granule Tag lib

它 gzip 并结合由 g:compress 标签包裹的 j​​avascript

代码示例是:

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

于 2011-04-03T21:08:41.740 回答
0

你确定你是在尝试压缩 JS 和 CSS 而不是缩小它吗?通常 JS 和 CSS 在第一次访问后由浏览器缓存,前提是您的缓存标头由您的 Web 服务器正确设置。在实践中,我发现缩小 JS 和 CSS 通常足以满足浏览器的初始下载。

有许多 JS 缩小器。例如一个位于此处

于 2010-03-27T04:08:11.623 回答
0

您通常在 appserver/servletcontainer 级别对其进行配置。我不知道你用的是哪一个,所以这里只是一个针对Tomcat的例子。在/conf/server.xml配置<Connector>组件中如下:

<Connector compression="on">

就这样。只需添加compression="on". 其他服务器提供了类似的设置。有关详细信息,请参阅其文档。通常情况完全相同,因为它们是建立在 Tomcat 之上的。

有关 Java EE Web 应用程序透视图中的更多 YSlow 提示,您可能会发现这篇博客文章更有用。

于 2010-03-02T14:18:00.813 回答