2009-06-29 95 views
0

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

非常坦率地说,我并不完全熟悉JBoss如何部署这些EAR文件并“服务”它们。我想要做的事情的要点是预压缩战争中包含的文件,以便在请求时将它们发送回客户端,并使用gzip进行Content-Encoding。

回答

0

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

0

从理论上讲,你可以在将它们压缩到EAR之前压缩它们,然后用一个自定义控制器为它们提供服务,该控制器将http头添加到响应中,告诉客户端它们被压缩,但似乎很多努力去。

当你说即时压缩是非常昂贵的,你真的测量过它吗?您是否尝试请求大量未压缩的页面,测量了cpu使用情况,然后再将其与压缩页面绑定在一起?我想你可能会高估估计的影响。它使用相当低强度的流压缩,旨在使用很少的CPU资源。

您需要非常确定在达到这样的长度以减轻它的影响之前,您有真正的性能问题。

+1

我只听说过我们收到高流量,似乎没有必要每次压缩相同的文件。我认为会有一种服务预压缩内容的简单方法,但如果按照您的说法,我将测量压缩的影响以及调查修改响应标题的困难。 我对使用“昂贵”一词表示歉意,“低效/浪费”会更好地描述我的性格。 – ipwnponies 2009-07-02 16:21:23