web-dev-qa-db-ja.com

Service Workerをアンインストールするにはどうすればよいですか?

ルートディレクトリから/serviceworker.jsを削除した後、Chromeは引き続き、webrootから削除したサービスワーカーを実行します。ウェブサイトに再度ログインできるように、ウェブサイトとChromeからService Workerをアンインストールするにはどうすればよいですか?

私はこの問題をService Workのキャッシュメカニズムまで追跡しましたが、デバッグする時間があるまで今のところ削除したいだけです。私が使用しているログインスクリプトは、GoogleアカウントにログインするためにGoogleのサーバーにリダイレクトします。ただし、login.phpページから取得できるのはERR_FAILEDメッセージのみです。

111
Mark Tomlin

次のようにプログラムでサービスワーカーを削除できます。

navigator.serviceWorker.getRegistrations().then(function(registrations) {
 for(let registration of registrations) {
  registration.unregister()
} })

ドキュメント: getRegistrations登録解除

Chrome Devtoolsの[アプリケーション]タブでサービスワーカーを削除することもできます。

243
Daniel Herr

次のURLに移動することもできます:chrome:// serviceworker-internals /そしてそこからserviceworkerの登録を解除します。

85
k00k

これはChrome Developer ToolおよびProgrammaticicallyを使用して実行できます。

  1. 入力して、実行中のすべてのインスタンスまたはService Workerを検索します

    chrome:// serviceworker-internals /

    新しいタブで、登録を解除するサービスワーカーを選択します。

  2. 開発者ツール(F12)を開き、アプリケーションを選択します。それから

    [ストレージのクリア]-> [Service Workerの登録解除]を選択します

    または

    サービスワーカーを選択->リロード時に更新を選択

  3. プログラムで

if(window.navigator && navigator.serviceWorker) {
  navigator.serviceWorker.getRegistrations()
  .then(function(registrations) {
    for(let registration of registrations) {
      registration.unregister();
    }
  });
}
25
Sakshi Nagpal

Google Chromeでは、デベロッパーツール(F12)->アプリケーション->サービスワーカーおよびunregisterその特定のドメインのリストからのサービスワーカー。

Screenshot

この方法は、サイトの開発モードで有効であり、ほとんどの場合、localhostで実行されます。これは、他のプロジェクトの開発に必要な場合があります。

22
Asim K T

デバイスで getRegistrationsgetRegistration の2つのAPIを検出する必要があります。サービスワーカーには、すべてのプラットフォームに固有のAPIセットはありません。たとえば、一部のブラウザにはnavigator.serviceWorker.getRegistrationのみがあり、navigator.serviceWorker.getRegistrationsはありません。したがって、両方を検討する必要があります。

5
GuoX

参考までに、MacOSSafariブラウザーを使用している場合、サービスワーカーを強制的に登録解除する1つの方法があります(Safari 12.1の手順と画像):

  1. Safari>設定...>プライバシー>ウェブサイトデータの管理… Safari Preferences : Privacy

  2. ドメイン名(例: 'localhost')を入力し、[削除]をクリックします Safari Preferences : Privacy : manage website data

注:これは、サービスワーカーに加えて、このドメインのすべてのキャッシュ、Cookie、およびデータベースも消去します。

1
terrymorse

既に正解が与えられていることに加えて、SWキャッシュも削除したい場合は、以下を使用できます。

if ('caches' in window) {
    caches.keys()
      .then(function(keyList) {
          return Promise.all(keyList.map(function(key) {
              return caches.delete(key);
          }));
      })
}

読むことができます 詳細はこちら (段落:「Service Workerの登録解除」)

または、ブラウザから[キャッシュストレージ]セクションにアクセスして、[サイトデータのクリア]ボタンをクリックします。

enter image description here

1
Francesco