assetPrefix
注意:部署到 Vercel 会自动为您的 Next.js 项目配置全局 CDN。您无需手动设置资源前缀 (Asset Prefix)。
须知:Next.js 9.5+ 增加了对可自定义 基础路径 (Base Path) 的支持,该功能更适合将应用程序托管在子路径(如
/docs
)下。对于此用例,我们不建议使用自定义资源前缀 (Asset Prefix)。
设置 CDN
要设置 内容分发网络 (CDN),您可以配置资源前缀并将 CDN 的源站解析到托管 Next.js 的域名。
打开 next.config.mjs
并根据 阶段 (phase) 添加 assetPrefix
配置:
Next.js 会自动将您配置的资源前缀应用于从 /_next/
路径(.next/static/
文件夹)加载的 JavaScript 和 CSS 文件。例如,使用上述配置后,原本的 JS 分块请求:
将变为:
将文件上传到指定 CDN 的具体配置取决于您选择的 CDN 服务。您只需在 CDN 上托管 .next/static/
文件夹的内容,这些内容应按照上述 URL 请求所示上传为 _next/static/
。请勿上传 .next/
文件夹的其他部分,因为您不应将服务器代码和其他配置公开给公众。
虽然 assetPrefix
会覆盖对 _next/static
的请求,但它不会影响以下路径:
- public 文件夹中的文件;如果您希望通过 CDN 提供这些资源,需要自行添加前缀
- 针对
getServerSideProps
页面的/_next/data/
请求。这些请求始终会针对主域名发起,因为它们不是静态的。 - 针对
getStaticProps
页面的/_next/data/
请求。即使您没有使用 增量静态生成 (Incremental Static Generation),这些请求也会始终针对主域名发起(以保持一致性)。