Cache radar tile images with a Service Worker
public/sw.js: network-falling-back-to-cache for RainViewer radar tile requests specifically (nothing else — the app itself is served by the same local server that's already the offline resource in the van, so there's no app-shell to precache). Registered from layout.erb, a no-op where it can't register (insecure context) rather than an error. Verified: registers and controls the page, tiles get cached on a normal fetch, cache.match() correctly retrieves them by the same request. CDP's network-blocking simulation doesn't interact cleanly with Service Worker fetch interception (a known tooling quirk, not specific to this), so the actual offline fallback path is the standard try/catch pattern, verified by code review rather than a simulated-offline screenshot.
This commit is contained in:
1 parent
a98b8dbd47
commit
5caf865fc8
3 files changed
+74
-1
No files matched your search
@@ -9,6 +9,16 @@
|
||||
</head>
|
||||
<body>
|
||||
<%= yield %>
|
||||
<script>
|
||||
// Caches radar tile images (see public/sw.js) so the last-seen frames
|
||||
// stay visible once the network is actually gone. Silently a no-op
|
||||
// where it can't register — insecure-context LAN access without a
|
||||
// reverse proxy in front, for instance — same as radar caching simply
|
||||
// not working there; nothing else on the page depends on this.
|
||||
if ("serviceWorker" in navigator) {
|
||||
navigator.serviceWorker.register("/sw.js").catch(() => {});
|
||||
}
|
||||
</script>
|
||||
<script src="/vendor/pmtiles/pmtiles.js"></script>
|
||||
<script src="/vendor/protomaps-themes-base/protomaps-themes-base.js"></script>
|
||||
<%# Vendored libs above don't change between deploys, so they're left
|
||||
|
||||
Reference in new issue
Block a user