v1.2.1 — Parish Events
Server-load release: every change reduces uncached PHP work per request, prompted by a brief origin overload behind Cloudflare.
Changed
- The ICS subscribe feed is now cached.
/?pe_ics=feedwas rebuilt from the database on every poll and sent with no-cache headers — and subscribed calendar apps poll it indefinitely. The feed body is now held in a transient (invalidated by imports and content edits, and at each day boundary) and served withCache-Control: public, max-age=900, s-maxage=3600plus anETag, answering unchanged polls with304 Not Modified. See the new launch-checklist step for caching it at the CDN edge. Per-event.icsdownloads are unchanged. - Calendar URL parameters are normalized before fragment caching. Out-of-range
pe_monthvalues and unknownpe_groupvalues (from stale or crafted URLs) previously each minted a fresh cache entry and paid a full uncached render; they now collapse onto the existing clamped/unfiltered fragment. An unknown group shows the full calendar instead of an empty one. The group list used by the filter dropdown is also cached. - Imports issue far fewer queries. The importer now resolves all existing events with one query up front (instead of one lookup per feed row), warms the meta cache for the posts it will touch in one pass, and skips redundant "last seen" bookkeeping writes on back-to-back runs. No behavior change to what gets created, updated, removed, or restored.
Full Changelog: v1.2.0...v1.2.1