Chrome 46 の Service Worker の変更点
本記事は 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)。
補足
-
以前は client requests と呼ばれていましたが、
Request.context
の削除に伴い non-subresource requests という用語になりました (spec change)。client requests については Chrome 44 のリリースノートを参照してください。 ↩ -
Cache.addAll()
については「Chrome 46 に Cache.addAll() を実装した」という記事を書きました。 ↩ -
ServiceWorkerRegistration.update()
については「Service Worker の update()」という記事を書きました。 ↩