Add ServiceWorker caching for static assets #5524
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a less ambitious re-do of #3052.
Instead of trying to cache all possible files, this PR just adds the static files (JS, CSS, fonts, etc.) to the Service Worker cache.
We already recommend
cache-control: immutable
in the Production guide, but using offline-plugin has additional benefits:caches
emoji_picker.js
cache-control: immutable
such as Safari (which will fall back from ServiceWorker to AppCache)I also went ahead and removed
public_timeline.js
andcommunity_timeline.js
from<link rel=preload>
because I don't believe they're needed anymore, since the SW will fetch and cache them on installation. Instead we only preload the stuff we would need for first page load, which iscompose
+home
+notifications
+getting_started
.This is live on https://malfunctioning.technology for testing. To see what files are cached and how, check out https://malfunctioning.technology/sw.js (pretty-printed below 😃) and https://malfunctioning.technology/packs/appcache/manifest.appcache. The offline-plugin docs can help explain what the different sections are.
Relevant part of
sw.js
pretty-printed: