AWS
覆盖
重新验证队列

这个覆盖(override)被 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 Queue 会直接在队列覆盖中触发路由的重新验证。这在开发阶段或当你不想使用队列时非常有用。

⚠️

使用此实现时需谨慎,因为它可能导致同一路由的多次重新验证。

dummy(虚拟队列)

Dummy Queue 是一个虚拟实现,会抛出异常。除非你想禁用 ISR(增量静态再生),否则不应使用它。