mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2026-03-20 06:11:27 -07:00
170 lines
3.6 KiB
Markdown
170 lines
3.6 KiB
Markdown
# Cache Reserve Configuration
|
|
|
|
## Dashboard Setup
|
|
|
|
**Minimum steps to enable:**
|
|
|
|
```bash
|
|
# Navigate to dashboard
|
|
https://dash.cloudflare.com/caching/cache-reserve
|
|
|
|
# Click "Enable Storage Sync" or "Purchase" button
|
|
```
|
|
|
|
**Prerequisites:**
|
|
- Paid Cache Reserve plan or Smart Shield Advanced required
|
|
- Tiered Cache **required** for Cache Reserve to function optimally
|
|
|
|
## API Configuration
|
|
|
|
### REST API
|
|
|
|
```bash
|
|
# Enable
|
|
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/cache/cache_reserve" \
|
|
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
|
|
-d '{"value": "on"}'
|
|
|
|
# Check status
|
|
curl -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/cache/cache_reserve" \
|
|
-H "Authorization: Bearer $API_TOKEN"
|
|
```
|
|
|
|
### TypeScript SDK
|
|
|
|
```bash
|
|
npm install cloudflare
|
|
```
|
|
|
|
```typescript
|
|
import Cloudflare from 'cloudflare';
|
|
|
|
const client = new Cloudflare({
|
|
apiToken: process.env.CLOUDFLARE_API_TOKEN,
|
|
});
|
|
|
|
// Enable Cache Reserve
|
|
await client.cache.cacheReserve.edit({
|
|
zone_id: 'abc123',
|
|
value: 'on',
|
|
});
|
|
|
|
// Get Cache Reserve status
|
|
const status = await client.cache.cacheReserve.get({
|
|
zone_id: 'abc123',
|
|
});
|
|
console.log(status.value); // 'on' or 'off'
|
|
```
|
|
|
|
### Python SDK
|
|
|
|
```bash
|
|
pip install cloudflare
|
|
```
|
|
|
|
```python
|
|
from cloudflare import Cloudflare
|
|
|
|
client = Cloudflare(api_token=os.environ.get("CLOUDFLARE_API_TOKEN"))
|
|
|
|
# Enable Cache Reserve
|
|
client.cache.cache_reserve.edit(
|
|
zone_id="abc123",
|
|
value="on"
|
|
)
|
|
|
|
# Get Cache Reserve status
|
|
status = client.cache.cache_reserve.get(zone_id="abc123")
|
|
print(status.value) # 'on' or 'off'
|
|
```
|
|
|
|
### Terraform
|
|
|
|
```hcl
|
|
terraform {
|
|
required_providers {
|
|
cloudflare = {
|
|
source = "cloudflare/cloudflare"
|
|
version = "~> 4.0"
|
|
}
|
|
}
|
|
}
|
|
|
|
provider "cloudflare" {
|
|
api_token = var.cloudflare_api_token
|
|
}
|
|
|
|
resource "cloudflare_zone_cache_reserve" "example" {
|
|
zone_id = var.zone_id
|
|
enabled = true
|
|
}
|
|
|
|
# Tiered Cache is required for Cache Reserve
|
|
resource "cloudflare_tiered_cache" "example" {
|
|
zone_id = var.zone_id
|
|
cache_type = "smart"
|
|
}
|
|
```
|
|
|
|
### Pulumi
|
|
|
|
```typescript
|
|
import * as cloudflare from "@pulumi/cloudflare";
|
|
|
|
// Enable Cache Reserve
|
|
const cacheReserve = new cloudflare.ZoneCacheReserve("example", {
|
|
zoneId: zoneId,
|
|
enabled: true,
|
|
});
|
|
|
|
// Enable Tiered Cache (required)
|
|
const tieredCache = new cloudflare.TieredCache("example", {
|
|
zoneId: zoneId,
|
|
cacheType: "smart",
|
|
});
|
|
```
|
|
|
|
### Required API Token Permissions
|
|
|
|
- `Zone Settings Read`
|
|
- `Zone Settings Write`
|
|
- `Zone Read`
|
|
- `Zone Write`
|
|
|
|
## Cache Rules Integration
|
|
|
|
Control Cache Reserve eligibility via Cache Rules:
|
|
|
|
```typescript
|
|
// Enable for static assets
|
|
{
|
|
action: 'set_cache_settings',
|
|
action_parameters: {
|
|
cache_reserve: { eligible: true, minimum_file_ttl: 86400 },
|
|
edge_ttl: { mode: 'override_origin', default: 86400 },
|
|
cache: true
|
|
},
|
|
expression: '(http.request.uri.path matches "\\.(jpg|png|webp|pdf|zip)$")'
|
|
}
|
|
|
|
// Disable for APIs
|
|
{
|
|
action: 'set_cache_settings',
|
|
action_parameters: { cache_reserve: { eligible: false } },
|
|
expression: '(http.request.uri.path matches "^/api/")'
|
|
}
|
|
|
|
// Create via API: PUT to zones/{zone_id}/rulesets/phases/http_request_cache_settings/entrypoint
|
|
```
|
|
|
|
## Wrangler Integration
|
|
|
|
Cache Reserve works automatically with Workers deployed via Wrangler. No special wrangler.jsonc configuration needed - enable Cache Reserve via Dashboard or API for the zone.
|
|
|
|
## See Also
|
|
|
|
- [README](./README.md) - Overview and core concepts
|
|
- [API Reference](./api.md) - Purging and monitoring APIs
|
|
- [Patterns](./patterns.md) - Best practices and optimization
|
|
- [Gotchas](./gotchas.md) - Common issues and troubleshooting
|