我在客户端有很多数据,主要由大型数组组成,我需要将这些信息反馈给服务器,并能够轻松解析它。我在前端使用jQuery,在后端使用PHP(CodeIgniter)。
现在我只是使用jQuery $ .post发布一个巨大的数组。这是一个好主意还是应该使用几个较小的?
另外,我应该使用jQuery的ajax方法还是有更好的东西?
答案 0 :(得分:2)
最大帖子大小将由服务器的PHP.INI文件中的post_max_size
设置控制。默认设置为8MB,这是发布数据的大量空间。请记住,可能还有其他因素影响该限制(memory_limit
等)。
简而言之,如果你的1000个元素的大小非常小,那么使用jQuery的常规帖子可能是一个合适的方法。
答案 1 :(得分:1)
如果您可以将所有数据合并到一个帖子中,那肯定是要走的路。浏览器,尤其是IE(gag),当你同时向同一台服务器发送过多的同时XHRequests时,它们会窒息。一次太多通常意味着超过2个。
基本上,将数据发送到服务器的最佳做法可归纳为:“在尽可能少的请求中尽可能少”。你如何构建数据取决于你。
如果您真的通过jQuery发送了很多内容,请考虑使用jsend(一个jQuery插件进行压缩,使用PHP副本进行解压缩)来压缩它。
答案 2 :(得分:1)
也许您可以在将数据发送到服务器之前尝试对其进行压缩。 看看这个主题:JavaScript implementation of Gzip
答案 3 :(得分:0)
Darin在这里回答了类似的问题:Sending large data to server
使用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建议序列化数据并分成块:Sending a large parametrized data set as a GET request
答案 4 :(得分: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});