Service Worker を使用して、非常に単純なオフライン page_html/css_WEB-ITnose を作成します
次のシナリオを想像してみましょう。私たちは田舎に向かう電車に乗って、モバイル デバイスで素晴らしい記事を読んでいます。同時に、[もっと見る] リンクをクリックすると、電車が突然トンネルに入り、モバイル デバイスがネットワークを失い、Web ページに次のような内容が表示されます。
これはかなりイライラする経験!幸いなことに、Web 開発者は新しい機能を使用してこの種のユーザー エクスペリエンスを向上させることができます。最近 Service Worker を使って遊んでいますが、Service Worker が Web にもたらす無限の可能性にいつも驚かされます。 Service Worker の優れた機能の 1 つは、ネットワーク リクエストのステータスを検出し、それに応じて応答できることです。
この記事では、この機能を使用してユーザーの現在のネットワーク接続ステータスを確認し、接続がない場合は非常にシンプルなオフライン ページに戻ることを計画しています。これは非常に基本的な例ですが、この機能を立ち上げて実行するのがいかに簡単であるかがわかるはずです。 Service Worker についてまだ学習していない場合は、この Github リポジトリをチェックして詳細を学ぶことをお勧めします。
ケースを開始する前に、そのワークフローを簡単に見てみましょう:
- ユーザーが初めてページにアクセスすると、Service Worker がインストールされ、オフライン HTML ページがブラウザのキャッシュに追加されます
- その後、ユーザーが別の Web ページ (同じ Web サイトの下) に移動しようとしているが、この時点で接続が切断されている場合、キャッシュされたオフライン HTML ページが返されます
- ただし、ユーザーが別の 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 ·

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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