此覆盖由 OpenNext 使用,用于触发过期路由的重新验证。 在向客户端发送响应之前,OpenNext 将检查路由是否过期,如果是,它将调用队列覆盖来重新验证该路由。
如果你想更好地了解如何实现自己的队列,最简单的方法是查看现有的 内置队列 (opens in a new tab)。
有几件事需要注意:
- 默认实现使用 SQS 队列。其主要优势在于能够控制重新验证的并发性,并避免对同一路线多次触发重新验证。
- 你根本不需要使用队列。你可以直接在队列覆盖本身中触发重新验证。你可以在
direct覆盖 (opens in a new tab) 中看到一个非常简单的实现。
内置队列
sqs
SQS 队列将为每个需要重新验证的路径向 SQS 队列发送一条消息。如果你在配置中没有提供任何队列,则默认使用它。
它使用 @aws-sdk/client-sqs 与 SQS 交互。
要求
- 你需要向服务器提供
REVALIDATION_QUEUE_URL环境变量。
sqs-lite
SQSLite 队列将为每个需要重新验证的路径向 SQS 队列发送一条消息。
此实现是 sqs 队列的轻量版本,因为它使用 aws4fetch 与 SQS 交互。
要求
- 你需要向服务器提供
REVALIDATION_QUEUE_URL、REVALIDATION_QUEUE_REGION(将回退到us-east-1)、AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY和AWS_SESSION_TOKEN环境变量。
direct
Direct 队列将在队列覆盖本身中直接触发路由的重新验证。它适用于开发目的以及当你不想使用队列时。
⚠️
小心此实现,因为它可能导致同一路线的多次重新验证。
dummy
Dummy 队列是一个虚拟实现,它将抛出异常。除非你想禁用 ISR,否则不应使用它。