当社のユーザーは、外部サイトから当社の Web サイトに戻り、ユーザーが当社のサイトを離れたときに外部サイトに渡される URL に戻ります。私たちのサイトに戻るには、アプリケーションのデータストアに保持されるステータスの更新が必要です。
Web サイトに戻ったときにチェックを実装しました。これにより、データストアへの複数の書き込みが防止され、操作が冪等になります。
イベントの一般的な順序は次のとおりです。
- ランディング Web ページへの最初の投稿 (Web ページ インスタンス 1 が構築中)
- 最初の投稿はチェックを通過します (データは前に処理されていません)
- データ永続化の開始 (まだ Web ページ コンストラクター内)
- 最初の投稿と同じセッションとブラウザー ウィンドウにある、ランディング Web ページ (Web ページ インスタンス 2 が構築中) への 2 番目の投稿
- 2 番目の投稿がチェックに失敗しました (データは既に処理されているか、処理されています)
- Web ページ インスタンス 2 コンストラクターが完了し (データストアへの永続性なし)、Web 応答がユーザーに提供されます。
- Web ページ インスタンス 1 コンストラクターの完了 (データストアに永続化した後)
- ユーザーのブラウザにはページ インスタンス 1 が表示されません。
最終結果として、最初の投稿の後に 2 番目の投稿が行われたとしても、2 番目の投稿はユーザーに対してより速く "完了" し、ユーザーの Web ブラウザーにはページのインスタンス 1 ではなくインスタンス 2 が表示されます。
私の質問は次のとおりです。
- 最初のデータストア処理ページ インスタンスをユーザーに表示する (したがって、2 番目のページ インスタンスを "破棄" する) 方法はありますか?
- もしそうなら、これはAJAXを使わずに行うことができますか?
ご支援いただければ幸いです。
私の開発環境
- Web フレームワーク: Wicket 1.5.7
- Java: 1.6.0_33; Java HotSpot(TM) クライアント VM 20.8-b03
- Web サーバー システム: Google App Engine for Java バージョン 1.6.6
- オペレーティング システム: Microsoft Windows XP Home Edition バージョン 2002 SP3 (x86 で動作するバージョン 5.1; Cp1252; en_GB)
- IDE: NetBeans IDE 7.1.2 (ビルド 201204101705)