Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Cache APIに触れる #pwanight
Search
tiwu
April 17, 2019
Technology
1.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cache APIに触れる #pwanight
PWA Night vol.3 ~PWAのミライや活用方法をみんなで考えよう~
で登壇した資料です
tiwu
April 17, 2019
Transcript
34 slides
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とかと使い方は似ている
• 使いこなすとかなり強力 ◦ ネットワークにアクセスしたら負け まとめ
More Decks by tiwu
See All by tiwu
Eleventy で SSG
tiwu_dev
2
740
Eleventy - 11ty
tiwu_dev
0
150
Install for PWA
tiwu_dev
0
4k
App Shortcuts
tiwu_dev
0
960
Web Vitals
tiwu_dev
0
92
Web Share API
tiwu_dev
0
4k
Badge in Background
tiwu_dev
0
110
PWAとCache API #frontkansai
tiwu_dev
5
4.9k
Web Componentsとlit-element #frontkansai
tiwu_dev
2
4.1k
Other Decks in Technology
See All in Technology
AWS基盤改善を支える 私たちの理念と行動指針
kentosuzuki
0
200
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.2k
81天的 AI Agent 軟體開發團隊治理實務分享
regionbbs
0
160
Kiro CLI 入門 (ターミナルと CI で使う) | 目指せ Kiro マスター 03
inariku
PRO
2
140
AI時代の組織作り:チーム開発から「個人×AI」への移行と、持続可能な「開発資本」の築き方
ham0215
3
830
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
5
330
Intro to Kiro (One agent, every surface) | Kiro: Zero to Hero 01
inariku
PRO
2
120
顧客合意を取りながら進めるAWSコスト削減の実践
optim
0
170
Frontier Teams — Amazon は AI で「開発のやり方」をどう変えたのか
kmotohas
0
220
思考過程から秘密が漏れる:Amazon Bedrock上のKimi K3を5つの方法で攻めたら、25回中22回漏洩した話
yama3133
1
150
An Introduction to Context Ontology Accelerator (teaching AI agents what your data means)
inariku
PRO
1
230
うちなーぐちが認識できるなら、秋田弁もいけるはず!? Amazon Transcribe方言チューニング検証
ryouto715
1
170
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
640
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
400
Mobile First: as difficult as doing things right
swwweet
225
10k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
660
Large-scale JavaScript Application Architecture
addyosmani
516
110k
The agentic SEO stack - context over prompts
schlessera
0
1k
WCS-LA-2024
lcolladotor
0
990
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
600
Site-Speed That Sticks
csswizardry
13
1.6k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k