4

クライアント側には大部分が大きな配列で構成されているデータがたくさんあり、この情報をサーバーに戻し、簡単に解析できるようにする必要があります。フロントエンドでjQueryを使用し、バックエンドでPHP(CodeIgniter)を使用しています。

現在、jQuery$.postを使用して1つの巨大な配列をPOSTしています。これは良い考えですか、それともいくつかの小さなものを使用する必要がありますか?

また、jQueryのajaxメソッドを使用する必要がありますか、それともこれよりも優れたものがありますか?

4

5 に答える 5

2

投稿の最大サイズはpost_max_size、サーバーのPHP.INIファイルの設定によって決まります。デフォルト設定は8MBで、これは投稿データ用の多くのスペースです。その制限に影響を与える他の要因(memory_limitなど)がある可能性があることに注意してください。

つまり、1000個の要素のサイズがかなり小さい場合は、jQueryを使用した通常の投稿がおそらく適切なアプローチです。

于 2011-10-14T22:37:49.013 に答える
1

サーバーに送信する前に、データをZIP化してみてください。このスレッドをチェックしてください:GzipのJavaScript実装

于 2011-10-14T22:59:10.727 に答える
1

すべてのデータを1つの投稿にまとめることができれば、それは間違いなく進むべき道です。同じサーバーへの同時XHRequestが多すぎると、ブラウザ、特にIE(gag)がチョークします。一度に多すぎると、通常は2を超えることを意味します。

基本的に、サーバーにデータを送信するためのベストプラクティスは、「可能な限り少ない要求で可能な限り少ない」と要約できます。データをどのように構成するかはあなた次第です。

本当にjQueryを介して大量に送信している場合は、jsend(圧縮するjQueryプラグイン、解凍するPHPプラグイン)のようなもので圧縮することを検討してください。

于 2011-10-14T22:43:06.337 に答える
0

ダリンはここで同様の質問に答えました:サーバーに大きなデータを送信する

GETの代わりにPOSTHTTP動詞を使用します。

$.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リクエストとして送信する

于 2011-10-14T22:42:31.120 に答える
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});
于 2013-04-18T09:33:46.037 に答える