Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cache APIに触れる #pwanight
Search
tiwu
April 17, 2019
Technology
1
1.6k
Cache APIに触れる #pwanight
PWA Night vol.3 ~PWAのミライや活用方法をみんなで考えよう~
で登壇した資料です
tiwu
April 17, 2019
Tweet
Share
More Decks by tiwu
See All by tiwu
Eleventy で SSG
tiwu_dev
2
700
Eleventy - 11ty
tiwu_dev
0
140
Install for PWA
tiwu_dev
0
1.5k
App Shortcuts
tiwu_dev
0
930
Web Vitals
tiwu_dev
0
82
Web Share API
tiwu_dev
0
1.5k
Badge in Background
tiwu_dev
0
98
PWAとCache API #frontkansai
tiwu_dev
5
2.3k
Web Componentsとlit-element #frontkansai
tiwu_dev
2
1.6k
Other Decks in Technology
See All in Technology
Phase03_ドキュメント管理
overflowinc
0
1.2k
既存アプリの延命も,最新技術での新規開発も:WebSphereの最新情報
ktgrryt
0
110
"作る"から"使われる"へ:Backstage 活用の現在地
sbtechnight
0
230
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
170
The Rise of Browser Automation: AI-Powered Web Interaction in 2026
marcthompson_seo
0
250
20260323_データ分析基盤でGeminiを使う話
1210yuichi0
0
160
20年以上続く PHP 大規模プロダクトを Kubernetes へ ── クラウド基盤刷新プロジェクトの4年間
oogfranz
PRO
0
150
Windows ファイル共有(SMB)を再確認する
murachiakira
PRO
0
220
Phase01_AI座学_基礎
overflowinc
0
1.9k
事例から紐解くSHIFT流QA支援 ~大規模プロジェクトの品質管理支援、QA組織立ち上げ~ / 20260320 Nozomu Koketsu
shift_evolve
PRO
0
120
【Λ(らむだ)】最近のアプデ情報 / RPALT20260318
lambda
0
140
建設DXを支えるANDPAD: 2025年のセキュリティの取り組みと卒業したいセキュリティ
andpad
0
130
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Thoughts on Productivity
jonyablonski
75
5.1k
How to make the Groovebox
asonas
2
2k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
96
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The browser strikes back
jonoalderson
0
820
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Transcript
Cache APIに触れる Wataru Taguchi
アジェンダ • 自己紹介 • PWAとService Worker • Cache API •
まとめ
自己紹介 # Wataru Taguchi - GameWith Front End Engineer -
PWA, Web Components - パフォーマンスチューニングが好き - @tiwu_official - FF14, Beer, Kyoto Animation
• 段階的 • レスポンシブ • ネットワーク接続に依存しない • アプリ感覚 • 常に最新
• 安全 • 発見しやすい • 再エンゲージメント可能 • インストール可能 • リンク可能 PWAの特徴 https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/?hl=ja
• 段階的 • レスポンシブ • ネットワーク接続に依存しない • アプリ感覚 • 常に最新
• 安全 • 発見しやすい • 再エンゲージメント可能 • インストール可能 • リンク可能 PWAの特徴
「ネットワークに依存しない」とは service workerがリクエストを傍受して キャッシュしたデータを返す
Service Worker ブラウザのバックグラウンドで実行されるスクリプト • プッシュ通知 • バックグラウンド同期 • オフライン対応
オフライン対応
Service Worker ネットワークへのリクエストにイベントを張る
Service Worker respondWith()でレスポンスを返す caches.open()でCacheオブジェクトを取得する
Service Worker cache.match()でキャッシュが存在するか判定 存在したらreturn responseでレスポンスを返す
Service Worker 存在しない場合はfetch()でネットワークから取得 cache.put()でキャッシュに保存し、返す
つまり ネットワークへのリクエストを全てキャッシュし返す ※HTML,CSS,JS,IMG... ※サードパーティのリソースも全てキャッシュ ※本番で書かないでね!
Service Worker? 皆さん気づきましたか?
Service Worker? Service Workerがキャッシュの仕組みを 持っていたりするわけではない
Service Worker? Service Workerはあくまでリクエストに イベントを張ることができるだけ
キャッシュの仕組み Cache API
Cache API • Window,Workerスコープで利用できる ◦ LocalStorageと同じ感覚 • Service Workerに結びつけて使う必要はない •
有効期限などは持てない • StorageEstimate APIでキャッシュ使用状況がわかる • グローバルにcachesという変数がある
None
Cache APIの始め方 openを使うことで複数のキャッシュを持つことができる
メソッド(追加系) • put (request, response) ◦ request ▪ StringでURL、Requestオブジェクト ◦
response ▪ Responseオブジェクト ◦ key / value でキャッシュに追加する
メソッド(追加系) • add (request) ◦ request ▪ StringでURL、Requestオブジェクト ◦ ネットワークから取得しキャッシュに格納する
◦ fetch + putと同じ挙動
メソッド(追加系) • addAll (requests) ◦ requests ▪ 配列 ◦ 配列の中身をaddする
キャッシュに追加
メソッド(取得系) • match (request, options) ◦ request ▪ StringでURL、Requestオブジェクト ◦
options [option] ▪ ignoreSearch: クエリーを無視する(value=bar) ▪ ignoreMethod: メソッドを無視する(GET, HEAD)
• matchAll (request, options) ◦ 引数はmatchと同じ ◦ matchは単数、matchAllは複数返す メソッド(取得系)
• delete (request, options) ◦ 引数はmatchと同じ ◦ キャッシュを削除する メソッド(削除系)
指定したキャッシュの削除
• keys (request, options) ◦ request [option] ▪ リクエストを指定できる ◦
options [option] ▪ matchと同じ ◦ keyの配列を取得する メソッド(その他)
キャッシュの全削除
• 一覧で詳細で必要な静的リソースを読み込む • 古いバージョンを消して新しいキャッシュを作る プロダクトでの使い方
一覧で詳細で必要な静的リソースを読み込む
古いバージョンを消して新しいキャッシュを作る
• SWではなくCache APIによってキャッシュされる • Cache APIはSW依存ではなく独立したAPI • add, match, deleteなどLSとかと使い方は似ている
• 使いこなすとかなり強力 ◦ ネットワークにアクセスしたら負け まとめ