[英]What is the best practice for passing large amounts of client side data to the server?
我在客戶端有很多數據,主要由大型數組組成,我需要將這些信息反饋給服務器並能夠輕松地解析它。 我在前端使用jQuery,在后端使用PHP(CodeIgniter)。
現在我只是使用jQuery $ .post發布一個巨大的數組。 這是一個好主意還是應該使用幾個較小的?
另外,我應該使用jQuery的ajax方法還是有比這更好的東西?
最大帖子大小將由服務器的PHP.INI文件中的post_max_size
設置控制。 默認設置為8MB,這是發布數據的大量空間。 請記住,可能還有其他因素影響該限制( memory_limit
等)。
簡而言之,如果您的1000個元素的大小非常小,那么使用jQuery的常規帖子可能是一種合適的方法。
如果您可以將所有數據合並到一個帖子中,那絕對是可行的方法。 瀏覽器,尤其是IE(gag),當你同時向同一台服務器發送過多的同時XHRequests時,它們會窒息。 一次太多通常意味着超過2個。
基本上,將數據發送到服務器的最佳實踐可以概括為:“在盡可能少的請求中盡可能少”。 您如何構建數據取決於您自己。
如果你真的通過jQuery發送了很多東西,可以考慮用jsend (一個jQuery插件來壓縮,用一個PHP對應的解壓縮)來壓縮它。
也許您可以嘗試將數據壓縮,然后再將其發送到服務器。 看看這個帖子: Gzip的JavaScript實現
您可以使用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});
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
});
如果post不是一個選項,Pekka建議序列化數據並分成塊: 將大型參數化數據集作為GET請求發送
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.