[FEATURE]: Add Cloudflare KV cache adapter
enhancement
### Feature hasn't been suggested before.
- [x] I have verified this feature I'm about to request hasn't been suggested before.
### Describe the enhancement you want to request
## Describe the enhancement
Drizzle currently has first-party query caching support through `upstashCache()` and `.$withCache()`.
It would be useful to also have a first-party Cloudflare KV cache adapter for Cloudflare-native apps using Drizzle with D1 / Workers.
Example API:
```ts
import { cloudflareKVCache } from "drizzle-orm/cache/cloudflare-kv";
const db = drizzle(env.DB, {
cache: cloudflareKVCache(env.QUERY_CACHE, {
strategy: "explicit",
prefix: "drizzle",
config: {
ex: 300,
},
}),
});
````
This would let users cache read-heavy queries without adding Upstash Redis as an extra external dependency when they are already deploying on Cloudflare.
This is not asking for KV to become a database driver. It is specifically for Drizzle query caching.
KV has some important limitations, so the adapter should document that it is best for stale-tolerant, read-heavy cache use cases. Cloudflare KV is eventually consistent and has a minimum expiration TTL of 60 seconds, so lower TTL values should probably be clamped or rejected with a clear error.
Possible implementation:
* store query results under keys like `<prefix>:query:<queryHash>`
* optionally maintain table/tag index keys for invalidation
* support `.$withCache()`
* support `db.$cache.invalidate(...)` where practical
This would make Drizzle nicer to use in Cloudflare-first stacks using Workers, D1, KV, Durable Objects, and R2.
1 条评论