目次
始めましょう
多読
より良い記事を翻訳できるように翻訳者をサポートするためのチップ、ありがとう!
著者について: Liu Jianchao-J.c
ホームページ ウェブフロントエンド htmlチュートリアル Service Worker を使用して、非常に単純なオフライン page_html/css_WEB-ITnose を作成します

Service Worker を使用して、非常に単純なオフライン page_html/css_WEB-ITnose を作成します

Jun 24, 2016 am 11:16 AM

次のシナリオを想像してみましょう。私たちは田舎に向かう電車に乗って、モバイル デバイスで素晴らしい記事を読んでいます。同時に、[もっと見る] リンクをクリックすると、電車が突然トンネルに入り、モバイル デバイスがネットワークを失い、Web ページに次のような内容が表示されます。

これはかなりイライラする経験!幸いなことに、Web 開発者は新しい機能を使用してこの種のユーザー エクスペリエンスを向上させることができます。最近 Service Worker を使って遊んでいますが、Service Worker が Web にもたらす無限の可能性にいつも驚かされます。 Service Worker の優れた機能の 1 つは、ネットワーク リクエストのステータスを検出し、それに応じて応答できることです。

この記事では、この機能を使用してユーザーの現在のネットワーク接続ステータスを確認し、接続がない場合は非常にシンプルなオフライン ページに戻ることを計画しています。これは非常に基本的な例ですが、この機能を立ち上げて実行するのがいかに簡単であるかがわかるはずです。 Service Worker についてまだ学習していない場合は、この Github リポジトリをチェックして詳細を学ぶことをお勧めします。

ケースを開始する前に、そのワークフローを簡単に見てみましょう:

  1. ユーザーが初めてページにアクセスすると、Service Worker がインストールされ、オフライン HTML ページがブラウザのキャッシュに追加されます
  2. その後、ユーザーが別の Web ページ (同じ Web サイトの下) に移動しようとしているが、この時点で接続が切断されている場合、キャッシュされたオフライン HTML ページが返されます
  3. ただし、ユーザーが別の Web ページに移動するつもりの場合、ネットワークこの時点では接続されているため、通常どおりページを閲覧できます

始めましょう

次の HTML ページがあるとします。これは非常に基本的なことですが、一般的なアイデアが得られます。

<!DOCTYPE html>
ログイン後にコピー

次に、オブジェクトのみを作成したページに Service Worker を登録しましょう。作成した HTML に次のコードを追加します。

すごいです

次に、Service Worker ファイルを作成し、「service-worker.js」という名前を付ける必要があります。この Service Worker を使用してすべてのネットワーク リクエストをインターセプトし、ネットワーク接続をチェックし、チェック結果に基づいて最適なコンテンツをユーザーに返すことを計画しています。

<script>// Register the service worker// 注册 service workerif ('serviceWorker' in navigator) {    navigator.serviceWorker.register('/service-worker.js').then(function(registration) {    // Registration was successful    // 注册成功    console.log('ServiceWorker registration successful with scope: ', registration.scope);}).catch(function(err) {    // registration failed :(    // 注册失败 :(    console.log('ServiceWorker registration failed: ', err);   });}</script>
ログイン後にコピー

上記のコードでは、Service Worker のインストール時にオフライン ページをキャッシュに追加しました。コードを小さな部分に分割すると、コードの最初の数行で、オフライン ページのキャッシュされたバージョンと URL を指定していることがわかります。キャッシュに異なるバージョンがある場合は、バージョン番号を更新するだけでキャッシュをクリアできます。 12 行目あたりで、オフライン ページとそのリソース (画像など) にリクエストを作成します。成功した応答を取得した後、オフライン ページと関連リソースをキャッシュに追加します。

これで、オフライン ページがキャッシュされ、必要なときに取得できるようになります。同じ Service Worker で、ネットワークがない場合に返されるオフライン ページに対応するロジック コードを追加する必要があります。

'use strict';var cacheVersion = 1;var currentCache = {  offline: 'offline-cache' + cacheVersion};const offlineUrl = 'offline-page.html';this.addEventListener('install', event => {  event.waitUntil(    caches.open(currentCache.offline).then(function(cache) {      return cache.addAll([          './img/offline.svg',          offlineUrl      ]);    })  );});
ログイン後にコピー

この機能をテストするには、Chrome の組み込み開発者ツールを使用できます。まず、ページに移動し、Service Worker がインストールされたら、[ネットワーク] タブを開いて、スロットリングをオフラインに変更します。 (翻訳者注: スロットルをオフラインに設定しても効果がない場合は、ネットワークをオフにするか、Chrome が 360 Security Guard を通じてネットワークにアクセスすることを禁止できます)

ページを更新すると、対応するものが表示されるはずです。オフラインページです!

コードを書かずにこの機能を単純にテストしたい場合は、私が作成したデモにアクセスしてください。さらに、上記のコードはすべて Github リポジトリにあります。

このケースで使用されているページはシンプルだと思いますが、オフライン ページはあなた次第です。このケースの内容をさらに詳しく知りたい場合は、このケースのようなオフライン ページのキャッシュ無効化を追加できます。

多読

さらに、優れたオフライン機能のケースがいくつかあります。例: Guardian は、クロスワード パズルを備えたオフライン Web ページを作成しました。これにより、ネットワークの再接続を待っている間 (つまり、オフラインになっているとき) にも少し楽しむことができます。また、Google Chrome Github リポジトリを参照することをお勧めします。これには、さまざまな Service Worker の例が多数含まれています。使用例の一部もここにあります。

ただし、上記のコードをスキップして、関連する操作をライブラリを通じて単純に処理したい場合は、UpUp を検討することをお勧めします。これは、オフライン機能を簡単に使用できる軽量のスクリプトです。

より良い記事を翻訳できるように翻訳者をサポートするためのヒント、ありがとう!

翻訳者にチップ

より良い記事を翻訳できるように翻訳者をサポートするためのチップ、ありがとう!

支払い方法を選択してください

著者について: Liu Jianchao-J.c

フロントエンド、オンザロード... http://jchehe.github.io 個人ホームページ · 私の記事 · 17 ·

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLは初心者のために簡単に学ぶことができますか? HTMLは初心者のために簡単に学ぶことができますか? Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLでの開始タグの例は何ですか? HTMLでの開始タグの例は何ですか? Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

HTML、CSS、およびJavaScriptの理解:初心者向けガイド HTML、CSS、およびJavaScriptの理解:初心者向けガイド Apr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

WebアノテーションにY軸位置の適応レイアウトを実装する方法は? WebアノテーションにY軸位置の適応レイアウトを実装する方法は? Apr 04, 2025 pm 11:30 PM

Y軸位置Webアノテーション機能の適応アルゴリズムこの記事では、単語文書と同様の注釈関数、特に注釈間の間隔を扱う方法を実装する方法を探ります...

Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Apr 04, 2025 pm 11:54 PM

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

CSS3とJavaScriptを使用して、クリック後に周囲の写真を散乱および拡大する効果を実現する方法は? CSS3とJavaScriptを使用して、クリック後に周囲の写真を散乱および拡大する効果を実現する方法は? Apr 05, 2025 am 06:15 AM

画像をクリックした後、散乱と周囲の画像を拡大する効果を実現するには、多くのWebデザインがインタラクティブな効果を実現する必要があります。特定の画像をクリックして周囲を作成してください...

HTML、CSS、およびJavaScript:Web開発者に不可欠なツール HTML、CSS、およびJavaScript:Web開発者に不可欠なツール Apr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

See all articles