Cache 自由自在
PWAの動作
- SWがオンラインコンテンツとキャッシュの仲介
キャッシュをどう使うか
- なぜキャッシュ
- 高速化
- ネットワーク節約
- オフライン対応
- 考慮点
- 更新の反映
- インタラクティブなコンテンツ
- 3パターン
- cache first
- network first
- no cache
CacheAPI
- API
- match/matchAll
- add/addAll
- put
- delete
- keys
- 有効期限はない
- 適用例
- SPA
- AppShellとそれ以外が分かれてシンプルな設計
- 従来型SSR
- 固定コンテンツとそれ以外の制御
- SPA
キャッシュの削除
- Activate時に削除する
- 更新タイミング
- SWはオンライン時に同期次回起動時に更新されたものが動作
- Cacheは明示的に更新するかSWのActivate時に削除しないとだめ
- 対策
- IndexedDBにタイムスタンプとURL記録
- Workboxのexpiration.Plugin
- PWAライブラリで有効期限的なのはこれ以外みない
PWAフレームワーク
PWA Builder
- マイクロソフト製
- PWAを生成するツール
- 既存サイトをPWA化
- manifestとかもともとあったらそれベースに作ってくれる
- https://github.com/pwa-builder/serviceworker
Workbox
総称
- 2つを組み合わせると便利
- PWA builderで原型つくる
- Workboxで細かいところを
今から開発できる、Progressive Web Apps
PWAとは
- 2015/11のChrome Dev Summit
- もともとはGoogleの人のブログ記事
- クライアントの性能に合わせた機能
- IEなら従来通りとかってこと
- これまでWebになかった機能
- オフライン
- プッシュ通知
- バックグラウンド所為r
- アイコンの追加
- これらは新しいAPIが追加された
- SW
- Web App Manifest
- Webのメリット
- SLICE
- FIRE
PWAのメリット
- ServiceWorker
- バックグラウンドで動作するプログラミング可能なネットワークプロキシ
- 既存のWebページに後付でもいける
- sw.jsとそれを登録する崇敬
- 何をキャッシュ
- AppShell
- UIが機能するために必要最小限のリソース
- 要件にあったアセット
- モバイルの場合ストレージ圧迫してしまうから注意
- SWの更新
- キャッシュは消えない
- AppShell
- 開発中にキャッシュしちゃうと反映されなくて面倒なので注意
PWA for windows
- Bingがweb上のPWA検出し自動でレビューしてストアに
- microsoftストアからダウンロードするとwindowsのAPIが使える
- sonarwhai
- https://sonarwhai.com
- lighthouse的な?
PWA位置づけ
- Nativeを置き換えるものではない
- 今までWebViewで十分だったってものならはまるかも
まとめ
- ServiceWorker
- Web App Manifest
- 各種API
PWA化するときのUIとスコープの設計について
- eegozilla
- 江頭さん
- abcのサイトPWA化した
- https://www.slideshare.net/hirokazuegashira/pwa-99950968
PWA対応してみた知見の話
- 多言語対応
- 言語ごとにディレクトリ切ってそこをルートにSW配置
- 一部分だけ多く使われるサイト
- 戦略としてSWのスコープを調整した
- インストールされて使われてる場合は〜とか場合分けすると大変
- start_urlのクエリを見て〜って感じで頑張る
- エンゲージメント
- 初回アクセスのユーザとリピータは使い方が違う
- それを考えた上でstart_urlを決める
- SPAでないとページにアクセスしないとキャッシュできない
- SPAだと一発でまとめて
- オフラインのときはオフラインであることが分かるような画面を出してあげる
- キャッシュしておいたコンテンツで誤解を与えたりしてしまわないように
- OS差の対応
重要だと思ったこと
- 誰向けのPWAなのか
- エンゲージ指数が閾値を超えたユーザへのおもてなし
- 有益な体験とは何なのか考えて
- 初回ユーザ向けではないのでは?
- コンテンツでエンゲージを上げた上での+α
使い所
注意点
- iOSとかトラブル起きがち
- 公開する前に確認しておくこと