1

データを POST するとき (AJAX を使用するか、モバイル デバイスから、または何を持っているか) は、多くの場合、「再試行」状態が発生するため、タイムアウトのようなものが発生すると、データが再度 POST されます。

これは実際に良い考えですか?

POST データは冪等であることを意図しているため、

  1. サーバーに POST を送信し、
  2. サーバーがリクエストを受け取り、
  3. 実行に時間がかかり、
  4. その後、データを送り返します

タイムアウトに達した場合は、次の再試行で冪等であることを意図したデータが送信されます。

問題は、再試行 (クライアント側から呼び出す場合) を POST データに対して設定する必要があるか、またはサーバーが常に POST データを適切に処理するように設計する必要があるか (トークンなどを使用)、または何か不足しているのでしょうか?

質問に従って更新します。これはモバイル アプリ用です。たまたま、テスト中に、タイムアウトが短すぎるとアプリが再試行することがわかりました。その間、バックエンド サーバーは実際には最初の要求を受け入れて処理し、新しい (それ以外は同一の) 再要求が入ったときに動揺しました。

4

4 に答える 4

0

サーバーが応答するまでの長い待ち時間を避けることができない場合は、すぐに応答 (「処理中」というメッセージを含む 200OK) を返し、後でクライアントに新しい要求を送信して、アクションが応答するかどうかを確認することをお勧めします。実施しました。

AJAX は、そのような方法 (「重い」アクション) で使用するようには設計されていません。ちなみに、デフォルトの HTTP タイムアウトは 7200 秒なので、簡単には到達しないと思いますが、ユーザーを長時間待たせることは避けるべきです。

プロセスに関する詳細情報 (正確に何をしようとしているのかなど) を提供すると、そのような障害を回避する方法を提案するのに役立ちます。

于 2013-09-18T19:37:35.603 に答える