0

ブラウザから複数の AJAX リクエストが送信されています。私の UI は複数のビューで構成されており、AJAX リクエストはそれらのビューを同時に設定しようとしています。場合によっては、10 を超える同時要求をクライアントから送信し、サーバーで同時に処理する必要があります。

しかし、単一ドメインへの最大同時リクエストに対するブラウザの制限と、HTTP の「サーバーは、リクエストが受信されたのと同じ順序でリクエストへのレスポンスを送信する必要があります」という制約のため、リクエスト処理で私ほど多くの同時実行性を導き出していません。したいでしょう。

私のアプリケーションの観点からは、リクエストを送信した順序で応答する必要はありません。たとえば、view1 の前に view8 が入力されても問題ありません。

Servlet 3.0 コンストラクトを使用した非同期処理は、問題の片側 (サーバー側) のみに対処しているように見えるため、アプリケーションの同時実行性を最大化するために十分に活用することはできません。

私の質問は次のとおり です。いくつかの適切な構造を見逃していますか? (「別のサブドメインからイメージをホストする 」などの回避策とは対照的に「適切」)より多くの同時実行性を得ることができますか?

これは、多くの Web UI が必要とするもののようです。そうでない場合は、UI を間違った方法で設計しています。いずれにせよ、ご意見をお寄せいただければ幸いです。

Edit1:私の利点として、膨大な数の同時クライアントをサポートする必要はありません。アプリにアクセスする同時クライアントの最大数は 100 未満です。その事実を考えると、サーバー側で十分な処理能力を利用できる場合、基本的にこれらのクライアントのエクスペリエンスを強化しようとしています。

Edit2:私たちのアプリケーション/API は「パブリック」消費用ではありません。例: 私の会社の Web メール アプリのようなものです。インターネット上でホストされていますが、誰でも利用できるわけではありません。関連する少数の人々による消費のみを目的としています。その情報を提供している理由は、(REST) API ユーザーと通常の Web サイト ユーザーを区別しているように見える SO/Twitter と私のアプリを区別するためです。私たちの場合、そのように区別するべきではないと考えており、両方に単一セットの REST エンドポイントを提供したいと考えています。

仕様 (RFC2616) の制限の背後にある理由は、「これらのガイドラインは、HTTP 応答を改善し、輻輳を回避することを目的としています。」. しかし、イントラネット Web アプリにはより贅沢な機能があり、それほど制限する必要はないはずです!?

4

1 に答える 1

1

サーバーは REST API を公開しているため、UI はさまざまなリソース カテゴリ (ブログ、ビデオ、ニュース、記事など) に対して特定の GET を作成します。各リソース カテゴリには独自のビューがあるため、すべてうまく収まります。ブログと動画を 1 つのリクエストにまとめるのは間違っていると感じます。ではない ?

まあ、私見は実用的であることがより重要です。確かに、サービスが RESTful API を公開することは理にかなっていますが、API 全体をブラウザーに公開する必要があるとは限りません。API は、サーバー側の Web アプリから分離できます。これらの複数の API リクエストをサーバー側でいつでも作成し、結果を照合してクライアントに送り返すことができます。たとえば、SO のホームページを見てください。StackOverflow API は RESTful API を公開しますが、ホームページをロードするときに、タグやスレッド リストなどを入力するためだけにブラウザが複数のリクエストを送信することはありません。

提案してくれたサンジェイに感謝します。しかし、REST クライアントとブラウザ クライアントの両方に単一の API を使用したいと考えていました。興味深いことに、ルート URI「stackoverflow.com」は SO の REST API には記載されていませんが、ブラウザー クライアントはそれを使用しています。ルート URI を公開した場合、応答の処理が困難になると思います (データが混在するため)。彼らのREST APIは(私のアプリケーションのように)粒状ですが、JavaScriptコードは他のドア(API)を使用して数を減らします。サーバーへの往復の どういうわけか、それは正しくありません(私はこの分野の初心者ですが)。お気軽に訂正してください

SOは「他のドア」を使用しません。ページに何かを入力するための 10 個の同時要求を送信しないだけです。あなたが投票したり、スレッドをお気に入りとしてマークしたり、コメントしたりするときに、彼らは XHR リクエストを行います。ページ自体をロードするために、複数のリクエストはありません。ブラウザから RESTful API を直接実行したい場合は、制限に従う必要があります。それか、サーバーへの実質的に無制限の接続を可能にするデスクトップの方法に進みますが、その方法には行きたくないと思います...

于 2013-04-05T17:38:19.210 に答える