Skip to content

Account for received Age and resident time in cache freshness - #480

Closed
blouirts123 wants to merge 1 commit into
psf:masterfrom
blouirts123:fix/response-age-accounting
Closed

blouirts123 wants to merge 1 commit into
psf:masterfrom
blouirts123:fix/response-age-accounting

Conversation

@blouirts123

Copy link
Copy Markdown

A response received with Age: 120 and Cache-Control: max-age=60 can currently be reused as fresh when its Date is recent: freshness only considers elapsed time since Date.

Calculate corrected initial age from Date, received Age and request/response delay, then advance it by resident time and emit the current Age on reuse. Capture timing per response at header receipt so delayed streaming consumption is counted correctly. Refresh the baseline after a 304. Optional metadata in the existing cc=4 record preserves timing without changing serializer signatures; old records still load, and valid Age entries lacking timing metadata require revalidation. Overflow uses the RFC 9111 infinity sentinel conservatively, including permanent redirects and unusually large max-age values.

Validation: full suite: 135 passed; an independent nine-case harness covers streaming delay, legacy records, 304 updates, long numeric input and overflow. Ruff and full-package mypy pass. Existing codespell findings for unparseable in unchanged test comments remain; the test run can report a Windows Cheroot teardown warning.

Reference: RFC 9111 sections 1.2.2 and 4.2.3.

@psf psf locked and limited conversation to collaborators Oct 16, 2026
@woodruffw woodruffw closed this Oct 16, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants