Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add multiple cdn #6982

Closed
wants to merge 9 commits into from
28 changes: 27 additions & 1 deletion src/content/docs/en/reference/configuration-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -492,13 +492,17 @@ Specifies the directory in the build output where Astro-generated assets (bundle

<p>

**Type:** `string`<br />
**Type:** `(string | Record.<string, string>)`<br />
sarah11918 marked this conversation as resolved.
Show resolved Hide resolved
**Default:** `undefined`<br />
<Since v="2.2.0" />
sarah11918 marked this conversation as resolved.
Show resolved Hide resolved
</p>

Specifies the prefix for Astro-generated asset links. This can be used if assets are served from a different domain than the current site.

<p>
**If use `string`**
</p>
sarah11918 marked this conversation as resolved.
Show resolved Hide resolved

For example, if this is set to `https://cdn.example.com`, assets will be fetched from `https://cdn.example.com/_astro/...` (regardless of the `base` option).
You would need to upload the files in `./dist/_astro/` to `https://cdn.example.com/_astro/` to serve the assets.
The process varies depending on how the third-party domain is hosted.
Expand All @@ -512,6 +516,28 @@ To rename the `_astro` path, specify a new directory in `build.assets`.
}
```

<p>
**If use `Record<string, string>`**
</p>
sarah11918 marked this conversation as resolved.
Show resolved Hide resolved

Applicable to multiple CDN scenarios. If you static file use different CDN, you can configure it like the example below.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this is documenting new behaviour, we will need to double check with core for accuracy!

sarah11918 marked this conversation as resolved.
Show resolved Hide resolved

For example, if static file is js file, assets prefix use `https://js.cdn.example.com`. If static file is css file, assets prefix use `https://css.cdn.example.com`. Other assets prefix use `https://cdn.example.com`.
sarah11918 marked this conversation as resolved.
Show resolved Hide resolved

```js
{
build: {
assetsPrefix: {
'js': 'https://js.cdn.example.com',
'css': 'https://js.cdn.example.com',
sarah11918 marked this conversation as resolved.
Show resolved Hide resolved
'defaultAssetsPrefix': 'https://cdn.example.com'
}
}
}
```

Object key is file extension, value is CDN assets prefix path. `defaultAssetsPrefix` is default assets prefix cdn value set. You can set the default values of other files by setting the value of `defaultAssetsPrefix`. If `defaultAssetsPrefix` is not set, when the file extension is not found in the `assetsPrefix` object, it will be set to the empty string `''` by default.
sarah11918 marked this conversation as resolved.
Show resolved Hide resolved

### build.serverEntry

<p>
Expand Down
28 changes: 27 additions & 1 deletion src/content/docs/es/reference/configuration-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -458,13 +458,17 @@ Especifica el directorio en la salida de compilación donde los activos generado
### build.assetsPrefix

<p>
**Tipo:** `string`<br />
**Tipo:** `(string | Record.<string, string>)`<br />
sarah11918 marked this conversation as resolved.
Show resolved Hide resolved
**Por defecto:** `undefined`<br />
<Since v="2.2.0" />
</p>

Especifica el prefijo para los enlaces de activos generados por Astro. Esto se puede usar si los activos se sirven desde un dominio diferente al del sitio actual.

<p>
**Si usa `string`**
</p>

Por ejemplo, si se establece en `https://cdn.example.com`, los activos se buscarán desde `https://cdn.example.com/_astro/...` (independientemente de la opción `base`).
Tu tendrías que subir los archivos en `./dist/_astro/` a `https://cdn.example.com/_astro/` para servir los activos.
El proceso varía según cómo está alojado el dominio de terceros.
Expand All @@ -478,6 +482,28 @@ Para cambiar el nombre de la ruta `_astro`, especifique un nuevo directorio en `
}
```

<p>
**Si usa `Record<string, string>`**
</p>

Aplicable a una variedad de escenarios de CDN. Si sus recursos estáticos requieren varias direcciones CDN diferentes, puede configurarlas como en el siguiente ejemplo.

Por ejemplo, si el archivo es js, utilice `https://js.cdn.example.com` como prefijo para el enlace del recurso. Si el archivo es css, utilice `https://css.cdn.example.com` como prefijo para el enlace del recurso. El prefijo para enlaces a otros recursos de archivos es `https://cdn.example.com`.

```js
{
build: {
assetsPrefix: {
'js': 'https://js.cdn.example.com',
'css': 'https://js.cdn.example.com',
'defaultAssetsPrefix': 'https://cdn.example.com'
}
}
}
```

La clave del objeto (`key`) es la extensión del archivo y el valor (`value`) es el prefijo del enlace del recurso. El valor de `defaultAssetsPrefix` es el valor del prefijo (`value`) del enlace de recurso predeterminado. Puede establecer el valor predeterminado de otros archivos estableciendo el valor de `defaultAssetsPrefix`. Si no se establece `defaultAssetsPrefix`, cuando la extensión del archivo no se encuentre en el objeto `assetsPrefix`, se establecerá en la cadena vacía `''` de forma predeterminada.

