AWS
覆盖项
重新验证队列

此覆盖由 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_URLREVALIDATION_QUEUE_REGION(将回退到 us-east-1)、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN 环境变量。

direct

Direct 队列将在队列覆盖本身中直接触发路由的重新验证。它适用于开发目的以及当你不想使用队列时。

⚠️

小心此实现,因为它可能导致同一路线的多次重新验证。

dummy

Dummy 队列是一个虚拟实现,它将抛出异常。除非你想禁用 ISR,否则不应使用它。