A busy day is a poor time to discover that every visitor triggers the same third-party API request.

That was the dependency described in the Hades article: a video archive supplied by the YouTube API, beside a theater for watching several live viewpoints. The list needed refreshing. It did not need a fresh upstream fetch for every person who opened the page.

01 / FIELD NOTESWhere this showed up in Hades

The published account describes a scheduled function that refreshes the archive once a day and caches the result. Page loads read the saved list.

The change separates two events: someone visits the site, and the site refreshes its archive metadata. The first no longer has to cause the second.

This is about the archive list, not relaying or caching the live streams. It is also not proof that every part of the site has unlimited capacity.

02 / FIELD NOTESMake the request count visible

INTERACTIVE / REQUEST ARITHMETIC

Traffic and refreshes are different clocks.

Change the assumptions. These numbers are not measured Hades traffic or a provider quota.

FETCH ON EVERY VISIT
Page viewUpstream API
1,000upstream requests / example day
REFRESH ON A SCHEDULE
Scheduled refreshSaved list
1upstream request / example day
Page views still read the saved list.1,000 cache reads
01 / Refresh02 / Save03 / Read

Fresh result: the example has a saved list. Its freshness still depends on the last successful refresh.

Arithmetic under selected assumptions; not a load test, cost guarantee or reconstruction of an undocumented error handler.
Read the figure without interaction

Direct mode: visits multiplied by calls per refresh. Scheduled mode: refreshes multiplied by calls per refresh. Cache reads still equal visits. An old result needs honest freshness information; a missing result needs an explicit empty/error experience. The source does not prove those recovery implementations.

The numbers in this experiment are assumptions you control, not measurements of Hades. “Calls per refresh” allows for a refresh that needs several upstream requests. The source does not give that count.

Within the example, fetching on every page view costs visits × calls per refresh upstream requests. Scheduled fetching costs refreshes × calls per refresh. Cache reads still grow with visits; they have not vanished because the upstream line is flatter.

Editorial clarification: the original article described equal backend cost for ten and ten thousand visitors. That is too broad. Separating archive refreshes can hold this particular upstream operation steady, while cache reads, compute, bandwidth, and other work still vary. Those remaining costs and limits need their own checks.

03 / FIELD NOTESThe general pattern

The original article identifies three ingredients: repeated fresh work, a limit or cost attached to it, and enough traffic to expose the dependency.

A video list is a good example because many visitors may need the same information. A product catalog can have a similar shape. But not every response is interchangeable: an account-specific record or a time-sensitive action needs its own freshness and access rules.

That is a design question before it is a caching question. What can safely be reused, who can read it, and how long may it be out of date?

04 / FIELD NOTESA saved result still needs failure behavior

A refresh can succeed, fail while an older result remains, or fail before any result exists. Those cases should not all produce the same “up to date” label.

Use the figure's cache-state controls to inspect the difference. They are planning scenarios, not a reconstruction of Hades's undocumented error handler. The supplied article does not establish retry behavior, stale-data retention, or how the very first cache entry is populated.

05 / FIELD NOTESQuestions to ask before the busy day

Start with the page people are most likely to visit. Find out whether it makes a fresh third-party request on every load, what that request costs or consumes, and what the visitor sees when it fails.

Then inspect the refresh path just as carefully as the read path. Who refreshes the data? Can overlapping refreshes multiply the work? Is an old result shown honestly? What happens when nothing is cached?

The useful outcome is not “we added caching.” It is knowing which dependency has been removed from the page-view path, and which limits still need attention.

Read the Hades project for the surrounding viewing experience, or the progressive-enhancement article for the separate question of what a page should do when an enhancement is unavailable.

Source, dates, and what this page verifies

Based on the complete supplied project/article account. Original publication dates and source URLs are retained. This is an edited reference, not a published update or a new audit of the original application.

Official technical clarifications checked September 29, 2026 are explicitly marked and linked beside the relevant passages. They are distinct from the original author's historical claims. The jq and Docker excerpts remain unchanged and carry their source limitations.

New interactive examples are bounded local teaching tools; they do not scan a website, process credentials, contact AWS, build an image or report a production measurement. No repository, staff account, service terms, résumé, price or live backend was changed.

See docs/batch-6/SOURCE-REVIEW.md for the separation of source-derived claims, external documentation and authored illustrations.

Original published source ↗