-
Notifications
You must be signed in to change notification settings - Fork 388
Require the RegExp request-matching syntax (without options.origin) in runtimeCaching #108
Comments
This should be resolved in https://github.com/GoogleChrome/sw-precache/releases/tag/3.2.0. Can you confirm? |
Mmmmh, I could not make it work. I updated sw-precache and I built a project with that syntax in my gruntfile: Does not work properly at run time, as the 'googleapis' cache collects every fetch. The service-worker.js file generated by the grunt still contains that expression (which "origin" attribute is wrong and does not filter the 'googleapis.com' domain: it is empty - weird !): I do not think my syntax is wrong (it works in mint sw-toolbox), but I'll be glad if you could check. |
Sorry for the misinformation re: https://github.com/GoogleChrome/sw-precache/releases/tag/3.2.0 I think I see what's going on, and it should be able to work around this if you use the
(feel free to tweak that RegExp if you need to be more restrictive). The whole different-behaviors-when-using-strings-vs.- I'll leave this open to track that change. |
Hey,
I tried to configure external domain caching through the runtimeCaching feature of sw-precache.
I used the options syntax for the external domain conf passed to the array runtimeCaching:
{ urlPattern: /\/(.*)/, handler: 'fastest', options: { cache: { name: 'googleapis', maxAgeSeconds: 864000 }, origin: /\.googleapis\.com$/ } }
It was translated after grunt execution into (in the service-worker.js):
toolbox.router.get(/\/(.*)/, toolbox.fastest, {"cache":{"name":"googleapis","maxAgeSeconds":864000},"origin":{}});
As you can see, the origin parameter is an empty object and then, at runtime, everything is cached into the "googleapis" cache. Which is wrong :)
I then tried to declare the origin with quotes:
origin: '/\.googleapis\.com$/'
After grunt execution, it generated :
toolbox.router.get(/\/(.*)/, toolbox.fastest, {"cache":{"name":"googleapis","maxAgeSeconds":864000},"origin":"/.googleapis.com$/"});
Looks better (even if it changed my regExp).
But at runtime, all requests of my own domain get cached in the 'googleapis' cache. Even the already precached ones.
It works as if the origin had no effect (or is wrong, which is expected since the regExp has been changed).
I tried the same configuration straight into a mint sw-toolbox (outside of sw-precache) with this declaration:
toolbox.router.get('/(.*)', toolbox.fastest, { cache: { name: 'googleapis', maxAgeSeconds: 864000 }, origin: /\.googleapis\.com$/ });
It works perfectly, only files from the googleapis.com domain are stored in the 'googleapis' cache.
My own domain files are stored in other caches, as expected.
I may be completely wrong, but it seems that the origin attribute is not well accepted by sw-precache 3.1.1 in the runtimeCaching.
A turnaround I found, was to put a mint sw-toolbox (3.1.1) and a custom-rules.js (for my rules) file in the importScript part of sw-precache. It works fine that way, but it is not a 'all-in-one' grunt approach.
It leads me to the question:
Does the runtimeCaching (with sw-toolbox embedded) feature support the origin option of the sw-toolbox ? if so, what is the syntax ?
Thanks !
Chenav
The text was updated successfully, but these errors were encountered: