私はサーバーを1秒間に数回呼び出すAJAXオンラインゲームを手に入れました。 AJAXコールは良好ですが、通常のTCP/IPソケット接続よりも遅いです。FlashでAJAXを改善することはできますか?
私の質問は、フラッシュを使用できる場合、サーバー接続用のフラッシュアプリケーションを使用してゲームを改善できますか?それとも、Firefoxのアドオンの一部の解決策がありますか(私のユーザーの70%がFirefoxを使用しています)?
私はサーバーを1秒間に数回呼び出すAJAXオンラインゲームを手に入れました。 AJAXコールは良好ですが、通常のTCP/IPソケット接続よりも遅いです。FlashでAJAXを改善することはできますか?
私の質問は、フラッシュを使用できる場合、サーバー接続用のフラッシュアプリケーションを使用してゲームを改善できますか?それとも、Firefoxのアドオンの一部の解決策がありますか(私のユーザーの70%がFirefoxを使用しています)?
XMLSocket
オブジェクトflash.external.ExternalInterface.call
がExternalInterface
経由のFlash/JS通信は非常に高速で、これはソケット応答によって提供される速度を処理できます。
こちらがお役に立てば幸いです。
この最適化を行う前に、遅い部分がjavascriptとサーバーの間のソケット接続であることを確認するために、最初にプロファイルすることが必要な場合があります。
私はサーバー側をプロファイルする傾向があり、その後私はjavascriptからサーバーに戻ってプロファイルを作成します。その違いはソケット接続によるものです。
数字があれば、十分な改善があるかどうかを確認するために、Makramが提案したような他の変更をプロファイルすることができます。
サーバーへの呼び出しは、あなたがそれを支援する彗星を使って見ることができポーリングのいくつかの並べ替えている場合:ジェームズ・ブラックが直進ジャンプしにすべてを置き換えるリッピングしていない、と述べたことと同様に http://en.wikipedia.org/wiki/Comet_%28programming%29
ボトルネックがどこにあるかを把握する前に、Flashを実行してください。ポイントはある -
私は、あなたのコミュニケーションのすべてのレイヤをレイアウトするだけで明確なものを作りたい、私はあなたにも、コメントの一部から判断すると、画像の一部が欠けかもしれないと思う
...そのすべてではありませんが、あなたは問題のあるレイヤーだけを見るほうがよいでしょう。
クライアントにFlashを切り替えると2つのメリットがあります:クライアント自体がクライアントによって高速化され、上記の3つの(http)をバイパスして直接ソケットを呼び出すことができます。再び、第2の利益は疑いの余地があり、利益は疑問であり、明確な欠点があることに注意してください。
ボトルネックがクライアントの表示コードでない限り、JSON(またはその他のデータ形式)に切り替える方が良いし、サーバーコードを最適化する方がよい。問題がどこにあるかを把握して把握したら、どこに努力を集中させるかをよく知るでしょう。私は、Flashがそれを助けてくれるとは思えません。 (ゲームであるため、改良された表示が必要な場合があります)。
あなたが書いたのはすべてスマートです。私のゲームは、少量のデータを頻繁に送信します。 50〜250バイト。 HTMLのオーバーヘッドは約200%以上です。サーバーは1-2msで応答を作成し、サーバーにpingは60msで、AJAX応答は約120msです。だから私はステートフルな接続が助けになると思うが、誰かがすでにそういうことをやったことがあった。 – Thinker
また、通信が行われる限り、既にTCP接続を開いたままにしています。オーバーヘッドに起因する遅さのように聞こえます(それよりもずっと少ない必要があるときには、おそらく各要求に対して複数のKを送信しています)。おそらくXML解析ルーチンもあります。私の具体的な推奨事項は、XMLを取り除いたり、JSONなどを試してみることです。トレードオフの価値はないHTTPをリッピングするのは面倒なことではありません(しかし、それは間違いなく最適化できます)。 Btw、どのくらいのデータが返されるかは言及していませんでしたか? – AviD
私はJSONを使用して、戻り値は約20バイトです。そして、ping server.com -l 50とping server.com -l 500または1000との間に違いがあることがわかります。したがって、50または100のデータを送信し、ping server.com -l 1000のような応答時間を得ます。 – Thinker
プロキシーがサポートされていないことをユーザーに知らせるメッセージであっても、プロキシー がユーザーに設定されている場合は、賢明なことをしてください。
プロキシはとても簡単です。
は、私は疑問について質問があります。本当にAJAXコミュニケーションは、フラッシュによって提供されるコミュニケーションの速度が遅いのですか? – Isaac
AJAXはステートレスプロトコルであるため、依然として追加の不要なデータを送信します。 – Thinker
どのようにajax呼び出しがtcp/ip接続よりも遅いと判断しましたか?同じ基本データが送られましたか? –