Update a cache without deleting other apps
See this course’s project requirements
A localhost reference-card app with an explicit asset cache, offline fallback, visible cache version and a controlled update/cleanup test.
Keep your working files in your own notebook or software. Save a private description, checklist, and work link in My Proof.
What to include
- Create an exact cache inventory and a visible list of excluded offline behavior.
- Record the local secure context and separate worker registration, installation, and page control.
- Produce cache-entry evidence and a controlled required-asset failure/repair record.
- Record actual cached reload and failed-network navigation fallback behavior separately.
- Produce a controlled update/activation record proving the new version and bounded cache cleanup.
- Deliver source, policy assertions, version evidence, performed browser tests, and scoped cleanup/limits.
Review and revise
Use these criteria to check your work and choose what to improve.
- The implementation or declared simulation follows the supplied contract and retains inspectable original inputs.
- Normal, boundary and rejected cases are recorded with expected versus observed results.
- The changed case has a correct explanation and does not rely on hidden state.
- The project includes source, outputs, instructions and honest tool, privacy and verification limits.
Want more background?
The idea in everyday life
In a fresh dedicated folder place index.html, cards.css, offline.html, sw.mjs, cache-policy.mjs and test-cache.mjs. Serve only that folder with python3 -m http.server 8765 --bind 127.0.0.1 and open http://localhost:8765/index.html.
A new worker can wait while old pages remain open. Cleanup must remove only this app’s obsolete cache names, not every cache under the origin.
Update a cache without deleting other apps — original worked practice
A new worker can wait while old pages remain open. Cleanup must remove only this app’s obsolete cache names, not every cache under the origin.
In a fresh dedicated folder place index.html, cards.css, offline.html, sw.mjs, cache-policy.mjs and test-cache.mjs. Serve only that folder with python3 -m http.server 8765 --bind 127.0.0.1 and open http://localhost:8765/index.html.
1. Step 1
In the unchanged v1 folder run node test-cache.mjs and retain its five-check result. Make a separate controlled copy; change VERSION in cache-policy.mjs to life-cards-v2 and change the first assert.equal version expectation in test-cache.mjs to life-cards-v2. Change the card text in index.html.
You should see: The original v1 five-check record is preserved; the copied source and test deliberately agree on v2.
A new worker can wait while old pages remain open. Cleanup must remove only this app’s obsolete cache names, not every cache under the origin.
2. Step 2
Serve the controlled copy at the same owned localhost origin, request a worker update in the inspector, then close all app tabs before reopening. Retain the original v1 folder and record.
You should see: Old clients are closed so the updated worker can activate under its normal lifecycle.
A new worker can wait while old pages remain open. Cleanup must remove only this app’s obsolete cache names, not every cache under the origin.
3. Step 3
Inspect the controller version reply and cache names; compare retained v1 evidence with active life-cards-v2 and changed cached card content.
You should see: The actual controller reply is life-cards-v2 and the cache contains the changed card; a Node result alone cannot establish this.
A new worker can wait while old pages remain open. Cleanup must remove only this app’s obsolete cache names, not every cache under the origin.
4. Step 4
In the changed copy run node test-cache.mjs. Its intentionally updated version assertion must match life-cards-v2; oldCaches still keeps unrelated and current-version names while selecting life-cards-v0. Record v2 policy checks separately from the actual browser lifecycle check.
You should see: The five policy assertions pass with the v2 expectation. This logic test does not prove browser activation or offline behavior.
A new worker can wait while old pages remain open. Cleanup must remove only this app’s obsolete cache names, not every cache under the origin.
What to finish
Produce a controlled update/activation record proving the new version and bounded cache cleanup.
Watch for this
Deleting unrelated caches or assuming edited source automatically replaced an active worker.
How can I tell I understand it?
Demonstrate the rule: A new worker can wait while old pages remain open. Cleanup must remove only this app’s obsolete cache names, not every cache under the origin. Use the supplied variant to distinguish a changed result from a broken implementation.
Quick knowledge check
Answer all 3 questions. Get at least 2 right and the lesson completes automatically.
You’ll get an explanation for each answer. Signed in? Your results save to your account.
Pass the check. We’ll save the progress.
Answer all 3 questions above and get at least 2 right. You can review the explanations and try again.
Go to the knowledge checkTools, templates, and lesson sources
Tools and templates
Tools open in a new tab so you can keep your place here.
Sources and further reading
Explore the references behind this lesson.
Source & access notes · checked 2026-10-01
Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.
Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.
Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.
Source & access notes · checked 2026-10-01
Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.
Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.
Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.
Report a problem with this lesson
Tell us what went wrong. Please leave out personal information and private project contents.