sw-precache icon indicating copy to clipboard operation
sw-precache copied to clipboard

Option for caching fewer resources when `Save-Data: on` header is set

Open ebidel opened this issue 8 years ago • 4 comments

For content heavy sites (images, videos, etc.), precaching can introduce increased bandwidth consumption for slower connections.

sw-precache should have an option where the sw respects the Save-Data: on header if it is set by the client and precaches fewer resources. How this opt-in actually works is open for discussion. Perhaps users could mark critical resources. Other resources listed in the precache list are deemed optional.

https://developers.google.com/web/updates/2016/02/save-data

ebidel avatar Jul 18 '16 23:07 ebidel

I like it! And then we can continue serving the content cache-first once it actually gets requested from the network because it's used for the first time on a page.

(FWIW, this change to skip cache-busting when the developer indicates that they're properly versioning their resources will help cut down on the precache data transfer, too.)

jeffposnick avatar Jul 19 '16 14:07 jeffposnick

Want me to take a stab? I need to get more familiar with the lib codebase. Pointers are appreciated!

On Tue, Jul 19, 2016, 7:07 AM Jeffrey Posnick [email protected] wrote:

I like it! And then we can continue serving the content cache-first once it actually gets requested from the network because it's used for the first time on a page.

(FWIW, this change https://github.com/GoogleChrome/sw-precache/commit/d06def1171704f2ecbbb29d2a4a902ac977ae66e to skip cache-busting when the developer indicates that they're properly versioning their resources will help cut down on the precache data transfer, too.)

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/GoogleChrome/sw-precache/issues/145#issuecomment-233643822, or mute the thread https://github.com/notifications/unsubscribe-auth/AAOigO-Fr13Fo9BeOKzJcJK4ST1DzTwIks5qXNn_gaJpZM4JPQJK .

ebidel avatar Jul 19 '16 16:07 ebidel

If you want to dip your toes in, sure!

I'd imagine it would involve creating a new option and treating it in a similar fashion to staticFileGlobs, except that instead of using its matches to populate precacheConfig, you'd create something like a new optionalPrecacheConfig, which you'd then pass into the template rendering function.

And then in the template, you'd need an insertion point for the new optionalPrecacheConfig. Inside the install handler you could check the value of Save-Data: on header... but wait, that header is only set on incoming Requests within a fetch event, and isn't available within the install handler, which is where all the precaching is done. 😦

Let me ask around a bit if there are ways to detect the same information supplied by Save-Data: on before the first fetch event is made.

jeffposnick avatar Jul 19 '16 20:07 jeffposnick

See https://github.com/WICG/netinfo/issues/42, which tracks exposing the information that we'd need to make that determination inside the install handler.

jeffposnick avatar Jul 20 '16 13:07 jeffposnick