### build.serverEntry

<p>
Expand Down
29 changes: 28 additions & 1 deletion src/content/docs/ja/reference/configuration-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -472,13 +472,17 @@ SSRのビルド時にサーバーJavaScriptの出力ディレクトリを制御

<p>

**データ型:** `string`<br />
**データ型:** `(string | Record.<string, string>)`<br />
**デフォルト値:** `undefined`<br />
<Since v="2.2.0" />
</p>

Astroが生成したアセットへのリンクのプレフィックスを指定します。アセットが現在のサイトとは異なるドメインから提供されている場合に使用できます。

<p>
**文字列を使用する場合**
</p>

たとえばこの値を`https://cdn.example.com`に設定すると、アセットは(`base`オプションに関係なく)`https://cdn.example.com/_astro/...`から取得されます。アセットを配信するには、`./dist/_astro/`のファイルを`https://cdn.example.com/_astro/`にアップロードする必要があります。この手順はサードパーティのドメインがどのようにホストされているかによって異なります。`_astro`パスの名前を変更するには、`build.assets`に新しいディレクトリを指定します。

```js
Expand All @@ -489,6 +493,29 @@ Astroが生成したアセットへのリンクのプレフィックスを指定
}
```

<p>
**オブジェクト `Record<string, string>` を使用する場合**
</p>

さまざまな CDN シナリオに適用可能: 静的リソースに複数の異なる CDN アドレスが必要な場合は、以下の例のように構成できます。

たとえば、ファイルが js の場合、リソース リンクのプレフィックスとして「https://js.cdn.example.com」を使用します。 ファイルが CSS の場合は、リソース リンクのプレフィックスとして「https://css.cdn.example.com」を使用します。 他のファイル リソースへのリンクのプレフィックスは `https://cdn.example.com` です。

```js
{
build: {
assetsPrefix: {
'js': 'https://js.cdn.example.com',
'css': 'https://js.cdn.example.com',
'defaultAssetsPrefix': 'https://cdn.example.com'
}
}
}
```

オブジェクト キー (`key`) はファイル拡張子で、値 (`value`) はリソース リンクのプレフィックスです。 `defaultAssetsPrefix`の値はデフォルトリソースリンクのプレフィックス値(`value`)であり、`defaultAssetsPrefix`の値を設定することで他のファイルのデフォルト値を設定することができます。 `defaultAssetsPrefix` が設定されていない場合、ファイル拡張子が `assetsPrefix` オブジェクト内に見つからない場合、デフォルトで空の文字列 `''` に設定されます。


### build.serverEntry

<p>
Expand Down
30 changes: 29 additions & 1 deletion src/content/docs/ko/reference/configuration-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -508,14 +508,18 @@ Astro에서 생성된 자산 (예: JS 및 CSS 번들)이 있어야 하는 빌드

<p>

**타입:** `string`<br />
**타입:** `(string | Record.<string, string>)`<br />
**기본값:** `undefined`<br />

<Since v="2.2.0" />
</p>

Astro에서 생성된 자산 링크의 접두사를 지정합니다. 자산이 현재 사이트와 다른 도메인에서 제공되는 경우 사용할 수 있습니다.

<p>
**문자열을 사용하는 경우**
</p>

예를 들어 `https://cdn.example.com`으로 설정되면 `https://cdn.example.com/_astro/...`에서 자산을 가져옵니다 (`base` 옵션에 관계없음).
자산을 제공하려면 `./dist/_astro/`의 파일을 `https://cdn.example.com/_astro/`에 업로드해야 합니다.
프로세스는 타사 도메인이 호스팅되는 방식에 따라 다릅니다. `_astro` 경로의 이름을 바꾸려면 `build.assets`에 새 디렉터리를 지정합니다.
Expand All @@ -528,6 +532,30 @@ Astro에서 생성된 자산 링크의 접두사를 지정합니다. 자산이
}
```

<p>
**`Record<string, string>` 객체를 사용하는 경우**
</p>

适用于多种CDN场景,如果你的静态资源需要多种不同的CDN地址,你可以像下边例子这样配置。

여러 CDN 시나리오에 적합 정적 리소스에 여러 개의 서로 다른 CDN 주소가 필요한 경우 아래 예에 표시된 대로 구성할 수 있습니다.

예를 들어 파일이 js인 경우 리소스 링크의 접두사로 `https://js.cdn.example.com`을 사용합니다. 파일이 CSS인 경우 리소스 링크의 접두사로 `https://css.cdn.example.com`을 사용합니다. 다른 파일 리소스에 대한 링크에는 `https://cdn.example.com`이라는 접두사가 붙습니다.

```js
{
build: {
assetsPrefix: {
'js': 'https://js.cdn.example.com',
'css': 'https://js.cdn.example.com',
'defaultAssetsPrefix': 'https://cdn.example.com'
}
}
}
```

