You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* perf: cap per-client concurrency on /person/ and /api/v1/
Keyed on the Cloudflare client address, with an empty key for every other
path so only these two prefixes are limited.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* perf: query the two authorship tables separately in Person.rfcs()
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* perf: avoid table scans and per-alias queries in lookup_persons
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* perf: assemble the profile page's data in the view
Gathers the RFC publication dates, reference counts and replaced-draft set for
every listed person in one query each, rather than a query per table cell, and
evaluates each per-person list once instead of on every template reference.
The expired Internet-Drafts heading now counts the drafts it lists; it counted
the replaced ones the list omits. Roles with the same name sort by group
acronym instead of by whatever order the query returned.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* perf: cache each rendered profile section
A repeat view of a profile, including the revalidation behind a conditional
request, now costs neither the queries nor the render. Sections are keyed on
person and date rather than position on the page, so the per-section element
ids move from a loop counter to the person's id.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* test: guard the profile page's query count and section cache
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* revert: perf: cap per-client concurrency on /person/ and /api/v1/
This reverts commit fed51f0.
* refactor: make the profile section cache lifetime a setting
PERSON_PROFILE_CACHE_SECONDS, overridable from the environment in the k8s
deployment.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: stop dating the profile page's empty-section messages
The dates claimed a precision the page does not have: sections are cached
independently, so the data behind two of them can differ by a cache lifetime
while both printed the same date. Without them nothing in a section depends on
when it was rendered, so the cache key no longer needs the date either.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
0 commit comments