私は Alex Maccaw のこの投稿を読んでいました。彼は次のように述べています。
最後の問題は、並行して送信される Ajax リクエストに関するものです。ユーザーがレコードを作成し、すぐに同じレコードを更新すると、2 つの Ajax リクエスト ( POSTと PUT ) が同時に送信されます。ただし、サーバーが「作成」リクエストの前に「更新」リクエストを処理すると、異常になります。レコードがまだ作成されていないため、どのレコードを更新する必要があるかわかりません。
これに対する解決策は、Ajax リクエストをパイプライン処理して、シリアルに送信することです。Spine はデフォルトでこれを行い、一度に 1 つずつ送信されるようにPOST、 PUT 、および DELETE Ajax リクエストをキューに入れます。次のリクエストは、前のリクエストが正常に返された後にのみ送信されます。
しかし、HTTP 仕様のSec 8.1.2.2 Pipeliningには次のように書かれています。
クライアントは、非冪等メソッドまたは非冪等メソッド シーケンスを使用してリクエストをパイプライン処理するべきではありません (セクション 9.1.2 を参照)。そうしないと、トランスポート接続が途中で終了し、不確定な結果になる可能性があります。
では、Spine は本当に POST を「パイプライン化」しますか?