diff --git a/.changeset/great-eyes-tan.md b/.changeset/great-eyes-tan.md new file mode 100644 index 00000000..ed9cbce1 --- /dev/null +++ b/.changeset/great-eyes-tan.md @@ -0,0 +1,5 @@ +--- +"@opennextjs/cloudflare": patch +--- + +refactor: account for empty tag list in tag cache diff --git a/packages/cloudflare/src/api/overrides/tag-cache/d1-next-tag-cache.ts b/packages/cloudflare/src/api/overrides/tag-cache/d1-next-tag-cache.ts index a6896f53..c13225b7 100644 --- a/packages/cloudflare/src/api/overrides/tag-cache/d1-next-tag-cache.ts +++ b/packages/cloudflare/src/api/overrides/tag-cache/d1-next-tag-cache.ts @@ -14,7 +14,9 @@ export class D1NextModeTagCache implements NextModeTagCache { async getLastRevalidated(tags: string[]): Promise { const { isDisabled, db } = this.getConfig(); - if (isDisabled) return 0; + if (isDisabled || tags.length === 0) { + return 0; + } try { const result = await db .prepare( @@ -36,7 +38,9 @@ export class D1NextModeTagCache implements NextModeTagCache { async hasBeenRevalidated(tags: string[], lastModified?: number): Promise { const { isDisabled, db } = this.getConfig(); - if (isDisabled) return false; + if (isDisabled || tags.length === 0) { + return false; + } try { const result = await db .prepare( diff --git a/packages/cloudflare/src/api/overrides/tag-cache/do-sharded-tag-cache.ts b/packages/cloudflare/src/api/overrides/tag-cache/do-sharded-tag-cache.ts index cba94f81..1c81c762 100644 --- a/packages/cloudflare/src/api/overrides/tag-cache/do-sharded-tag-cache.ts +++ b/packages/cloudflare/src/api/overrides/tag-cache/do-sharded-tag-cache.ts @@ -130,8 +130,9 @@ class ShardedDOTagCache implements NextModeTagCache { public async getLastRevalidated(tags: string[]): Promise { const { isDisabled } = this.getConfig(); - if (isDisabled) return 0; - if (tags.length === 0) return 0; // No tags to check + if (isDisabled || tags.length === 0) { + return 0; + } const deduplicatedTags = Array.from(new Set(tags)); // We deduplicate the tags to avoid unnecessary requests try { const shardedTagGroups = this.groupTagsByDO({ tags: deduplicatedTags }); @@ -177,7 +178,9 @@ class ShardedDOTagCache implements NextModeTagCache { */ public async hasBeenRevalidated(tags: string[], lastModified?: number): Promise { const { isDisabled } = this.getConfig(); - if (isDisabled) return false; + if (isDisabled || tags.length === 0) { + return false; + } try { const shardedTagGroups = this.groupTagsByDO({ tags }); const shardedTagRevalidationOutcomes = await Promise.all( diff --git a/packages/cloudflare/src/api/overrides/tag-cache/kv-next-tag-cache.ts b/packages/cloudflare/src/api/overrides/tag-cache/kv-next-tag-cache.ts index 281ce8ac..692da0d2 100644 --- a/packages/cloudflare/src/api/overrides/tag-cache/kv-next-tag-cache.ts +++ b/packages/cloudflare/src/api/overrides/tag-cache/kv-next-tag-cache.ts @@ -26,7 +26,7 @@ export class KVNextModeTagCache implements NextModeTagCache { async getLastRevalidated(tags: string[]): Promise { const kv = this.getKv(); - if (!kv) { + if (!kv || tags.length === 0) { return 0; }