One typical task that will take place in the activate callback is cache management. The main reason it is in addition crucial to repeat this within the callback that is activate because if perhaps you were to get rid of any old caches within the install action, any old solution worker, which will keep control over all of the present pages, will instantly stop having the ability to provide files from that cache.
Suppose we now have one cache called ‘my-site-cache-v1’ , and we also realize that we should separate this out into one cache for pages and something cache for websites. What this means is within the step that is install’d produce two caches, ‘pages-cache-v1’ and ‘blog-posts-cache-v1’ as well as in the activate action we’d would you like to delete our older ‘my-site-cache-v1’ .
The following rule would do that by looping through every one of the caches into the service worker and deleting any caches that are not defined within the cache allowlist.
Rough edges and gotchas
These items is truly new. Here is an accumulation conditions that block the way. Ideally this part could be deleted quickly, but also for now they are well well worth mindful that is being of.
If installation fails, we are not great at suggesting about any of it
The defaults of fetch()
No qualifications by standard
If you use fetch , by standard, needs will not include qualifications such as for instance snacks. If you’d like qualifications, call instead:
This behaviour is on function, and it is perhaps much better than XHR’s more default that is complex of qualifications in the event that Address is same-origin, but omitting them otherwise. Fetch’s behavior is much more like many CORS demands, such as for instance , which never ever delivers snacks until you opt-in with .
Non-CORS fail by default
By standard, fetching a reference from the party that is third will fail if it does not help CORS. You could add a no-cors solution to the Request to conquer this, even though this can cause an ‘opaque’ reaction, and that means you defintely won’t be in a position to inform in the event that response was effective or perhaps not.
Managing responsive pictures
The srcset feature or the
element will select the many appropriate image asset at run some time produce a community demand.
For solution worker, in the event that you desired to cache a picture throughout the install action, you’ve got a couple of choices:
Install all the images that the
element and the srcset attribute shall request.
Realistically you ought to be selecting choice 2 or 3 since getting all the pictures could be a waste of space for storage.
Let’s hypothetically say you get for the res that are low at install time and you also would like to try and recover greater res pictures through the system as soon as the page is packed, if the high res pictures fail, fallback towards the low res variation. This will be dandy and fine to accomplish but there is however one issue.
In a srcset image, we would involve some markup such as this:
When we take a 2x display, then a web browser will choose to down load image-2x.png , offline you can .catch( whenever we are) this return and request image-src.png rather whether or not it’s cached, though the web web browser will expect a picture that takes into consideration the extra pixels for a 2x display, so that the image will be as 200×200 CSS pixels in the place of 400×400 CSS pixels. The way that is only that is setting a hard and fast height and width regarding the image.
elements getting used for art direction, this becomes significantly more difficult and can rely greatly on what your pictures payday loans Delaware are made and utilized, however you could possibly make use of a approach that is similar srcset.
Get the full story
There is certainly a range of documents on solution worker being maintained which you might find helpful.
If you can get stuck then please post the questions you have on StackOverflow and make use of the ‘service-worker’ label to make certain that we are able to keep a tabs on problems and take to which help whenever possible.