找回密码
 立即注册

QQ登录

只需一步,快速开始

cmbsjdev
金牌服务用户   /  发表于:2022-8-18 10:48  /   查看:4822  /  回复:11
1金币
spreadjs完成数据编辑后,我们需要保留整个ssjson给后端,目前发现ssjson字符串还是比较大的(xlsx文件71k,对应ssjson是2MB),问下前后端交互时推荐的压缩方法,以减少网络带宽增加响应速度。

最佳答案

查看完整内容

您好, 可以参考楼上回复, 另,这有一个压缩JSON文件示例:https://jsrun.net/AvZKp/edit 客户写的博客也可以参考:https://blog.csdn.net/qq_34735535/article/details/84066461 另外,你也可以使用脏数据的方式,只在前后端传输被修改后的脏数据,减少数据整体传输的次数。 关于脏数据,可以参考下面的链接,实际上就是只获取被修改的内容(包括插入的行,删除的行,更新的行(含有更新单元格的行),或者更新的单元格) ...

11 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-18 10:49:00
来自 3#
本帖最后由 Richard.Ma 于 2022-9-2 23:32 编辑

您好,
可以参考楼上回复,
另,这有一个压缩JSON文件示例:https://jsrun.net/AvZKp/edit
客户写的博客也可以参考:https://blog.csdn.net/qq_34735535/article/details/84066461

另外,你也可以使用脏数据的方式,只在前后端传输被修改后的脏数据,减少数据整体传输的次数。
关于脏数据,可以参考下面的链接,实际上就是只获取被修改的内容(包括插入的行,删除的行,更新的行(含有更新单元格的行),或者更新的单元格)

https://demo.grapecity.com.cn/sp ... /dirty-items/purejs



进行数据绑定也是一种比较有效的解决方案,数据绑定后,只传输修改后的数据源,而不是整个ssjson文件,可以很大程度减少传输的体积。这个也可以结合上面的脏数据概念,只传输被修改的“脏”数据行,可以进一步减少传输的数据内容

https://demo.grapecity.com.cn/sp ... evel-binding/purejs
回复 使用道具 举报
何时待我
金牌服务用户   /  发表于:2022-8-18 11:23:04
2#
我这边使用的是pako 进行压缩传输ssjson 的, 你可以试一下
回复 使用道具 举报
cmbsjdev
金牌服务用户   /  发表于:2022-8-24 15:25:18
4#
前端在使用pako.gzip(JSON.stringify(json),{to: "string"}) 转换后,后端识别不是gzip格式,大概是什么原因,参考博客的例子
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-24 18:04:08
5#
从问题描述来看该问题与SJS产品关系不大,您可以网上搜索下相关资料尝试解决此问题。
判断压缩的json文件是否为gzip格式,或者后端换一个解压缩工具,看是否可以正常解压。
这边也查询了相关内容,您可以参考下:
https://www.jianshu.com/p/8167504a6d4d
回复 使用道具 举报
cmbsjdev
金牌服务用户   /  发表于:2022-8-25 16:07:38
6#
目前有个excel文件在11M左右,导出ssjson会扩展到106M,106M文件在浏览器前端做Gzip压缩,然后传后端。这个过程中前三步在浏览器耗费相当长的时间,基本假死的状态。
以上这个场景有没有推荐的方案?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-25 16:37:20
7#
前端是有性能瓶颈的,对于大文件推荐结合后端来做,将文件的加载与公式计算放在后端通过GcExcel完成,然后将sheet toJSON传递给前端展示。
具体可以参考下方链接文章:
https://gcdn.grapecity.com.cn/fo ... hread&tid=98756
https://gcdn.grapecity.com.cn/fo ... &extra=page%3D2
https://gcdn.grapecity.com.cn/fo ... &extra=page%3D1
回复 使用道具 举报
cmbsjdev
金牌服务用户   /  发表于:2022-8-25 18:12:51
8#
首次加载excel可以通过后端做,但是最终是要在前端做编辑,然后传给后端做保存,第二次通过前端保存的时候仍然会面临这个问题。
目前是数据量比较大在10w左右,并非是公式计算导致的。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-25 18:20:05
9#
前端编辑后,可以通过脏数据等方式获取到编辑的内容,然后传递给后端,再后端进行编辑并计算,之后将计算的结果再返回前端即可。
回复 使用道具 举报
cmbsjdev
金牌服务用户   /  发表于:2022-8-25 19:11:23
10#
脏数据的方式没有理解,有示例吗
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部