我正在浏览the deck.gl repo。它附带了一些带有文本文件的示例,例如this one。这些文件的扩展名为.txt
,但不是纯文本:
!OohmwFjqwbMg@[?ADKJYXF@^?N?FAD
=wnmwFvvwbM_@WNg@@@@C?C_@UA?AD@?Of@_@UTu@??BK?A??FUVP?@JF?AVP?@JF?AVPGTA?EL@?
=urmwF|swbM_@UFS@@BK?C@C@A@E?CIGA?GE?CIGA@CF?@ABA@CJ@@GR]Ud@wA\T?@DB?AXP?@DB?A\T
<aymwFnvwbMaAOKCA@OKPk@CCDKAADKAADKAADKAADKAAL_@fBjAIVCCEL
示例还包含JavaScript文件,看起来好像用于解码这些文件,例如this one for the file above。
这到底发生了什么?我认为这是一种减少数据大小的方法,但为什么不依靠浏览器gzipping?
当文件显然是纯文本时,为什么要使用纯文本扩展名?为什么要有自定义解码器?
答案 0 :(得分:2)
它看起来像一个自定义编码,它使用字节值来编码坐标/ GeoJSON功能。
例如,来自/dist-demo/data/building-data.txt
的这一行:
!GqgmwFrhwbM}C}@@K@IBO@IlBh@BOBMn@PHBGd@KC
使用decodePolyline()
实用程序函数解码到此数组中:
[
[0.00004,0.00001],
[40.70541,0.00002],
[40.7062,-74.01624],
[40.70619,-74.01593],
[40.70618,-74.01587],
[40.70616,-74.01582],
[40.70615,-74.01574],
[40.7056,-74.01569],
[40.70558,-74.0159],
[40.70556,-74.01582],
[40.70532,-74.01575],
[40.70527,-74.01584],
[40.70531,-74.01586],
[40.70537,-74.01605],
[40.70537,-74.01603]
]
以JSON格式显着增大。
所以我的猜测是,主要原因是能够使用仍然可移植/可缓存的较小数据文件。它仍然是基于行的明文,所以它也是不同的。
此外,这些文件仍然是可压缩的。我假设一个完整的JSON文件不仅开始时更大,而且还表现出比该文件更不利的压缩特性。对building-data.txt
的快速测试显示gzip / deflate的压缩率大约为2:1(压缩为139,089字节到72,660字节)。原始JSON中相同文件的压缩结果不会接近该位置。