2011-06-23 9 views
0

私はMongoDBにデータを格納する分析ソリューションを開発中です。現在、私はXMLHTTPRequestオブジェクトを使用してGETメソッドを使用してPHPファイルにデータを送信するjavascriptを持っています。最も効率的なPHPへの送信JavaScript

PHPは、MongoDB上にドキュメントを作成/更新します。

これは効率的なやり方ですか?それを行うより良い方法はありますか?

私はこれをただのサイドプロジェクトにしていますが、これを最初からスケーラブルなソリューションにしたいと考えています。

+0

OK感謝。おそらく私は、クロスドメインポリシーによる正確な制限を認識していなかったので、質問を言い換えるべきであろう。その場合、あるドメインのjavascriptを使用して別のPHP/MongoDBに値を送信する最も良い方法は何ですか? – sicr

答えて

0

他の人が言っているように、ブラウザの制限のためにPOSTを使用する理由があります。しかし、私は別の合意をしたいと思います。

POSTは、HTTPメソッド定義の意味でより意味があります。 GETは安全で、システムの状態(データベース)を変更しないことになっています。これは通常、サービスでは強制されますが、HTMLフォーム処理ではそう多くはありません。

一部のメソッド(HEAD、GET、OPTIONS、TRACEなど)は安全と定義されています。つまり、情報の取得のみを目的とし、サーバーの状態を変更しないでください。言い換えれば、ロギング、キャッシング、バナー広告の提供、ウェブカウンターの増分など、比較的無害な影響を超えて、副作用を起こすべきではありません。したがって、アプリケーションの状態のコンテキストに関係なく、任意のGET要求を行うことは安全であると考えられます。

Source

追加読書:回答について

HTTP Spec - Method Definitions

1

GETはブラウザのサイズに制限がありますが、POSTは制限されています。

PHP側でそれほど変わっていません。

0

あなたが提案したものはうまくいくはずです。

他のサイトでjavascriptを使用する場合(PHPを単一のドメインに保ちながら)、クロスドメインポリシーに関する問題に遭遇します。

+1

例えば、画像を挿入することによって、他のドメインにGET呼び出しを行うことができます。応答を読み取ることはできませんが、呼び出しはサーバーにヒットします。それがアナリティクストラッカーの仕組みです。 – Mic

+0

はい、そうです。あなたは、javascriptファイルを含めることによってデータを戻すことができます。その少し難しいが、それは行うことができます。 Ajaxコールは、クロスドメインポリシーの影響を直接受けます。 – datasage

1

あなたがしているように聞こえるように、実装はうまくいくはずです。しかしIMHO、私はおそらく長いデータを送信することで問題を防ぐためにXHRを取得からポストに変更するでしょう。サーバは任意の長さのURL(クエリ文字列を含む)を処理できるはずですが、ブラウザは一般的に約2k文字までしかサポートしません。それ以上に何か問題があるでしょう。 POSTにはこの制限はありません。

関連する問題