Repository navigation
Account for received Age and resident time in cache freshness - #480
Closed
blouirts123 wants to merge 1 commit into
Closed
blouirts123 wants to merge 1 commit into
blouirts123 wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
A response received with
Age: 120andCache-Control: max-age=60can 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
unparseablein 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.