Chrome 46 に Cache.addAll() を実装した
Chrome 46 に CacheStorage API の Cache.addAll() を実装したのでその紹介です。
- MDN - Cache.addAll()
- Spec - Cache.addAll()
- Chromium Dashboard - Cache.addAll()
- (2015/09/09 追記) Google Web Updates - Updates to the service worker cache API
Cache.addAll() は Request もしくは URL String の配列を受け取り、それらを fetch した結果を Cache に保存する API です。
caches.open('cachename')
.then(function(cache) {
return cache.addAll([
'/foo.png', // URL
new Request('/bar.js') // Request
]);
})
.then(function() { /* 全てのレスポンスが保存されると resolve されます */ })
.catch(e) { /* エラーがあると reject されます */ }
機能的には複数の cache.add() を Promise.all() で待ち受けた場合と等価です。
Service Worker Hackathon などでは未実装 API のために coonsta/cache-polyfill の使用を推奨していましたが、今回の変更によってこのポリフィルが提供していたすべての API (Cache.add() と Cache.addAll()) が実装されたので、Chrome 46 以降では使用する必要はありません。
ちなみに Chrome 46 ではまだ Cache.matchAll() と CacheQueryOptions を使用できないので注意してください。Cache.matchAll() は既に実装されていますが、使用するにはフラグを有効にする必要があります (近々デフォルトで有効化される予定です)。CacheQueryOptions はまだ実装されていません。もしオプションが必要なユースケースがある場合は、是非バグトラッカーにコメントしてください。