Chrome 46 に CacheStorage API の Cache.addAll() を実装したのでその紹介です。

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 はまだ実装されていません。もしオプションが必要なユースケースがある場合は、是非バグトラッカーにコメントしてください。