跳到主要内容

assetPrefix

注意部署到 Vercel 会自动为你的 Next.js 项目配置全局 CDN。 你不需要手动设置资源前缀。

注意部署到 Vercel 会自动为你的 Next.js 项目配置全局 CDN。 你不需要手动设置资源前缀。

提示:Next.js 9.5+ 添加了对可自定义 基础路径 的支持,这更适合在子路径(如 /docs)上托管你的应用程序。 我们不建议你为此用例使用自定义资源前缀。

设置 CDN

要设置 CDN,你可以设置资源前缀并配置你的 CDN 源以解析到托管 Next.js 的域名。

打开 next.config.mjs 并根据 阶段 添加 assetPrefix 配置:

next.config.mjs
// @ts-check
import { PHASE_DEVELOPMENT_SERVER } from 'next/constants'

export default (phase) => {
const isDev = phase === PHASE_DEVELOPMENT_SERVER
/**
* @type {import('next').NextConfig}
*/
const nextConfig = {
assetPrefix: isDev ? undefined : 'https://cdn.mydomain.com',
}
return nextConfig
}

Next.js 将自动为从 /_next/ 路径(.next/static/ 文件夹)加载的 JavaScript 和 CSS 文件使用你的资源前缀。例如,使用上述配置,以下对 JS 块的请求:

/_next/static/chunks/4b9b41aaa062cbbfeff4add70f256968c51ece5d.4d708494b3aed70c04f0.js

将变为:

https://cdn.mydomain.com/_next/static/chunks/4b9b41aaa062cbbfeff4add70f256968c51ece5d.4d708494b3aed70c04f0.js

将文件上传到给定 CDN 的确切配置将取决于你选择的 CDN。你需要在 CDN 上托管的唯一文件夹是 .next/static/ 的内容,应该按照上述 URL 请求所示上传为 _next/static/不要上传 .next/ 文件夹的其余部分,因为你不应该向公众暴露你的服务器代码和其他配置。

虽然 assetPrefix 涵盖了到 _next/static 的请求,但它不会影响以下路径:

  • public 文件夹中的文件;如果你想通过 CDN 提供这些资源,你必须自己引入前缀
  • public 文件夹中的文件;如果你想通过 CDN 提供这些资源,你必须自己引入前缀
  • getServerSideProps 页面的 /_next/data/ 请求。这些请求将始终针对主域名进行,因为它们不是静态的。
  • getStaticProps 页面的 /_next/data/ 请求。这些请求将始终针对主域名进行以支持 增量静态生成,即使你没有使用它(为了保持一致性)。