長期にわたるタスクのプログレッシブ強化
-
28-09-2019 - |
質問
長期にわたる(> 2分)サーバー側のタスクを開始するWebページを改善する方法を探しています。ページの現在のバージョンは、タスクの完全な期間だけでクロックします。これは、ユーザーにとって非常にイライラする可能性があります。
私はすでにユーザーのエクスペリエンスをどのように改善できるかについていくつかのアイデアを持っていますが、それらはすべて、ある程度AJAXの使用を伴うでしょう。私がこのプロジェクトで経験した以前の経験のために、すべてのユーザーがJavaScriptを有効にしたり利用できるわけではないことを知っています。
サーバー側のプロセスがすでに可能な限り最適化されていると仮定すると、経験を改善するために他に何ができるか すべて ユーザーはできるだけ?
解決
長期にわたるサーバープロセスを帯域外に移動します。
ユーザーがタスクを開始すると、アプリケーションは何らかのキューにメッセージを書き込むことができます。これは通常非常に速いため、ユーザーはすぐにコントロールを取り戻します。メッセージがキューに入ると、別の専門的なプロセス(サービス、スケジュールされたタスク、Cronジョブなど)がそれを選択し、最初の機会に適切なタスクを実行します。
JavaScriptを有効にしているユーザーの場合、AJAXを介してタスクのステータスを確認するためにタイマーを設定し、タスクが終了したときに警告することができます。
JavaScript以外のユーザーに、保留中のタスクと完了したタスクをページの一般的で目に見える場所に表示することで、通知し続けることができます。もちろん、彼らはそれから利益を得るためにブラウジングを続けなければならないので、タスクが終了するのを待っている場合、ユーザーが時々ページを更新する必要があることを明確にする必要があります。
他のヒント
- データベース(またはインメモリオブジェクト)にテーブルを作成する
- 長期にわたるタスクは、このテーブル(オブジェクト)の進捗状況を更新します
- Webページには、このテーブル(またはオブジェクト)からデータが表示されます。ページを更新する方法 - それはあなたの選択です。