【问题标题】:HTTP compression - How to send precompressed files that exist in a EAR file?HTTP 压缩 - 如何发送 EAR 文件中存在的预压缩文件?
【发布时间】:2009-06-29 23:26:04
【问题描述】:

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

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

【问题讨论】:

    标签: apache jboss http-compression


    【解决方案1】:

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

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

    在竭尽全力缓解问题之前,您需要非常确定自己确实存在性能问题。

    【讨论】:

    • 我只被告知我们收到了很高的流量,似乎没有必要每次都压缩相同的文件。我认为会有一种提供预压缩内容的简单方法,但如果如您所述,我将测量压缩的影响并调查修改响应标头的困难。我为使用“昂贵”这个词道歉,“低效/浪费”更能描述我的性格。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      相关资源
      最近更新 更多