我在客戶端有很多大部分數據由大數組組成,我需要將這些信息返回給服務器,並且能夠輕鬆解析它。我在前端使用jQuery,在後端使用PHP(CodeIgniter)。將大量客戶端數據傳遞到服務器的最佳做法是什麼?
現在我只是使用jQuery $ .post發佈一個巨大的數組。這是一個好主意,還是應該使用幾個較小的?
另外,我應該使用jQuery的ajax方法還是有比這更好的東西?
我在客戶端有很多大部分數據由大數組組成,我需要將這些信息返回給服務器,並且能夠輕鬆解析它。我在前端使用jQuery,在後端使用PHP(CodeIgniter)。將大量客戶端數據傳遞到服務器的最佳做法是什麼?
現在我只是使用jQuery $ .post發佈一個巨大的數組。這是一個好主意,還是應該使用幾個較小的?
另外,我應該使用jQuery的ajax方法還是有比這更好的東西?
如果您可以將所有數據合併爲一篇文章,那絕對是您的選擇。瀏覽器,尤其是IE瀏覽器(gag),會在您將同時發生的XH請求數量超過同一臺服務器的情況下窒息。太多的時候一般意味着超過2.
基本上,發送數據到服務器的最佳做法可以概括爲:「儘可能少的請求儘可能少」。你如何處理數據取決於你。
如果你真的通過jQuery發送很多東西,可以考慮用類似jsend(一個壓縮的jQuery插件,用PHP對應的解壓縮)壓縮它。
最大發布大小將由服務器的PHP.INI文件中的post_max_size
設置管理。默認設置是8MB,這對於發佈數據來說是很大的空間。請記住,可能有其他因素影響該限制(memory_limit
等)。
簡而言之,如果你的1000個元素的尺寸非常小,那麼使用jQuery的常規帖子可能是一個合適的方法。
達林回答類似的問題在這裏: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
});
佩卡建議序列數據和休息如果帖子不是一個選項,則分成塊:Sending a large parametrized data set as a GET request
這正是我正在做的。 –
也許你可以嘗試壓縮你的數據,然後再發送到服務器。 看看這個線程:JavaScript implementation of Gzip
您可以使用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});
多大是你的 –
它可以達到1000個元素 –