객체 키(`key`)는 파일 확장자이고 값(`value`)은 리소스 링크의 접두사입니다. `defaultAssetsPrefix` 값은 기본 리소스 링크의 접두사 값(`value`)이며, `defaultAssetsPrefix` 값을 설정하여 다른 파일의 기본값을 설정할 수 있습니다. `defaultAssetsPrefix`가 설정되지 않은 경우 `assetsPrefix` 개체에서 파일 확장자를 찾을 수 없으면 기본적으로 빈 문자열 `''`로 설정됩니다.

### build.serverEntry

<p>
Expand Down
29 changes: 28 additions & 1 deletion src/content/docs/pt-br/reference/configuration-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -431,13 +431,17 @@ Especifica o diretório na saída da build onde assets gerados pelo Astro (JS e

<p>

**Tipo:** `string`<br />
**Tipo:** `(string | Record.<string, string>)`<br />
**Padrão:** `undefined`<br />
<Since v="2.2.0" />
</p>

Especifica o prefixo para links de assets gerados pelo Astro. Isto pode ser utilizado se assets são servidos de um domínio diferente do site atual.

<p>
**Se for utilizada uma cadeia de caracteres**
</p>

Por exemplo, se ele é definido como `https://cdn.exemplo.com`, assets serão buscados de `https://cdn.exemplo.com/_astro/...` (independente da opção `base`).
Você precisaria fazer upload desses arquivos em `./dist/_astro/` para `https://cdn.exemplo.com/_astro/` para providenciar os assets.
O processo varia dependendo em como o domínio de terceiros é hospedado.
Expand All @@ -451,6 +455,29 @@ Para renomear o caminho `_astro`, especifique um novo diretório em `build.asset
}
```

<p>
**Se utilizar o objeto `Record<string, string>`**
</p>

Adequado para vários cenários de CDN, se você tiver recursos estáticos que exigem vários endereços de CDN diferentes, poderá configurá-lo como o exemplo abaixo.

Por exemplo, se o arquivo for js, use `https://js.cdn.example.com` para o prefixo do link do recurso. Se o ficheiro for css, utilize `https://css.cdn.example.com` para o prefixo da ligação do recurso. Para outros ficheiros, utilize `https://cdn.example.com` para o prefixo da ligação de recurso.

```js
{
build: {
assetsPrefix: {
'js': 'https://js.cdn.example.com',
'css': 'https://js.cdn.example.com',
'defaultAssetsPrefix': 'https://cdn.example.com'
}
}
}
```

A chave do objeto (`key`) é a extensão do ficheiro e o valor (`value`) é o prefixo da ligação de recurso. O valor de `defaultAssetsPrefix` é o valor padrão do prefixo da ligação de recurso (`value`). Se `defaultAssetsPrefix` não for definido, será definido com a string vazia `''` quando a extensão do arquivo não for encontrada no objeto `assetsPrefix`.


### build.serverEntry

<p>
Expand Down
29 changes: 28 additions & 1 deletion src/content/docs/zh-cn/reference/configuration-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -495,13 +495,17 @@ $ astro build --root ./my-project-directory

<p>

**类型:** `string`<br />
**类型:** `(string | Record.<string, string>)`<br />
**默认值:** `undefined`<br />
<Since v="2.2.0" />
</p>

指定 Astro 生成的资源链接的前缀。如果资源与当前站点来自不同的域,则可以使用此选项。

<p>
**如果使用字符串**
</p>

例如,如果设置为 `https://cdn.example.com`,则资源将从 `https://cdn.example.com/_astro/...` 获取(而不管 `base` 选项如何设置)。

你需要将 `./dist/_astro/` 中的文件上传到 `https://cdn.example.com/_astro/` 以提供资源。该过程取决于第三方域是如何托管的。要重命名 `_astro` 路径,请在 `build.assets` 中指定一个新目录。
Expand All @@ -514,6 +518,29 @@ $ astro build --root ./my-project-directory
}
```

<p>
**如果使用对象 `Record<string, string>`**
</p>

适用于多种CDN场景,如果你的静态资源需要多种不同的CDN地址,你可以像下边例子这样配置。

例如,如果文件为js,资源链接的前缀使用`https://js.cdn.example.com`。如果文件为css,资源链接的前缀使用`https://css.cdn.example.com`。其他文件资源链接的前缀使用`https://cdn.example.com`。

```js
{
build: {
assetsPrefix: {
'js': 'https://js.cdn.example.com',
'css': 'https://js.cdn.example.com',
'defaultAssetsPrefix': 'https://cdn.example.com'
}
}
}
```

对象键(`key`)是文件扩展名,值(`value`)是资源链接的前缀。 `defaultAssetsPrefix` 的值是默认资源链接的前缀值值(`value`),可以通过设置`defaultAssetsPrefix`的值,来设置其他文件的默认值。如果不设置`defaultAssetsPrefix`,当在`assetsPrefix`对象中未找到文件扩展名的时候,会默认设置成空字符串`''`。


### build.serverEntry

<p>
Expand Down
Loading