zoukankan      html  css  js  c++  java
  • tomcat设置gzip

    使用tomcat发布3dtiles或terrain数据遇到的gzip问题

    问题一

    对大于1KB小于48KB的json请求进行gzip压缩,json为原文件(对于大于48KB使用sendfile)

    1.创建原始文件

    2.设置

    在apache-tomcat-8.5.9/conf/server.xml文件中,修改节点如下:

    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="200000"
                   redirectPort="8443"
                   compression="on"
                   compressionMinSize="1024"
                   compressableMimeType="application/json"
    />

    3.参数说明

    compression="on" 开启压缩

    compressionMinSize="1024"大于1KB的文件才进行压缩

    compressableMimeType="application/json",多个类型用","分隔,MIME类型(Content-Type)列表,例如:application/json。

    useSendfile属性默认为true,当数据大小达到48kb时,将启用文件传输(sendfile),所以我们想要压缩超过48kb的数据时必须将useSendfile设置为false。(有同学按照我的博客设置,是因为文件大于48KB并且没有关闭sendfile)

    4.确定MIME类型

    方法一:MIM在apache-tomcat-8.5.9/conf/web.xml有一个设置列表,可以将对应文件后缀名添加MIME类型,

    例如:下面配置将请求json后缀名文件的url都添加Content-Type=application/json

    <mime-mapping>
            <extension>json</extension>
            <mime-type>application/json</mime-type>
        </mime-mapping>

    方法二:

     若是不想找文件后缀名与MIME类型的对应关系,直接查看请求即可

    5.确定是否gzip压缩

    在浏览器输入http://localhost:8080/test-gzip/tileset.json

    5.1在response headers里有Content-Encoding:gzip(告诉浏览器需要gzip解压),只要有这个head就意味着tomcat设置的gzip压缩生效了

    5.2查看文件内容,用于判断是否gzip压缩是错误的,例如下图

    上图数据和原始数据一样,可能会误以为获取到的json没有用gzip压缩,其实是浏览器已经解压过数据,所以你看到的数据与原始数据是一样的。

    可以通过比较文件大小判断是否gzip压缩

    问题二

    对大于1KB小于48KB的.terrain后缀文件请求,进行gzip压缩。

    1.设置

    1.1在apache-tomcat-8.5.9/conf/web.xml,增加映射关系

    <mime-mapping>
            <extension>terrain</extension>
            <mime-type>application/octet-stream</mime-type>
    </mime-mapping>

    1.2在apache-tomcat-8.5.9/conf/server.xml文件中,修改节点如下:

    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="200000"
                   redirectPort="8443"
                   compression="on"
                   compressionMinSize="1024"
                   compressableMimeType="application/octet-stream"/>

    2.测试

    在浏览器输入http://localhost:8080/test-gzip/0.terrain

    延申:

    使用cesiumlab生成已经经过gzip压缩过的地形,就没办法通过设置tomcat的gzip了,因为tomcat会再次压缩一次(相当于压缩两次)。只能设置response headers标识

    例如java代码里加入

    response.setHeader("Content-Encoding", "gzip");

    例如加过滤器(已经验证过)

    https://www.jianshu.com/p/5cc7d87c19f0

  • 相关阅读:
    c语言命名规则 [转载]
    [转贴]C编译过程概述
    [转贴]漫谈C语言及如何学习C语言
    Semaphore源码分析
    如何快速转行大数据
    web前端到底怎么学?
    Code Review怎样做好
    SDK与API的理解
    分析消费者大数据
    程序员的搞笑段子
  • 原文地址:https://www.cnblogs.com/SmilingEye/p/11734528.html
Copyright © 2011-2022 走看看