0

是否可以发送包含在 EARfile 中的预压缩文件?更具体地说,是 WAR 文件中的 jsp 和 js 文件。我使用 Apache HTTP 作为 Web 服务器,虽然打开 deflate 模块并将其设置为使用文件的预压缩版本很简单,但我想将其应用于 EAR 文件中包含的文件部署到 JBoss。原因是内容是相当静态的并且每次都在运行中压缩它在 CPU 时间方面非常昂贵。

坦率地说,我并不完全熟悉 JBoss 如何部署这些 EAR 文件并“提供”它们。我想要做的要点是预压缩包含在战争中的文件,以便在请求它们时使用 gzip 将它们发送回客户端进行内容编码。

4

2 回答 2

0

理论上,您可以在将它们打包到 EAR 之前对其进行压缩,然后使用自定义控制器为它们提供服务,该控制器将 http 标头添加到告诉客户端它们已压缩的响应中,但这似乎需要付出很多努力至。

当您说动态压缩的成本很高时,您实际测量过吗?您是否尝试过请求大量未压缩页面,测量 CPU 使用率,然后再次与压缩页面绑定?我认为你可能高估了影响。它使用相当低强度的流压缩,旨在使用很少的 CPU 资源。

你需要非常确定你有一个真正的性能问题,然后再去缓解它。

于 2009-07-01T07:42:21.010 回答
0

我不经常光顾这个网站,而且我似乎把这个帖子挂了。对于那个很抱歉。我确实成功地压缩了我的 javascript 和 css 文件。我所做的是在 ant 构建过程中使用 gzip 预压缩它们。然后我不得不欺骗名称以摆脱 gzip 扩展。所以我有 foo.js 并将其压缩成 foo.js.gzip。我将此 foo.js.gzip 重命名为 foo.js,这是打包到 WAR 文件中的文件。这样就可以处理预压缩部分。为了正确地提供这个文件,我们只需要通过 http 响应的内容编码头告诉浏览器这个文件是压缩的。这是通过一个输出过滤器完成的,该过滤器应用于与 *.js 扩展名匹配的文件(一些 Java/JBoss、WEB-INF/web.xml,如果有帮助的话。我对此不太熟悉,对不起各位)。

于 2009-08-27T21:25:14.120 回答