You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: pages/cloudflare/caching.mdx
+82-5Lines changed: 82 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,8 +9,6 @@ By default, all `fetch()` subrequests made in your Next.js app are cached. Refer
9
9
10
10
[The cache persists across deployments](https://nextjs.org/docs/app/building-your-application/caching#data-cache). You are responsible for revalidating/purging this cache.
11
11
12
-
Note that [Revalidating](https://nextjs.org/docs/app/building-your-application/data-fetching/fetching-caching-and-revalidating#revalidating-data) is not yet supported.
13
-
14
12
Next.js primes the cache at build time. The build time values are serverd by the [Workers Assets](https://developers.cloudflare.com/workers/static-assets/).
15
13
16
14
<Callout>
@@ -19,17 +17,22 @@ Workers KV is eventually consistent, which means that it can take up to 60 secon
19
17
20
18
### How to enable caching
21
19
22
-
`@opennextjs/cloudflare` uses [Workers KV](https://developers.cloudflare.com/kv/) as the cache for your Next.js app. Workers KV is [fast](https://blog.cloudflare.com/faster-workers-kv) and uses Cloudflare's [Tiered Cache](https://developers.cloudflare.com/cache/how-to/tiered-cache/) to increase cache hit rates. When you write cached data to Workers KV, you write to storage that can be read by any Cloudflare location. This means your app can fetch data, cache it in KV, and then subsequent requests anywhere around the world can read from this cache.
20
+
`@opennextjs/cloudflare` supports multiple caching mechanisms through a project's OpenNext configuration.
21
+
22
+
23
+
#### Incremental Static Regeneration (ISR) and Fetch Caching
24
+
25
+
The ISR adapter for Cloudflare uses [Workers KV](https://developers.cloudflare.com/kv/) as the cache for your Next.js app. Workers KV is [fast](https://blog.cloudflare.com/faster-workers-kv) and uses Cloudflare's [Tiered Cache](https://developers.cloudflare.com/cache/how-to/tiered-cache/) to increase cache hit rates. When you write cached data to Workers KV, you write to storage that can be read by any Cloudflare location. This means your app can fetch data, cache it in KV, and then subsequent requests anywhere around the world can read from this cache.
The binding name used in your app's worker is `NEXT_CACHE_WORKERS_KV`.
35
38
@@ -45,3 +48,77 @@ The binding name used in your app's worker is `NEXT_CACHE_WORKERS_KV`.
45
48
]
46
49
}
47
50
```
51
+
52
+
##### 3. Configure the cache
53
+
54
+
In your project's OpenNext config, enable the KV cache and set up a queue. The `direct` queue will send a revalidation request to a page when needed, but it will not dedupe requests.
The tag revalidation mechanism uses a [Cloudflare D1](https://developers.cloudflare.com/d1/) adapter as its backing store for information about tags, paths, and revalidation times.
77
+
78
+
To use on-demand revalidation, you should also follow the ISR setup steps.
79
+
80
+
##### 1. Create a D1 database
81
+
82
+
The binding name used in your app's worker is `NEXT_CACHE_D1`.
83
+
84
+
```jsonc
85
+
// wrangler.json
86
+
{
87
+
// ...
88
+
"d1_databases": [
89
+
{
90
+
"binding":"NEXT_CACHE_D1",
91
+
"database_id":"<DATABASE_ID>",
92
+
"database_name":"<DATABASE_NAME>"
93
+
}
94
+
]
95
+
}
96
+
```
97
+
98
+
##### 2. Create a table for tag revalidation
99
+
100
+
The default table name is `tags`. This can be configured by setting the `NEXT_CACHE_D1` environment variable to a string.
101
+
102
+
Wrangler can be used to create a table with it's [execute](https://developers.cloudflare.com/d1/wrangler-commands/#d1-execute) option. Ensure that you create a table for both your local dev database and your remote database.
103
+
104
+
```sh
105
+
wrangler d1 execute NEXT_CACHE_D1 --command "CREATE TABLE IF NOT EXISTS tags (tag TEXT NOT NULL, path TEXT NOT NULL, revalidatedAt INTEGER NOT NULL, UNIQUE(tag, path) ON CONFLICT REPLACE)"
106
+
```
107
+
108
+
##### 3. Configure the cache
109
+
110
+
In your project's OpenNext config, enable the KV cache and set up a queue. The `direct` queue will send a revalidation request to a page when needed, but it will not dedupe requests.
Copy file name to clipboardExpand all lines: pages/cloudflare/index.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,8 +53,8 @@ We will update the list as we progress towards releasing 1.0.
53
53
-[x][Image optimization](https://nextjs.org/docs/app/building-your-application/optimizing/images) (you can integrate Cloudflare Images with Next.js by following [this guide](https://developers.cloudflare.com/images/transform-images/integrate-with-frameworks/))
0 commit comments