web平台大数据请求传输性能处理
在XMLHttpRequest请求中使用ArrayBuffer方式,和后端服务器进行二进制的传输交互。
在项目中发现随着用户增长,部分前端功能,请求的数据量越来越大,传统的josn的方式,在下载、序列化时非常慢,因此尝试使用二进制+压缩的方式提升性能。
服务端Java代码:
实体类:
public class ByteTest implements Serializable{ private static final long serialVersionUID = 4073873126215417736L;
private long id;
private String name;
private String desc;
private double lon;
private double lat; public ByteTest(long id, String name, String desc, double lon, double lat) {
this.id = id;
this.name = name;
this.desc = desc;
this.lon = lon;
this.lat = lat;
} public long getId() {
return id;
} public void setId(long id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getDesc() {
return desc;
} public void setDesc(String desc) {
this.desc = desc;
} public double getLon() {
return lon;
} public void setLon(double lon) {
this.lon = lon;
} public double getLat() {
return lat;
} public void setLat(double lat) {
this.lat = lat;
}
} 控制层:
@RestController
@RequestMapping("/test")
public class TestController { @GetMapping("/testByte")
public byte[] testByte() throws Exception{
ByteTest model = new ByteTest(1001,"保安室","abc",133.123456789,22.123456789);
byte[] content=JSON.toJSONString(model).getBytes("utf-8");
// return content; byte[] result = new byte[]{};
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream(content.length);
GZIPOutputStream gzipOS = new GZIPOutputStream(bos);
gzipOS.write(content);
gzipOS.close();
result = bos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}
客户端JS代码:
<script src="js/pako.min.js"></script> <!--引用解压用的pako.mini.js -->
<script type="text/javascript">
var oReq = new XMLHttpRequest();
oReq.onload = function(e) {
var responseArray = new Uint8Array(this.response);
var responseString = new TextDecoder().decode(pako.ungzip(responseArray));
}
oReq.open("GET", "http://dev.xx.com:8080/test/testByte", true);
oReq.responseType = "arraybuffer";
oReq.send();
</script>
web平台大数据请求传输性能处理的更多相关文章
- 解决WCF大数据量传输 ,System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接
开发中所用的数据需要通过WCF进行数据传输,结果就遇到了WCF大量传输问题 也就是提示System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接 网上解决 ...
- 大数据量传输时配置WCF的注意事项
原文:大数据量传输时配置WCF的注意事项 WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMe ...
- WCF大数据量传输解决方案
文章内容列表:1. 场景:2. 解决方案3. WCF契约与服务实现设计静态图4. WCF契约与服务实现设计详细说明6. 服务端启动服务代码:7. 客户端代码8. WCF大数据量传输解决方案源码下载 ...
- EF大数据批量添加性能问题(续)
昨天在园子里发了一篇如题的文章EF大数据批量添加性能问题,就引来一大堆的吐槽,我认为知识就应该这样分享出来,不然总以为自己很了不起:再说说昨天那篇文章,很多自认为很牛逼的人都评论说把SaveChang ...
- 【转载】大数据量传输时配置WCF的注意事项
WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMessageSize:获取或设置配置了此绑定 ...
- WCF大数据量传输配置
WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMessageSize:获取或设置配置了此绑定 ...
- 【大数据】Spark性能优化和故障处理
第一章 Spark 性能调优 1.1 常规性能调优 1.1.1 常规性能调优一:最优资源配置 Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的, ...
- 《阿里如何实现秒级百万TPS?搜索离线大数据平台大数据平台架构解读》读后感
在使用淘宝时发现搜索框很神奇,它可以将将我们想要的商品全部查询出来,但是我们并感觉不到数据库查询的过程,速度很快.通过阅读这篇文章让我知道了搜索框背后包含着很多技术,对我以后的学习可能很有借鉴. 平时 ...
- IIS大数据请求设置方法
大并发大数据量请求一般会分为几种情况: 1.大量的用户同时对系统的不同功能页面进行查找,更新操作 2.大量的用户同时对系统的同一个页面,同一个表的大数据量进行查询操作 3.大量的用户同时对系统的同一个 ...
随机推荐
- package.json文件说明解释
1.package.json是什么? 什么是Node.js的模块(Module)?在Node.js中,模块是一个库或框架,也是一个Node.js项目.Node.js项目遵循模块化的架构,当我们创建了一 ...
- P4556 雨天的尾巴 线段树合并
使用线段树合并,每个节点维护一棵权值线段树,下标为救济粮种类,区间维护数量最多的救济粮编号(下标).所以每个节点答案即为\(tre[rot[x]]\). 然后运用树上点的差分思想,对于分发路径\(u, ...
- 【IOI2019】2048矩形模拟
/* dos windows 25*80 */ #include <algorithm> #include <windows.h> #include <iostream& ...
- iptables防火墙--------基本操作
查看规则 查看filter表中的规则 $ iptables -t filter -L 使用-t选项,指定要操作的表.使用-L 选项,查看-t选项对应表的规则,-L 选项的意思是,列出规则. ps : ...
- P3688 [ZJOI2017] 树状数组 【二维线段树】
题目描述:这里有一个写挂的树状数组: 有两种共\(m\)个操作: 输入\(l,r\),在\([l,r]\)中随机选择一个整数\(x\)执行\(\text{Add}(x)\) 输入\(l,r\),询问执 ...
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory'
spring整合mybatis的时候,传统dao模式test报错 发现是在pojo类user对应的user.xml中配置路径写错了 org.springframework.beans.factory. ...
- Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2)
A - Forgetting Things 题意:给 \(a,b\) 两个数字的开头数字(1~9),求使得等式 \(a=b-1\) 成立的一组 \(a,b\) ,无解输出-1. 题解:很显然只有 \( ...
- 去掉 webstorm 灰色的数据类型提示
- Jenkins 获取 Git 的提交记录(Change Log)
工作中用 Jenkins 做 iOS 和 Android 的持续集成,之前实现的是当 git 有新代码提交的时候,就会自动编译并上传安装包到蒲公英,然后自动发送QQ群通知或者讨论组通知给相关小伙伴,方 ...
- rethinkDB python入门
Start the server For a more detailed look, make sure to read the quickstart. $ rethinkdb Import the ...