v4.5.1 - Menu & site setting caching
Performance
- Cache the resolved menu tree per location / locale / host so repeated
menu()calls don't rebuild the same structure on every request. Active-item state is overlaid per-request so the cached tree still highlights correctly for the current URL. (#96) - Add a
MenuCachehelper that uses tagged cache when the store supports it, with a versioned-key fallback for non-tag stores. (#96) - Invalidate the menu cache on
TallcmsMenu/TallcmsMenuItemsave/delete, onCmsPageslug / parent / homepage changes, and on writes to URL-affecting site settings (site_type,i18n_enabled,default_locale,hide_default_locale,i18n_locale_overrides). (#96) - Memoize site setting lookups within a request and negative-cache missing values so absent settings don't re-query on every read. (#96)
- Clear request-scoped and static site-name memos when
site_nameis written, so subsequent reads in the same request (and across requests on long-running workers) return the new value. (#96)
Reported timings on a large CMS page: ~1.7–2.0s → ~240–260ms with Redis as the persistent cache store.
Bug Fixes
- Fix
ImageColumnmissingdisk()in CmsPages and CmsPosts tables, with regression tests. (#93)
Dependencies
- Bump axios from 1.15.0 to 1.15.2. (#95)
Documentation
- Restructure the multisite setup guide as a layered SaaS setup flow
- Link multisite, billing, and architecture guides from the docs README
- Drop the manual migrate step from multisite install instructions
- Document the Rich Editor Phase 2 surface in
ref-rich-editor.md
Compatibility
No breaking changes. Cache invalidation is automatic; the menu cache requires a persistent cache store (Redis, file, database) to retain benefit across requests — the array driver only persists within a single request.
Contributors
Thanks to the following contributors whose work shipped in this release:
- @VaclavKlima — performance caching work (#96), first-time contributor 🎉
- @jakublacko —
ImageColumndisk fix (#93) - @dependabot — automated dependency updates (#95)