簡體   English   中英

將大量客戶端數據傳遞到服務器的最佳做法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM