现在主流的网络请求中都采用JSON作为其数据交互格式,这主要是因为JSON有以下优势:
数据格式简单,易于读写,格式都是压缩的,占用带宽小;
易于解析,客户端JS很容易JSON数据进行解析和编辑;
支持大多数后端语言,大大简化了服务端和前端交互时的代码开发量,且易于维护;
但如果在开发过程中,把很长很大的JSON数据在前后端传输,那就说明设计工作没做好,应该尽量避免这种数据传输,但也可以从下面几个方面进行下优化:
我们知道,JSON作为一种轻量级的数据交换格式,现在被广泛应用,特别是在API层,返回数据格式基本上都是JSON。但是,JSON字符串如果过长,那在网络传输中也存在耗时的,站在性能角度我们需要合理优化JSON。
JSON优化建议
1、服务器端开启GZip压缩
主流的服务端都支持GZip压缩,对于一般的纯文本内容GZip压缩率在35%以上,这样做的好处也很明显:
减少JSON输出大小,网络传输速度更快;
节省带宽。
作为JSON这个规范,要在大小上优化,空间很有限,所获得的收益也很低,但是也不是没有优化空间,可以从下面几个角度入手:
1.优化传输大小,打开服务器的gzip压缩即可,但会略微占用更多CPU。
2.使用更短的key,为了可读性,一般不建议这么做。
3.开启重复引用和循环引用。Java实现的一些JSON库支持重复和循环引用,可以缩小JSON文本大小。比如在传输的数据中出现相同的对象时,fastjson默认开启引用检测将相同的对象写成引用的形式.
如图所示:
1,开启gzip,压缩率很高,即便是很长的文本,在网络中传输量也很小 。
2,不建议分次请求,除非是业务需要。连接次数过多,加大了并发的压力。
3,提醒用户点击的做法可以通过按钮反馈或loading条来做。
4,如果有可能,考虑提前预读你可以这样,在一个隐藏的 iframe 里面请求服务器,返回值是这样的: <script> parent.notifyDataArrive(YOURS_JSON_DATA); </script>