Không. Data Cache gắn với fetch đã được Next mở rộng. Truy vấn qua ORM, driver DB hay axios không đi qua đó, nên mỗi lần render động là một lần truy vấn thật, và revalidateTag không có gì để dọn.
Cách đưa truy vấn không dùng fetch vào cache:
import { unstable_cache } from 'next/cache'
export const getProduct = unstable_cache(
async (slug: string) => prisma.product.findUnique({ where: { slug } }),
['product-by-slug'], // key parts, cùng với tham số tạo thành cache key
{ tags: ['products'], revalidate: 3600 },
)
// trong Server Action sau khi cập nhật
revalidateTag('products')Các điểm cần nắm:
- Giá trị trả về phải serialize được, và không được gọi cookies()/headers() bên trong — hàm được cache không thấy request hiện tại.
- Key gồm mảng key parts cộng tham số của hàm; quên truyền đủ tham số vào chữ ký sẽ khiến các đầu vào khác nhau dùng chung một entry.
- Cần dedupe trong một lượt render thôi thì dùng cache() của React, nhẹ hơn và không lưu xuyên request.
- Từ Next 15/16 hướng đi mới là directive 'use cache' với cacheTag/cacheLife, cùng ý tưởng nhưng khai báo ở mức hàm/component.