Cleaned dead code and updated documents
This commit is contained in:
@@ -16,14 +16,22 @@ standardized replacement exists.
|
||||
## Resolution: HMAC cache key (JSON-canonical form)
|
||||
|
||||
```
|
||||
HMAC-SHA256(secret, JSON.stringify({
|
||||
ctx:{context}:HMAC-SHA256(secret, json.dumps({
|
||||
"c": context,
|
||||
"p": sorted_params,
|
||||
"p": sorted_params, // values normalized to JSON-native strings
|
||||
"r": rev,
|
||||
"u": user_id // omitted for public content
|
||||
}, sort_keys=True))
|
||||
"u": user_id // omitted for public content
|
||||
}, sort_keys=True, separators=(",", ":")))
|
||||
```
|
||||
|
||||
`derive_cache_key(secret, context, params, user_id=None, rev=0)` →
|
||||
`"ctx:{context}:{hmac_hex}"`. The `ctx:{context}:` prefix lets broad
|
||||
purge SCAN by prefix. Param values are normalized for cross-language
|
||||
consistency (`True`→`"true"`, `None`→`"null"`) before stringification.
|
||||
Implemented in `cores/mizan-python/src/mizan_core/cache/keys.py` and
|
||||
`backends/mizan-ts/src/cache/keys.ts` (`deriveCacheKey`); pin tests
|
||||
verify identical output.
|
||||
|
||||
### Key derivation rules
|
||||
|
||||
- **Public content** — URL path + query params (standard CDN).
|
||||
@@ -45,20 +53,24 @@ Mizan claims on `X-Mizan-Token` header. Replaces the old
|
||||
**Not a compiled binary ABI. Not a pluggable Python protocol.**
|
||||
|
||||
Each backend adapter (Python, TypeScript, future PHP/C#/Go)
|
||||
implements the cache protocol in its own language, backed by Redis.
|
||||
implements the cache protocol in its own language.
|
||||
**Conformance verified by a shared test suite.**
|
||||
|
||||
### Required operations
|
||||
|
||||
- `cache_get`
|
||||
- `cache_put`
|
||||
- `cache_purge`
|
||||
- `cache_purge_user`
|
||||
- `cache_purge` (scoped recomputes the key; broad SCANs the
|
||||
`ctx:{context}:*` prefix)
|
||||
|
||||
### Storage
|
||||
|
||||
Redis only. Handles persistence, cross-worker sharing, crash
|
||||
recovery.
|
||||
Two backends behind a `CacheBackend` protocol
|
||||
(`mizan_core/cache/backend.py`):
|
||||
|
||||
- `MemoryCache` — dict-based, for testing.
|
||||
- `RedisCache` — production; persistence, cross-worker sharing, crash
|
||||
recovery. Broad purge via SCAN, delete via UNLINK.
|
||||
|
||||
## Deploy invalidation
|
||||
|
||||
|
||||
Reference in New Issue
Block a user