Skip to content

v4.5.1 - Menu & site setting caching

Choose a tag to compare

@tallcms tallcms released this 15 May 01:44
· 10 commits to main since this release

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 MenuCache helper 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 / TallcmsMenuItem save/delete, on CmsPage slug / 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_name is 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 ImageColumn missing disk() 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 🎉
  • @jakublackoImageColumn disk fix (#93)
  • @dependabot — automated dependency updates (#95)