本記事は Chrome 46 の Service Worker のリリースノートを日本語に翻訳したものです。原文は service-worker-discuss グループで読むことができます。

以前のバージョンのリリースノートはこちら。


Chrome 46 の Service Worker 関係の変更は次のとおりです。

新機能

  • Page や Worker に対するリクエスト (non-subresource requests1) に対して CORS レスポンスが返せるようになりました。以前は CORS レスポンスを返した場合はネットワークエラーとなっていました (bug)。
  • [Cache API] Cache.addAll()2 が実装されました (feature)。
  • [Fetch API] Request.redirect が実装されました (feature)。
  • [Performance API] Performance Timeline API が Worker (Dedicated Worker, Shared Worker, Service Worker) で利用できるようになりました (feature)。
  • [Performance API] PerformanceResourceTiming.workerStart が実装されました (feature)。

API の変更

  • Clients.matchAll() が MRU order (most-recently-focused order) でクライアントを返すようになりました (feature, discussion)。
  • ServiceWorkerRegistration.update()3 が Promise を返すようになりました (feature)。
  • エスケープされた ‘/’ や ‘\’ が含まれたスクリプト URL やスコープが navigator.serviceWorker.register() に指定された場合に SecurityError ではなく TypeError で reject するようになりました (bug, discussion)。
  • [Cache API] Cache API が secure origins (HTTPS もしくは localhost) でのみ使用できるように制限されました (feature, discussion)。
  • [Fetch API] Request.context が削除されました (feature, discussion)。

改善点

  • CORS リクエストの処理が最適化されました。CORS リクエストがネットワークにフォールバックし、かつそのリクエストの URL の Origin がページの Origin と同じ時、そのリクエストはより早く処理されるパスを通るようになりました (bug)。

DevTools 関係の変更

Note: 最新の DevTools を試すために、Dev channel もしくは Canary の使用をおすすめします。

  • CORS フォールバックしたレスポンスが DevTools の Network タブ上で “(Service Worker Fallback)” と表示されるようになりました。以前は “(cancelled)” と表示されていました。詳しくはバグトラッカーに添付されたスクリーンショットを参照してください (bug)。

補足

  1. 以前は client requests と呼ばれていましたが、Request.context の削除に伴い non-subresource requests という用語になりました (spec change)。client requests については Chrome 44 のリリースノートを参照してください。 

  2. Cache.addAll() については「Chrome 46 に Cache.addAll() を実装した」という記事を書きました。 

  3. ServiceWorkerRegistration.update() については「Service Worker の update()」という記事を書きました。