有关详细说明您可以在 Sam 之前的文章配符子域”中阅读所有相关内容。另一方面,本文深入探讨了中间件的整体概念以及它在构建事物时的便利程度。
“中间件”并不是计算领域的新术语。它通常用作描述将两个系统结合在一起的软件的术语。您可以将其称为软件的“胶水”,本质上,这就是 Next.js 的中间件的工作方式。
的中间件允许您创建在用户请求发出之后和请求完成之前执行的函数——在两个进程的中间。这使您能够处理用户的请求,然后通过重写、重定向、修改标头甚至流式传输 HTML 来修改响应。
在 Next.js 中,中间件在称为“边缘运行时”的有限运行时中运行。通过运行时运行的代码可以访问一组标准的 Web API,这将在本文后面讨论。对于 Vercel 客户,中间件功能将作为Vercel Edge Functions执行。
当您阅读本文时,您可能会想中间件听起来多么像已经存在了一段时间的 Next.js 的 API 路由。关键区别在于它们的使用方式:中间件功能的运行时间更受限制,对 API 路由发出单独请求,而中间件功能在用户对页面的请求和页面呈现之间运行。
这也意味着中间件可以限定为多个页面,从而避免重复代码。例如,如果您需要app根据用户是否登录来更改目录中的每个页面,您可以在该目录中创建一个中间件函数来处理用户的 cookie 以查看他们是否已登录,然后传递该信息到页面上。相比之下,实现类似的效果需要 API 路由中的额外代码。
两者之间的主要技术区别PI 路由被设计为托 台湾电话号码清单 管在一个地方托管的单节点服务器上,而中间件功能被设计为部署在“边缘”,这本质上是一个营销术语用于在全球多个位置部署代码。除了物理距离的差异,“边缘”通常与积极的缓存和有效的缓存失效相关联,从而减少不必要的计算。
这样做的目标是速度。当用户离服务器较近时,服务器的响应通常会更快到达,因此当您只有一台服务器时,这些速度只能由您的一部分用户访问。但是,随着您的代码部署在多个位置,更多用户将能够获得快速响应。
最后,中间件被设计成没有冷启动时间。API 路由的启动时间是响应缓慢的重要原因。在 Vercel 上,Serverless Functions(用于部署 API 路由)通常需要大约 250 毫秒才能启动。中间件的启动时间也比 API 路由短得多,Vercel 声称他们的边缘功能(用于部署 Next.js 中间件)比他们的无服务器功能“启动速度快 100 倍”。 跳转后更多!继续往下看↓认识一下移动界面的触摸设计,这是 Steven Hoober 的全新移动设计指南,具有经过验证的、通用的、以人为本的指南。400 页,塞满了深入的用户研究和最佳实践。 t中间件中可用的对象具有键中可用的地理信息geo。使用此信息,您可以将用户重写到包含本地化信息的页面。例如,如果您正在为一家全球连锁餐厅创建网站,您可以根据用户所在的位置显示不同的菜单。Vercel此处的示例使用此地理位置来提供电力平价定价。 这可以 本地化功能一起使用,如下所示。 安全 通过该象,cookie 信息可用(在cookies键上),通过使用NextResponse您可以设置 cookie。这些 cookie 可用于对您网站上的用户进行身份验证。