17

シングル ページ アプリの場合、更新がサーバーにデプロイされたときにページや JavaScript ファイルを強制的に再読み込みする方法はありますか?

明らかな方法の 1 つは、一部のサーバー リソースをポーリングして、アプリの現在のバージョンがブラウザーで実行されているかどうかを確認し、そうでない場合は、更新されたリソースを読み込むことです。

特定の HTTP または DOM 機能を利用する、より一般的に受け入れられている方法があるかどうか疑問に思っています。

アップデート

HTML5 Appcache について読んでいます。これは、サーバー接続を必要とせずに実行できるアプリケーションを対象としているようです。これは、サーバーからのSPA のリソース (ページ自体を含む) の更新には関係ないと思います。私は正しいですか?

4

4 に答える 4

1

ロングポーリングが返されたときにタイマーの実行を開始でき、ユーザーが次の場合:

A. ajax リクエストを実行する

B.タブを切り替える

C.タイマーの期間中は非アクティブです

リフレッシュをトリガーできます。

これは、ユーザーの邪魔をしたり、ページの更新を求めたりすることなく、単一ページのアプリを更新するのとほぼ同じです。

于 2014-03-05T05:46:46.407 に答える
1

古い JavaScript ファイルとイベントは DOM 要素にバインドされるため、リクエストを使用してlong polling、特定の間隔でリクエストを実行しなくても、更新があることを知ることができます。また、長いポーリング リクエストが返されたときに、ページ全体を更新できます。ページをリロードする方が簡単です。

編集

更新中にユーザーがページを使用し続けることについてのコメントを読みましたが、これは非常に危険だと思います...更新があることをユーザーに伝えるために通知を表示するだけではあまりにも悪いので、お勧めします彼/彼女はページをリロードしますか?

そうしないと、DOM 要素からイベントのバインドを解除するなど、以前のスクリプトを元に戻す必要があります。

jQuery を使用してイベントを簡単にバインド解除できます: jquery を使用してすべてのイベントをバインド解除する方法 これは 1 つの DOM 要素に対して機能します。ページ内の各 DOM 要素に対してこれを行う必要があります。

于 2013-07-23T18:18:55.860 に答える
1

.NET を使用している場合は、SignalRを使用してすべてのクライアントに更新を通知し、クライアントでリロードをトリガーできます。

于 2013-07-24T14:27:36.247 に答える