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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
920
Web Vitals
tiwu_dev
0
79
Web Share API
tiwu_dev
0
1.5k
Badge in Background
tiwu_dev
0
93
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
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
210
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
450
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
1
2.8k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
超初心者からでも大丈夫!オープンソース半導体の楽しみ方〜今こそ!オレオレチップをつくろう〜
keropiyo
0
110
今日から始めるAmazon Bedrock AgentCore
har1101
4
410
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
260
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
580
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
110
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
250
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
460
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
190
Featured
See All Featured
Design in an AI World
tapps
0
140
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
Ruling the World: When Life Gets Gamed
codingconduct
0
140
Being A Developer After 40
akosma
91
590k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
430
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
130
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
AI: The stuff that nobody shows you
jnunemaker
PRO
2
260
Game over? The fight for quality and originality in the time of robots
wayneb77
1
120
Building an army of robots
kneath
306
46k
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とかと使い方は似ている
• 使いこなすとかなり強力 ◦ ネットワークにアクセスしたら負け まとめ