assetPrefix
注意: Vercel へのデプロイでは、Next.js プロジェクトのグローバル CDN が自動的に構成されます。アセットプレフィックスを手動で設定する必要はありません。
知っておくと良いこと: Next.js 9.5 以降では、カスタマイズ可能な Base Path のサポートが追加されました。これは、
/docs
のようなサブパスでアプリケーションをホストするのに適しています。このユースケースでは、カスタムアセットプレフィックスを使用することはお勧めしません。
CDN の設定
CDN を設定するには、アセットプレフィックスを設定し、CDN のオリジンを Next.js がホストされているドメインに解決するように構成できます。
next.config.mjs
を開き、フェーズに基づいて assetPrefix
設定を追加します
// @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 チャンクの次のリクエストは
#4b9b41aaa062cbbfeff4add70f256968c51ece5d.4d708494b3aed70c04f0.js
代わりに次のようになります
https://cdn.mydomain.com#4b9b41aaa062cbbfeff4add70f256968c51ece5d.4d708494b3aed70c04f0.js
ファイルを特定の CDN にアップロードするための正確な構成は、選択した CDN によって異なります。CDN でホストする必要があるフォルダーは、.next/static/
の内容のみで、上記の URL リクエストが示すように _next/static/
としてアップロードする必要があります。サーバーコードやその他の構成を公開すべきではないため、.next/
フォルダーの残りの部分をアップロードしないでください。
assetPrefix
は _next/static
へのリクエストをカバーしますが、次のパスには影響しません
- public フォルダー内のファイル。これらのアセットを CDN 経由で提供する場合は、自分でプレフィックスを導入する必要があります
getServerSideProps
ページに対する/_next/data/
リクエスト。これらのリクエストは静的ではないため、常にメインドメインに対して行われます。getStaticProps
ページに対する/_next/data/
リクエスト。これらのリクエストは、インクリメンタル静的生成をサポートするために、使用していない場合でも (一貫性のために) 常にメインドメインに対して行われます。
お役に立ちましたか?