NodeJS to Client:大数据发送性能
NodeJS to Client : large data sending performance
如何将大数据从NodeJS发送到客户端?我试了这两个:1. 套接字。io请求2. Ajax GET请求但这两种方式都很慢。我正在使用mongoDB。数据大小为1,000,000+对象(1-2GB),但即使发送10,000个数据,速度也很慢。我怎样才能使它更快呢?(从MongoDB到NodeJS的数据读取时间没有问题。)
这是Socket。io代码
=> NodeJS
io.sockets.on('connection', function(socket) {
socket.on('getData', function() {
var items = TestModel.find();
items.find({},function(err,obj){
for(var i=0;i<obj.length;i++){
socket.emit('responseData', obj[i]);
}
socket.emit('complete',"Item length : ");
});
});
});});
如果我使用socket。emit('responseData', obj),我将得到一个溢出错误
=> index . html
<html>
<head>
<meta charset="utf-8"/>
<script src="/socket.io/socket.io.js"></script>
<title></title>
</head>
<body>
Socket.io Test
</body>
<script>
window.onload = function() {
var socket = io.connect();
socket.emit('getData');
var i=0;
//socket.emit('getName');
socket.on('responseData', function(data) {
i++;
});
socket.on('complete',function(data){
alert(data+i);
});
};
</script>
</html>
Ajax GET代码
=> NodeJS
app.get('/load',function(req,res){
var items = TestModel.find();
console.log("Model loaded");
items.find({},function(err, obj){
res.send(JSON.stringify(obj));
console.log("Sent Models");
});
});
Ajax =>
$(function(){
$(document).ready(function(){
$.get('/load', {}, function(data){
...
});
});});
检查和/或启用压缩,您可以获得高达10倍的增益,具体取决于数据和格式。压缩质量和服务器cpu使用之间需要权衡,一般来说,从浏览器(或客户端)支持的最佳压缩算法开始。
如果客户端在您的控制之下,您甚至可以尝试xz
或其他更奇特的东西:)
标记您的响应(https://en.wikipedia.org/wiki/HTTP_ETag)并添加钩子If-None-Match: ...
请求头字段
取决于客户端使用数据的目的,是否已保存?处理吗?显示?在许多情况下,客户端可以开始对部分数据执行操作。如果这部分是在响应的开始,流式传输它是很有意义的
并行化客户端可以使用Range: ...
请求头字段下载数据段。在这种情况下,单个客户端可以同时对给定数据集的段发出多个请求。如果客户端网络很糟糕(例如另一个大陆),这通常会有所帮助。
也许客户端可以先处理或"显示"数据的简化表示。如果客户机背后有一个人类用户,他们可能希望在做出下载决定之前快速检查您的数据。在服务器端生成缩略图或预览的图像和设计文档中非常常见。
- 函数参数中的数据与指定变量之间的任何性能差异
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 提高字典查找大量数据的性能
- 在MongoDb中将数据存储为对象与数组以提高写入性能
- AngularJS和Javascript大数据循环性能
- Canvas getImageData() 为了获得最佳性能.提取所有数据或一次提取一个数据
- Javascript图像数据到多维数组性能问题
- 使用动态生成的数据数组进行 ng 重复的性能
- 传单.js和JSON数据:优化和性能
- 查询大型 PouchDB 数据集的最高性能范围方式
- 具有深度嵌套集合的 Angular 性能和数据绑定
- 如何提高Highcharts的性能并避免排序数据出现错误15
- 数据可视化的性能和开发可能性
- 预排序数据或Angular orderBy哪个性能更好
- angularjs范围内可以存储的最大数据大小是多少?具有重作用域的应用程序的性能
- AngularJS-提高服务调用和数据绑定性能
- NodeJS to Client:大数据发送性能
- Knockout +大数据集性能
- 改进JS重复数据删除函数的性能
- dc.js / crossfilter性能问题12000 +行CSV数据