最初の質問は、JavaScriptを使用したf5の無効化とブラウザの更新の重複です。
2番目の質問については、構築しているアプリケーションの種類によって異なりますが、通常、答えはノーです。
JSを利用してクローズをキャッチし、たとえば、クローズする前にサービスに「終了」メッセージを送信できる場合、それは簡単です。ただし、クライアントがクローズをキャッチする方法がないため、それが機能しない場合がたくさんあります。
一方、クライアントとサービスの間の継続的な接続に依存できる場合(たとえば、WebSocketを使用する場合)、接続がダウンしたときに終了できます。しかし、通常、あなたはできません。
最後に、1つのプラットフォーム専用に何かを書いている場合は、OSレベルの情報を使用して、JSでは処理できないケースを処理できる可能性があります。(たとえば、OS Xでは、リスナーをデフォルトに接続して、 Chromeが終了するたびに通知を受け取ることができます。)ただし、通常、これに依存することはできません。また、可能であっても、 100%をカバーNSDistributedNotificationCenter
できない場合があります。ケース。
したがって、すべての「実際の」Webアプリがセッションの管理に使用するのと同じトリックを使用する必要があります。たとえば、クライアントは5分ごとにキープアライブを送信でき、サーバーは5分間リクエストを受け取らなかった場合に終了できます。(明示的な「終了」コマンドを使用することはできますが、常に受信することに依存することはできません。)これを行う方法についてさらに情報が必要な場合は、SOについて300の質問があります。