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

问题一

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

1.创建原始文件

2.设置

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

<Connector port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort=""
compression="on"
compressionMinSize=""
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="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort=""
compression="on"
compressionMinSize=""
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

tomcat设置gzip的更多相关文章

  1. 提升网站性能之设置gzip

    tomcat如何设置gzip: http://www.tuicool.com/articles/aMRRFre http://blog.csdn.net/xuefeng0707/article/det ...

  2. Eclipse下Tomcat设置

    1,Eclipse建立Tomcat服务 1.1 新建Server 首先这里是指,jee版的Eclipse.Eclipse是没有像MyEclipse那样集成Tomcat的,需要我们自己设置. New - ...

  3. Tomcat设置默认启动项目及Java Web工程设置默认启动页面

    Tomcat设置默认启动项目 Tomcat设置默认启动项目,顾名思义,就是让可以在浏览器的地址栏中输入ip:8080,就能访问到我们的项目.具体操作如下: 1.打开tomcat的安装根目录,找到Tom ...

  4. Linux tomcat设置ip地址直接访问,tomcat设置ip地址直接访问,tomcat绑定ip地址

    Linux tomcat设置ip地址直接访问,tomcat设置ip地址直接访问,tomcat绑定ip地址 >>>>>>>>>>>> ...

  5. tomcat设置默认启动项

     Tomcat设置默认启动项目 Tomcat设置默认启动项目,顾名思义,就是让可以在浏览器的地址栏中输入ip:8080,就能访问到我们的项目.具体操作如下:     1.打开tomcat的安装根目 ...

  6. eclipse及tomcat设置编码

    新装的eclipse新导入项目会乱码,解决办法: 右击项目选properties,找到resources选择utf-8 改后乱码解决 乱码解决后可能还会有红叉,project clean即可 一劳永逸 ...

  7. tomcat设置开机自启动和后台运行

    前言:当浏览器页面显示不出来的时候,重启装在服务器上的tomcat可以正常使用,是通过进入tomcat的bin目录,双击startup.bat运行启动的程序,这时会弹出启动窗口(tomcat的运行日志 ...

  8. 将Tomcat设置为自动启动的服务最快捷方法

    将Tomcat设置为自动启动的服务: 最近遇到了个问题,服务器上的项目突然访问不了,就上服务器去重启了tomcat服务,谁知道到最后tomcat的服务报错了,重新启动服务的选项 也没有,之前这个项目也 ...

  9. 将Tomcat设置为windows自动启动的服务

    一般情况下Tomcat服务需要手动运行批命令启动服务.在windows操作系统下如果需要将Tomcat变成自动启动的服务,只需按以下步骤操作即可: 方法/步骤 将Tomcat设置成服务(假设我们缺省的 ...

随机推荐

  1. C# UTF-8文件带BOM和不带BOM文件的转换

    读取INI文件使用的是GetPrivateProfileString方法,自己读写ini文件没有问题. 调用C++的API对同一个ini文件进行处理后,发现首个Section的值读不出来:发现是API ...

  2. 最全的ADB命令行大全(转)

    基本用法 命令语法 adb 命令的基本语法如下: adb [-d|-e|-s ] 如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s ] 这一部分,直接使用 adb . 为命令指定目标设备 ...

  3. C#避免WinForm窗体假死

    WinForm窗体在使用过程中如果因为程序等待时间太久而导致窗体本身假死无法控制,会严重影响用户的体验,这种情况大多是UI线程被耗时长的代码操作占用所致,可以新开一个线程用来完成耗时长的操作,然后再将 ...

  4. node.js 接口调用示例

    测试用例git地址(node.js部分):https://github.com/wuyongxian20/node-api.git 项目架构如下: controllers: 文件夹下为接口文件 log ...

  5. [LeetCode] 1029. 两地调度 ☆(贪心)

    官方题解 作差排序 描述 公司计划面试 2N 人.第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]. 返回将每个人都飞到某座城市的最低费用,要求每个 ...

  6. centos7创建共享文件夹

    0.检查是否已经安装samba rpm -qi samba 1.未安装,安装samba, 如果已安装,请忽略: yum -y install samba samba-client 2.共享一个目录,使 ...

  7. Oracle存储过程、函数、包加密wrap

    wrap加密可以将PL/SQL的代码实现部分隐藏,提高代码的安全性,如存储过程.函数.包等都隐藏. wrap加密的方法有两种,下面以函数为例分别介绍一下: 方法一: 编写好函数后保存到 d:\test ...

  8. 运维开发笔记整理-QueryDict对象

    运维开发笔记整理-QueryDict对象 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 客户端发送数据请求有很多种,相信运维人员已经很清楚了,如果不太清楚的话可以参考我之前的学习笔 ...

  9. 2星|项立刚《5G时代》:资料堆砌和一些假想设想,信息浓度太低

    “ 这是一本关于5G的书,但着眼点不是要说清楚5G的技术,因为解读5G技术的图书已经有很多,我自己也不是技术专家.本书是希望探讨在一个全新的网络体系下产业的发展与改变,以及5G对社会与经济的影响.P6 ...

  10. jquery基础知识3

    1.jquery的位置信息 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...