传递大量客户端数据到服务器的最佳实践是什么?

4
我有很多客户端数据,主要是大型数组,我需要将这些信息传回服务器并能够轻松解析。我在前端使用jQuery,在后端使用PHP(CodeIgniter)。
目前我只是使用jQuery $.post来POST一个巨大的数组,这样做好吗?还是应该使用多个较小的数组?
此外,我应该使用jQuery的ajax方法,还是有比它更好的方法?

你的“大数组”有多大? - Cᴏʀʏ
它可以达到1000个元素。 - Dan P.
5个回答

2
最大的帖子大小将由您服务器的PHP.INI文件中的post_max_size设置控制。默认设置为8MB,这是一个非常大的空间可以用于帖子数据。请注意,可能还有其他影响该限制的因素(memory_limit等)。

简而言之,如果您的1000个元素大小相当小,则使用jQuery进行常规发布可能是足够的方法。


1

如果您可以将所有数据合并到一个帖子中,那绝对是最好的方法。浏览器,尤其是IE(呕吐),当您同时超过太多的XHRequests发送到同一服务器时,会出现问题。同时发送太多通常意味着超过2个。

基本上,向服务器发送数据的最佳实践可以总结为:“尽可能少的请求,尽可能少的数据”。如何构造数据由您决定。

如果您真的通过jQuery发送了很多数据,请考虑使用jsend之类的压缩工具(一个用于压缩的jQuery插件,带有PHP解压缩器)。


1

在将数据发送到服务器之前,您可以尝试将其压缩为ZIP格式。 请查看此线程:JavaScript实现Gzip


0

Darin在这里回答了类似的问题:将大数据发送到服务器

使用POST HTTP动词而不是GET:

$.ajax({
    url: '/foo',
    type: 'POST',
    data: { value: someVariableThatCouldBeHuge },
    success: function(result) {
        // TODO: process the results
    }
});

或者等价的:

$.post('/foo', { value: someVariableThatCouldBeHuge }, function(result) {
    // TODO: process the results
});

Pekka建议将数据序列化并分成块,如果无法使用POST请求:将大型参数数据集作为GET请求发送

这正是我正在做的。 - Dan P.

0
你可以使用FormData:
var formData = new FormData();
formData.append('filename', filename);
formData.append('data', data);
$.ajax({
    url: "FileUploadServlet",
    type: "POST",
    data: formData,
    cache: false,
    contentType: false,
    processData: false});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接