使用tomcat发布3dtiles或terrain数据遇到的gzip问题
问题一
对大于1KB的json请求进行gzip压缩,json为原文件
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类型列表,例如:json为application/json。
4.确定MIME类型
方法一:MIM在apache-tomcat-8.5.9/conf/web.xml有一个设置列表,可以查看
<mime-mapping> <extension>json</extension> <mime-type>application/json</mime-type> </mime-mapping>
方法二:
5.确定是否gzip压缩
在浏览器输入http://localhost:8080/test-gzip/tileset.json
5.1在response headers里有Content-Encoding:gzip(告诉浏览器需要gzip解压)
5.2文件内容
看上去获取到的json没有用gzip压缩(其实是浏览器已经解压过,没有办法看到没有解压的文件)
没有办法从文件上来验证是否压缩与解压。
问题二
对大于1KB的.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");
例如加过滤器(还没测试过)