【问题标题】:JSP gzip output streamJSP gzip 输出流
【发布时间】:2011-06-17 03:42:08
【问题描述】:

我知道我可以使用类似的东西 gzip 输出流..


OutputStream outA = response.getOutputStream();
outWriter = new PrintWriter(new GZIPOutputStream(outA), false);      
response.setHeader("Content-Encoding", "gzip");
outWriter.println(.....);
outWriter.close();

在 JSP 中,但是否可以写成:

输出流 outA = response.getOutputStream(); outWriter = new PrintWriter(new GZIPOutputStream(outA), false); response.setHeader("内容编码", "gzip"); %> ...

我知道这是在 PHP 中完成的,例如通过在刷新输出缓冲区之前捕获输出缓冲区,压缩缓冲区,然后最后写入它。

但是在 JSP 中可能吗?

【问题讨论】:

    标签: java jsp jboss gzip outputstream


    【解决方案1】:

    此 Java 代码不属于 JSP。

    如果您的意图是压缩 JSP 生成的 HTML 代码,那么您需要在应用服务器级别对其进行配置。在JBoss(和Tomcat)中,您需要将/server.xml<Connector> 元素的compression 属性设置为on

    <Connector compression="on">
    

    就是这样。默认情况下,它将应用于所有 text/* 响应 (HTML/CSS/JS)。

    另见:

    【讨论】:

    • 嗯,我只是尝试更改 jbossweb.sar/server.xml 中的 http 连接器(我假设是等效的),到目前为止它似乎工作正常!
    • 不客气。事实上,它在 JBoss 上的工作方式相同,因为它的 servletcontainer 部分基本上是 Tomcat 的一个稍微修改的分支。如有必要,您可以随时更改 compressableMimeTypes,而不仅仅是 text/*,例如 application/json,它本质上也是基于文本的响应。
    • 感谢您的提示,您的博客文章的链接也很有帮助
    • +1 非常感谢。这是一个快速修复和质量信息。但是,当我无权访问服务器文件时,我能做些什么来压缩我的内容吗?在我的本地主机上,这个选项很棒,但是当我把我的网站带到一个 godaddy 共享 VPS 时,我将无法访问 server.xml 文件。有什么我可以做的指示吗?
    • @gmu:您可以为此使用 servlet 过滤器。我维护的 JSF 实用程序库 OmniFaces 也有这样一个过滤器,它也可以在“普通”JSP/Servlet webapps 上重用,甚至可以与 JSF 以外的其他框架结合使用:showcase.omnifaces.org/filters/GzipResponseFilter 此问题中列出了其他过滤器@ 987654324@
    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多