Release v3.0.0-beta.4
Pre-releaseCacheOrchestrator 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.Cloudflare—Cache-Tag, edge-only cache control, startup validation, and authenticated tag purge.CacheOrchestrator.Edge.Varnish—xkey, edge TTL/grace metadata, protected PURGE, capability validation, and a documented VCL contract.- Docker integration test (official Varnish + nginx origin) verifying
MISS→HIT→ tagPURGE→MISS. - 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(defaultfalse, inherits viaDomainDefaults: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-CacheOrchestratorprefix. - Edge storage eligibility is limited to
GETandHEAD; POSTCacheIdentityremains an origin-side Output Cache feature. - Edge fresh TTL follows Client Cache Schedule for Edge-enabled domains (
Edge:TtlSecondsmax,ClientCache:TtlMinSecondsfloor) without mutating configured TTL values;ScheduledUpdateUtcchanges 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:EdgeInstancesexists, as in Lab 06); Playground Edge badges useEDGE-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-storerather 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-CachetoX-CacheOrchestrator; related Admin, HttpBus, staged-tag, and Edge control headers use the same prefix. - Public type
XCacheHeaderFormatterrenamed toCacheOrchestratorHeaderFormatter. - 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.4Edge (example: Varnish):
dotnet add package CacheOrchestrator --version 3.0.0-beta.4
dotnet add package CacheOrchestrator.Edge.Varnish --version 3.0.0-beta.4Full 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.4You 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.