关于ajax 返回 JSON格式传输数据量大的问题
ajax 返回JSON数据,Size数据量大,传输时间长的解决方案
问题描述
有一个接口需要一次性返回数据, json数据的Size最大的时候,有将近1M的数据量,返回时间将近20s,是可忍,孰不可忍?
这个问题,是必须要解决的,估计除了我们自己,没人愿意等上20s了
解决方案
减少SIze主要是两个方面:resources(资源) 和 transferred(传输);
首先,当然是压缩,分为2个方面
- 可压缩的字段内容,全部压缩
- 减少不必要的字段
然而,resources(资源) 和 transferred(传输) 比没有明显的改观,
不过效果还是向好的方向发展了,减少了200K左右, 有点杯水车薪的感觉, 这时候脑袋疼不?
其次,既然resources(资源)已经到了不可压缩的地步,得换个思路了,不能钻牛角尖
我们来想办法减少transferred(传输)的体积
不知道, 你有没有想过 Document (Network >> Doc) 下的文件加载的很快,SIze 也不小, 是为什么?
反正我是想了这个问题, 解决方案也是源于此处
打开Headers对比发现,这两个地方是不一样的, text 类型进行了gzip压缩, json没有压缩
Content-Encoding: gzipContent-Type: text/html; charset=UTF-8
Content-Type: application/json


解决方式
解决问题,需要善于动手的,
赶快把json文件 按照 text 类型返回试试
在服务器端, 设置 Content-Type: text/html; charset=UTF-8
果然, transferred(传输) SIze 明显减下来,约40K, 速度到了1s内了,
还有一种解决方案 设置 application/json 开启 gzip
Content-Encoding: gzip
Content-Type: application/json

总结
- 在服务器端, 设置
Content-Type: text/html; charset=UTF-8 - 在nginx 配置, 设置 application/json 开启 gzip
text/html和text/plain的区别
text 类型默认是文本, 没有格式, 默认是开启gzip压缩的;
json 类型是有格式数据, 默认不开启gzip压缩的, 有时候传输大小 > 文件大小;
text/html
浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理
text/htm 格式 到前端是 需要 反序列化 操作
text/plain
浏览器在获取到这种文件时并不会对其进行处理
text/plain 格式 到前端是不需要 反序列化 操作
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)