Skip to content

Release v3.0.0-beta.4

Pre-release
Pre-release

Choose a tag to compare

@amarinsek amarinsek released this 07 Sep 10:06
cb51bcc

CacheOrchestrator 3.0.0-beta.4

Fourth v3 beta. This build adds tag-native Edge Cache orchestration with Cloudflare and Varnish providers, applies Client Cache Schedule to Edge freshness, purges Edge on Version and placement/policy transitions, and coordinates domain-setting invalidation across Output Cache, Data Cache, and Edge. Playground Lab 06 and Docker/Varnish coverage exercise the full path.

v3 remains a full redesign relative to 1.x / 2.x. Upgrade notes for this beta focus on the diagnostics header rename and the new optional Edge packages.

Changelog

Added

  • CacheOrchestrator.Edge — per-domain edge freshness, opaque tag projection, provider contracts, replaceable queue, coalescing, provider-sized batches, retries, metrics, and graceful drain.
  • CacheOrchestrator.Edge.CloudflareCache-Tag, edge-only cache control, startup validation, and authenticated tag purge.
  • CacheOrchestrator.Edge.Varnishxkey, edge TTL/grace metadata, protected PURGE, capability validation, and a documented VCL contract.
  • Docker integration test (official Varnish + nginx origin) verifying MISSHIT → tag PURGEMISS.
  • Playground Lab 06 (Varnish-backed public Playground, internal origin, Redis Fusion L2, Admin Console, Prometheus) plus Edge guide and composition/reference updates.
  • Minimal custom Edge provider example (sync response-header boundary, background invalidation, registration, capabilities, durable-outbox responsibility).
  • Domain Version change observer contract for optional integrations; Domains:{name}:Edge:PurgeOnStartup (default false, inherits via DomainDefaults:Edge).
  • Edge coverage for Client Cache Schedule phases (Calm / Approaching / Hold), Version purge, and rescheduling with Cloudflare and real Varnish.
  • Admin settings applyImmediately (API + HttpBus settings command) and an Apply immediately control in Admin Console settings operations.
  • Documented activation and invalidation rules for every domain-setting group.

Changed

  • ASP.NET Core response pipeline exposes finalized cache response metadata to optional contributors; contributors apply once even when response start precedes the Output Cache storage callback.
  • Invalidation observer context identifies local vs remote-cluster operations; HttpBus avoids duplicate Edge invalidations (origin queues external purge; peers apply local OC/DC only).
  • CacheOrchestrator diagnostics and internal control headers use the library-specific X-CacheOrchestrator prefix.
  • Edge storage eligibility is limited to GET and HEAD; POST CacheIdentity remains an origin-side Output Cache feature.
  • Edge fresh TTL follows Client Cache Schedule for Edge-enabled domains (Edge:TtlSeconds max, ClientCache:TtlMinSeconds floor) without mutating configured TTL values; ScheduledUpdateUtc changes affect subsequent origin responses only (no automatic Edge purge).
  • Runtime and configuration Version changes enqueue an Edge domain-tag purge for Edge-enabled domains; Edge reload compares sequentially and purges the previous placement when Edge is disabled, removed, or moved.
  • OC/DC key-shaping settings participate in deterministic policy generations; Edge configuration reload purges newly enabled/new placements and unsafe response-policy changes.
  • Default playground stays core-focused (registers Varnish only when Cache:EdgeInstances exists, as in Lab 06); Playground Edge badges use EDGE-HIT / EDGE-REFRESH / EDGE-MISS.
  • Client cache busting / invalidation documentation updated; repository URLs point at the CacheOrchestrator GitHub org.
  • Root README NuGet table points at 3.0.0-beta.4, including the Edge packages.
  • CI build/publish workflows run Edge unit tests on both TFMs, Varnish Docker integration, Edge package smoke, and publish all 14 NuGet libraries (+ symbols).

Fixed

  • Existing Edge responses are no longer left behind after Version cutovers or Edge disable/placement transitions.
  • Changed vary and shared-response safety policy no longer reads Edge or server-cache entries created under an incompatible policy.
  • Multiple setting changes coalesce into at most one invalidation per affected cache layer.

Removed

  • None

Deprecated

  • None

Security

  • Edge response keys are fixed-length opaque hashes; raw entity IDs and credentials are excluded from provider-safe telemetry.
  • Responses whose complete tag footprint exceeds the provider header budget are made edge no-store rather than partially tagged.
  • Shared Edge entries are purged when a policy becomes private/no-store, authenticated responses become forced-private, or native header-vary safety changes.
  • Lab 06 uses an explicit lab-only purge key; production docs require a private purge endpoint (ACL, mTLS, authenticating proxy, or API key).

Breaking changes (prerelease)

  • Diagnostics header renamed from X-Cache to X-CacheOrchestrator; related Admin, HttpBus, staged-tag, and Edge control headers use the same prefix.
  • Public type XCacheHeaderFormatter renamed to CacheOrchestratorHeaderFormatter.
  • Further additive Edge/API changes may still occur until stable 3.0.0.

Packages in this release

All library packages below use version 3.0.0-beta.4.

Package Role
CacheOrchestrator Meta: AspNetCore + FusionCache
CacheOrchestrator.Core HTTP-free core
CacheOrchestrator.AspNetCore Output Cache, Client Cache, Admin API, identity
CacheOrchestrator.FusionCache FusionCache Data Cache provider
CacheOrchestrator.HybridCache HybridCache Data Cache provider
CacheOrchestrator.Redis Meta Redis (OC store + Fusion L2 / backplane)
CacheOrchestrator.AspNetCore.Redis Redis Output Cache store only
CacheOrchestrator.FusionCache.Redis Redis Fusion L2 / backplane only
CacheOrchestrator.HttpBus HTTP cluster bus
CacheOrchestrator.EFCore.Invalidation EF Core SaveChanges invalidation
CacheOrchestrator.Edge Provider-neutral Edge contracts and worker
CacheOrchestrator.Edge.Cloudflare Cloudflare Cache-Tag + purge
CacheOrchestrator.Edge.Varnish Varnish xkey + PURGE

CacheOrchestrator.Redis.Shared is published as transitive support — do not reference it directly.
Admin Console App: Docker / GHCR (ghcr.io/cacheorchestrator/cacheorchestrator-admin-console), not a NuGet package (latest image tag is not applied on prereleases).

Install

Usual web app start:

dotnet add package CacheOrchestrator --version 3.0.0-beta.4

Edge (example: Varnish):

dotnet add package CacheOrchestrator --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.Edge.Varnish --version 3.0.0-beta.4

Full set (same version):

dotnet add package CacheOrchestrator --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.Core --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.AspNetCore --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.FusionCache --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.HybridCache --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.Redis --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.AspNetCore.Redis --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.FusionCache.Redis --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.HttpBus --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.EFCore.Invalidation --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.Edge --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.Edge.Cloudflare --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.Edge.Varnish --version 3.0.0-beta.4

You may use --prerelease instead of an explicit --version when this is the latest prerelease on nuget.org. Composition: packages guide · Edge guide · README package list.