Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions src/content/docs/ja/guides/server-islands.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: 高速な静的HTMLと動的なサーバーレンダリングコン
i18nReady: true
---

サーバーアイランドは、ページ全体のパフォーマンスを犠牲にせず、動的またはパーソナライズされた"アイランド"を個別にオンデマンドでレンダリングできます。
サーバーアイランドは、ページの他の部分のパフォーマンスを犠牲にせず、動的またはパーソナライズされた「アイランド」を個別にオンデマンドでレンダリングできます。

これにより、訪問者はページの最重要部分をより早く表示でき、メインコンテンツはより積極的にキャッシュできるため、パフォーマンスが向上します。

Expand All @@ -14,7 +14,7 @@ i18nReady: true

ページは、[プレースホルダーとして指定されたフォールバックコンテンツ](#サーバーアイランドのフォールバックコンテンツ)を含め、すぐにレンダリングされます。その後、コンポーネント独自のコンテンツがクライアント側で取得され、利用可能になった時点で表示されます。

[インストール済みのアダプター](/ja/guides/on-demand-rendering/#サーバーアダプター)で遅延レンダリングを実行する場合、ページ内の任意のコンポーネントに[`server:defer`ディレクティブ](/ja/reference/directives-reference/)を追加すると、そのコンポーネントを独立したアイランドにできます。
[インストール済みのアダプター](/ja/guides/on-demand-rendering/#サーバーアダプター)で遅延レンダリングを実行する場合、ページ内の任意のコンポーネントに[`server:defer`ディレクティブ](/ja/reference/directives-reference/#サーバーディレクティブ)を追加すると、そのコンポーネントを独立したアイランドにできます。

```astro title="src/pages/index.astro" "server:defer"
---
Expand Down Expand Up @@ -45,7 +45,7 @@ const avatarURL = await getUserAvatar(userSession);

## サーバーアイランドのフォールバックコンテンツ

`server:defer`属性を使ってコンポーネントのレンダリングを遅延させる場合、組み込みの`"fallback"`という名前のスロットを使って、デフォルトの読み込みコンテンツを"スロット挿入"できます。
`server:defer`属性を使ってコンポーネントのレンダリングを遅延させる場合、組み込みの`"fallback"`という名前のスロットを使って、デフォルトの読み込みコンテンツを「スロット挿入」できます。

フォールバックコンテンツは、ページ読み込み時に他のコンテンツと一緒にレンダリングされ、コンポーネントのコンテンツが利用可能になったときに置き換えられます。

Expand Down Expand Up @@ -81,11 +81,11 @@ import GenericAvatar from '../components/GenericAvatar.astro';

## キャッシュ

サーバーアイランドのデータは、URLクエリ内の暗号化された文字列としてpropsを渡す`GET`リクエストで取得されます。これにより、標準の[`Cache-Control`HTTPヘッダー](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Cache-Control)を使用して、`Cache-Control`ディレクティブによるデータキャッシュが可能です。
サーバーアイランドのデータは、URLクエリ内の暗号化された文字列としてpropsを渡す`GET`リクエストで取得されます。これにより、標準の`Cache-Control`ディレクティブを使った[`Cache-Control` HTTPヘッダー](https://developer.mozilla.org/ja/docs/Web/HTTP/Reference/Headers/Cache-Control)でデータのキャッシュが可能になります。

ただし、[ブラウザにはURL長の実用的な上限(2048バイト)が存在します](https://chromium.googlesource.com/chromium/src/+/master/docs/security/url_display_guidelines/url_display_guidelines.md#url-length)。この制限を超えると、Astroは代わりにprops全体を本文に含めた`POST`リクエストを送信します。
ただし、[ブラウザにはURL長の上限(2048バイト)が存在します](https://chromium.googlesource.com/chromium/src/+/master/docs/security/url_display_guidelines/url_display_guidelines.md#url-length)。これは実用上の理由と、DoS問題を引き起こさないようにするためです。クエリ文字列によってURLがこの制限を超えると、Astroは代わりにprops全体を本文に含めた`POST`リクエストを送信します。

`POST`リクエストはデータ送信用に使われ、データの完全性やセキュリティ上の理由からブラウザによってキャッシュされません。そのため、プロジェクト内の既存のキャッシュロジックは動作しなくなります。可能な限り、必要最小限のpropsのみをサーバーアイランドに渡し、クエリサイズを小さく保つようにしてください。
`POST`リクエストはデータ送信用に使われ、データの完全性やセキュリティ上の理由からブラウザによってキャッシュされません。そのため、プロジェクト内の既存のキャッシュロジックは動作しなくなります。可能な限り、必要最小限のpropsのみをサーバーアイランドに渡し、データオブジェクトや配列全体を送らないようにして、クエリサイズを小さく保つようにしてください。

## サーバーアイランド内でページURLにアクセスする

Expand All @@ -105,16 +105,16 @@ const productId = url.searchParams.get('product');

## 暗号化キーの再利用

Astroはサーバーアイランドに渡されるpropsを暗号化するために[暗号学](https://developer.mozilla.org/en-US/docs/Glossary/Cryptography)を使用し、機密データが誤って露出するのを防いでいます。この暗号化はビルドごとに生成される新しいランダムな鍵に依存しており、その鍵はサーバーバンドルに埋め込まれます。
Astroはサーバーアイランドに渡されるpropsを暗号化するために[暗号技術](https://developer.mozilla.org/en-US/docs/Glossary/Cryptography)を使用し、機密データが誤って露出するのを防いでいます。この暗号化はビルドごとに生成される新しいランダムな鍵に依存しており、その鍵はサーバーバンドルに埋め込まれます。

ほとんどのデプロイホストでは、フロントエンドとバックエンドの同期は自動的に処理されます。ただし、ローリングデプロイ、マルチリージョンホスティング、またはサーバーアイランドを含むページをキャッシュするCDNを使用している場合は、固定の暗号化キーが必要になることがあります。

ローリングデプロイ環境(例:Kubernetesなど)では、(propsを暗号化する)フロントエンドアセットと、(propsを復号化する)バックエンド関数が一時的に異なるキーを使用している可能性があります。また、CDNが古いキーでビルドされたページを配信し続けている場合もあります。このような状況では、サーバーアイランドに渡された暗号化済みpropsを復号化できなくなります。
ローリングデプロイ環境(例:Kubernetesなど)では、(propsを暗号化する)フロントエンドアセットと、(propsを復号化する)バックエンド関数が一時的に異なるキーを使用している可能性があります。また、CDNが古いキーでビルドされたページを配信し続けている場合もあります。このような状況では、サーバーアイランドに渡された暗号化済みpropsを復号化できなくなります。

このような状況では、Astro CLIを使用して、再利用可能なエンコード済み暗号化キーを生成し、ビルド環境の環境変数として設定してください。

```shell
astro create-key
```

この値を使って`ASTRO_KEY`環境変数を設定し(例:`.env` ファイル内など)、CI/CDやホストのビルド設定にも含めてください。これにより、生成されるバンドルで常に同じキーが再利用され、暗号化と復号化の同期が保たれます。
この値を使って`ASTRO_KEY`環境変数を設定し(例:`.env` ファイル内など)、CI/CDやホストのビルド設定にも含めてください。これにより、生成されるバンドルで常に同じキーが再利用され、暗号化と復号化の同期が保たれます。
Loading