標準のgrails環境では、クライアント接続が失われ、結果をもう配信できなくなっても、要求は常に最後まで実行されることに気付きました。クライアントへの接続が失われたときにリクエストを取り消す
クライアント接続が失われるとすぐにリクエストの実行がキャンセルされるように環境を設定する方法はありますか?
更新:回答のためのThanx。はい - 私は避けるようにしようとしています問題のほとんどは、より良いコード化することで回避することができます。
- キャッシングは、ほぼすべてのページの高速
- トークンが二回
何かを提出避けるために助けることができることができますが、依然として時間を消費する可能性のある要求があります。地図サービスを例にしましょう。ルートの計算には時間がかかります。要求を再送信しないようにする1つの解決策は、ユーザーへのメッセージと共に「calculateInProgress」フラグである可能性があります。しかし、その後も多くのセッションを作成し、DOS攻撃を行うために多くのリクエストを作成することは可能です。
私はまだ興味があります:要求をキャンセルするようにサーバーを設定する方法はありませんか?私は、サーバーがこのように振る舞い、それが素晴らしかったシステムで開発していました:-)
はい、遅い要求が本当の問題です。あなたがそれを助けるかもしれないと考えているので、いくつかの時間とページを何度もリロードしている患者を待っていると想像してください... – rdmueller
これは、Nginxと適切なキャッシュ/エタグのヘッダーを使用して、サーバー側のキャッシュ(ehcache/memcache/etc) –