多 言語ウェブサイトでは、 速度を犠牲にすることなく、適切な翻訳コンテンツを適切な訪問者に提供する必要があります。そのため、多言語ウェブサイトのキャッシュが不可欠となり、翻訳ページの読み込み速度を向上させ、サーバーへのリクエスト数を削減できます。しかし、複数の言語バージョンをキャッシュすると、翻訳の古さ、誤った言語のコンテンツ、検索エンジンのクローラーに対する結果の不整合といった課題が生じる可能性があります。
このガイドでは、多言語キャッシュに関する最も一般的な問題点を探り、CloudflareとVarnishが翻訳コンテンツをどのように処理するかを解説します。読み進めて、適切なキャッシュ戦略を選択し、言語間のキャッシュヒットを防ぎ、多言語ウェブサイトのための信頼性の高い設定を構築しましょう。.
多言語キャッシュが重要な理由とは?

多言語ウェブサイトでは、各言語ごとに異なるコンテンツやURLが含まれる可能性があるため、同じページの複数のキャッシュバージョンが存在する場合があります。これらの翻訳バージョンをキャッシュすることで、ウェブサイトはリクエストごとに同じコンテンツを繰り返し処理するのではなく、既存のレスポンスを再利用できます。これにより、オリジンサーバーへのリクエスト数を減らし、ページの読み込み時間を短縮し、訪問者にとってより高速なエクスペリエンスを提供できます。.
しかし、多言語キャッシュでは、各言語バージョンを適切に分離する必要があります。キャッシュシステムが言語バリアントを区別しない場合、フランス語ページをリクエストした訪問者が、キャッシュされた英語バージョンを受け取る可能性があります。同様に、翻訳が更新された場合、古いキャッシュされたレスポンスが有効期限切れまたは無効化されるまで表示され続ける可能性があります。.
キャッシュは、検索エンジンのクローラーが多言語ページにアクセスする方法にも影響を与えます。各言語のURLは、対応する翻訳コンテンツを常に返すように設定する必要があります。そうすることで、検索エンジンはローカライズされたバージョンを正しく理解し、インデックスを作成できます。したがって、信頼性の高いキャッシュ設定は、 hreflang、正規URL、言語固有のメタデータなどのSEOシグナルと連携して機能する必要があります。
多言語ウェブサイトのキャッシュ戦略を構築する方法

優れた多言語キャッシュ戦略は、訪問者が常に正しい言語バージョンのページにアクセスできるようにすると同時に、ページの表示速度を維持し、サーバーへのリクエストを削減します。最初のステップは、ウェブサイトが各言語をどのように識別するか、そしてキャッシュシステムがその情報をどのように利用するかを決定することです。.
URLとサブドメインのルーティング
言語固有のURLは、多言語キャッシュを予測可能にする最も簡単な方法の1つです。各言語には独自のURLが割り当てられるため、キャッシュは各バージョンを個別に保存して提供できます。たとえば、example.com/fr/ はフランス語版を、example.com/de/ はドイツ語版を表すことができます。.
言語固有のサブドメインも同様に機能します。ウェブサイトでは、フランス語には fr.example.com、ドイツ語には de.example.com を使用する場合があります。言語が URL に直接含まれているため、訪問者やキャッシュシステムはどのバージョンを提供すべきかを簡単に識別できます。一般的な URL 構造には、次のものがあります。
- example.com/fr/
- example.com/de/
- fr.example.com
- de.example.com
ヘッダーベースの言語検出
ウェブサイトは、HTTPヘッダー、特にブラウザが送信するAccept-Languageヘッダーを通じて、訪問者の優先言語を判断することもできます。例えば、フランス語に設定されたブラウザはAccept-Language: frを送信し、サーバーが自動的にフランス語版を選択できるようにします。.
しかし、ヘッダーベースの検出には、慎重なキャッシュ設定が必要です。キャッシュがページURLのみを考慮し、言語ヘッダーを無視すると、ある言語バージョンを保存しておきながら、異なる言語設定の訪問者に返してしまう可能性があります。そのため、キャッシュキーまたはVary動作では、関連する言語情報を考慮する必要があります。例:
- Accept-Language: en
- Accept-Language: fr
- Accept-Language: de
Cookieベースの言語検出
別の方法としては、訪問者の言語設定をCookieに保存する方法があります。訪問者が言語を選択すると、ウェブサイトはその選択を保存し、以降のリクエストで使用できます。これにより、特に訪問者がブラウザの設定に頼るのではなく、手動で言語を選択する場合に、より一貫性のあるユーザーエクスペリエンスを提供できます。.
課題は、Cookieがキャッシュを複雑にする可能性があることです。キャッシュが 言語Cookieに基づいてリクエストを区別しない場合、 訪問者は別の言語向けに作成されたキャッシュされたページを受け取る可能性があります。したがって、キャッシュレイヤーは、必要に応じてキャッシュを変更またはバイパスするように構成する必要があります。例:
- 言語=en
- 言語=fr
- 言語=デ
キャッシング戦略の選択
最適なキャッシュ戦略は、ウェブサイトが言語選択をどのように処理するかによって異なります。URLベースの言語ルーティングは、各言語に固有のURLが割り当てられるため、一般的にキャッシュが容易です。ヘッダーやCookieベースの検出も機能しますが、キャッシュされたレスポンスが正しく分離されるように、より慎重な設定が必要です。.
アプローチを選択する前に、言語の数、訪問者が言語を選択する方法、翻訳コンテンツがどのくらいの頻度で変更されるかを考慮してください。目標は、キャッシュ層がすべてのリクエストを同じページとして扱うのではなく、言語検出とキャッシュの動作を連携させることです。考慮すべき重要な要素は次のとおりです。
- 言語固有のURL
- キャッシュキーの設定
- ヘッダーとクッキーの処理
- キャッシュTTL
- キャッシュの無効化
- 翻訳の更新頻度
- 検索エンジンのクローリング
Varnishが多言語コンテンツと翻訳コンテンツをキャッシュする方法

Varnish Cacheは、訪問者とオリジンサーバー間のリバースプロキシとして機能します。訪問者がページをリクエストすると、Varnishは有効なキャッシュされたレスポンスが存在するかどうかを確認します。一致するレスポンスが見つかった場合、リクエストをオリジンサーバーに送り返すことなく、キャッシュされたコンテンツを提供します。適切なレスポンスが存在しない場合、Varnishはリクエストをオリジンサーバーに転送し、レスポンスを受信して、後続のリクエストのために保存することができます。.
多言語対応ウェブサイトの場合、Varnishは異なる言語バージョンのレスポンスを返す必要があるリクエストを区別する必要があります。そのため、Varnishがキャッシュされたレスポンスを再利用できるかどうかを判断する際には、言語情報を考慮する必要があります。これにより、キャッシュが異なる翻訳を同じレスポンスとして扱うことを防ぎます。.

言語固有のキャッシュキー
Varnish は、異なる言語バージョンを表すキャッシュされたレスポンスを区別する方法を必要とします。言語がすでに URL に含まれている場合、各 URL は自然に異なるキャッシュエントリにマッピングできます。言語がリクエスト ヘッダー、Cookie、またはその他のリクエスト値によって決定される場合、Varnish の設定はその情報をキャッシュ ロジックに組み込む必要があります。たとえば、多言語サイトでは、キャッシュされたレスポンスを次のように区別することができます。
- /en/about/ → 英語のキャッシュエントリ
- /fr/about/ → フランス語のキャッシュエントリ
- Accept-Language: en → 英語バージョン
- Accept-Language: fr → フランス語版
- 言語クッキー → 訪問者が選択した言語
具体的な実装方法は、ウェブサイトがどのように言語を判断するかによって異なります。重要な要件は、異なる翻訳応答を生成するリクエストが、同じキャッシュオブジェクトに解決されてはならないということです。.
言語をまたいだヒットを防ぐ
言語間キャッシュヒットとは、Varnishが、ある言語のページをリクエストした訪問者に対して、別の言語のキャッシュ済みレスポンスを返す場合に発生します。例えば、フランス語のページをリクエストした訪問者が、両方のリクエストが同じキャッシュ可能なリソースとして扱われる場合、英語のレスポンスを受け取る可能性があります。.
このリスクを軽減するために、Varnish は言語のバリエーションが既知であり、リクエストと一致する場合にのみキャッシュされたレスポンスを再利用する必要があります。言語を確実に判別できない場合は、レスポンスを共有キャッシュエントリとして保存するのではなく、慎重に処理する必要があります。重要な保護策には以下が含まれます。
- 曖昧な言語情報を含むレスポンスのキャッシュは避けてください。
- 言語クッキーとヘッダーを一貫して処理する
- 異なる言語リクエストに対するテストキャッシュのヒットとミス
- キャッシュが有効になった後に言語切り替えを確認する
Varnishキャッシュの無効化
キャッシュ無効化は、キャッシュされたコンテンツを削除または無効としてマークします。これは、元のコンテンツまたはその翻訳が更新された場合に重要です。無効化を行わないと、Varnish は設定された TTL が期限切れになるまで、古いキャッシュバージョンを提供し続ける可能性があります。.
多言語ウェブサイトの場合、無効化は影響を受けるすべての言語バージョンを考慮する必要があります。英語ページとそのフランス語翻訳が更新された場合、訪問者が古いコンテンツを見ないように、対応するキャッシュされたレスポンスをクリアまたは更新する必要があります。一般的なアプローチは次のとおりです。
- 特定のURLを削除する
- 複数の言語バージョンを削除する
- キャッシュTTLの使用
- コンテンツ更新後に自動的に削除します
- 影響を受けた翻訳ページを更新しています
Cloudflareがエッジで多言語コンテンツをキャッシュする方法

Cloudflareは、訪問者とオリジンサーバー間のエッジキャッシュレイヤーとして機能します。訪問者がページをリクエストすると、Cloudflareはエッジロケーションにキャッシュされたバージョンが存在するかどうかを確認します。有効なレスポンスが存在する場合は、オリジンサーバーにページをリクエストする代わりに、エッジから直接レスポンスを提供できます。キャッシュされたレスポンスが存在しない場合は、Cloudflareはオリジンからコンテンツを取得し、後続のリクエストのためにレスポンスをキャッシュできます。.
多言語対応ウェブサイトの場合、この処理ではリクエストされた言語を考慮する必要があります。Cloudflareは、異なる言語バージョンを区別できなければなりません。そうしないと、フランス語版をリクエストしたユーザーにキャッシュされた英語のレスポンスが返されてしまう可能性があります。そのため、翻訳されたコンテンツが異なるURL、ヘッダー、またはCookieを介して配信される場合、言語を考慮したキャッシュ設定が重要になります。.

言語バージョンの分離
Cloudflare は、各言語バージョンに固有の URL がある場合、異なる言語バージョンを個別にキャッシュできます。たとえば、/en/、/fr/、/it/ は、それぞれ英語、フランス語、イタリア語のコンテンツを表します。言語が URL に直接含まれているため、各バージョンに独自のキャッシュエントリを持たせることができ、個々の言語バージョンの管理と削除が容易になります。例:
- example.com/en/products/
- example.com/fr/products/
- example.com/it/products/
Cloudflareのキャッシュキーと言語バリエーション
Cloudflareは、異なる言語の入力によって異なる応答が返される可能性がある場合、リクエストを区別する必要があります。URLベースの言語ルーティングでは、各言語に固有のURLが割り当てられるため、この区別は自然に行われます。.
言語がAccept-LanguageヘッダーまたはCookieによって決定される場合は、より注意が必要です。これらの値が翻訳されたレスポンスに影響を与えるにもかかわらず、キャッシュ設定で処理されない場合、異なる言語のリクエストが同じリソースとして扱われる可能性があります。その結果、別の言語をリクエストした訪問者に対して、ある言語のコンテンツが配信される事態が発生する可能性があります。.
ほとんどの多言語ウェブサイトでは、URLベースのルーティングの方が管理が容易です。なぜなら、言語はURLに直接表示されるからです。ヘッダーやCookieベースの検出も有効ですが、異なる言語の応答が誤って共有されないように、追加の設定が必要です。.
キャッシュのTTLとパージ
キャッシュのTTL(有効期限)は、Cloudflareがキャッシュされたレスポンスを期限切れになるまでの期間を決定します。TTLを長くするとコンテンツがより長くキャッシュされるためパフォーマンスが向上しますが、TTLを短くすると変更がより早く反映されます。.
多言語ウェブサイトの場合、TTLはコンテンツと翻訳の変更頻度を反映する必要があります。頻繁に更新されるページは短いTTLが必要になる場合があり、安定したページは一般的に長いTTLを使用できます。翻訳が変更された場合は、TTLの期限切れを待つのではなく、影響を受ける言語バージョンを削除または更新する必要があります。これにより、訪問者が古い翻訳を受け取ることを防ぐことができます。キャッシュ戦略には以下が含まれます。
- 頻繁に更新されるコンテンツのための短いTTL
- 安定したページのためのTTLを長くする
- URL固有のキャッシュルール
- 手動キャッシュ消去
- アップデート後の自動削除
多言語ウェブサイトのキャッシュに関するベストプラクティス

適切に計画されたキャッシュ設定により、訪問者に誤った翻訳や古い翻訳が表示されることなく、多言語ウェブサイトの速度を向上させることができます。重要なのは、翻訳システムとキャッシュレイヤーを連携させ、各言語バージョンを明確に分離することです。.
翻訳とキャッシュを組み合わせる
翻訳とキャッシュは、同一のコンテンツ配信プロセスの一部として連携して機能する必要があります。翻訳レイヤーはどのローカライズ版を返すかを決定し、キャッシュレイヤーはそのレスポンスを後続のリクエストのために保存します。重要なのはタイミングです。レスポンスがキャッシュされる前に言語が決定される必要があります。これにより、キャッシュには実際にリクエストされた翻訳済みのレスポンスが保存され、他の言語で再利用される可能性のある曖昧なバージョンが保存されることを防ぎます。.
自動翻訳を利用するウェブサイトの場合、 Linguiseのような翻訳ソリューションは、 ローカライズされたコンテンツを自動的に生成し、翻訳されたページがウェブサイトの既存のキャッシュ設定と連携できるようにすることで、このプロセスを簡素化できます。これは、複数の言語を扱うウェブサイトにとって特に役立ちます。翻訳版を手動で管理し、キャッシュされたコンテンツと同期させる作業は、より複雑になる可能性があるからです。
ベストプラクティス: ページ全体のキャッシュを有効にする前に、翻訳システムとキャッシュレイヤーで言語バージョンの識別方法が一致していることを確認してください。
言語固有のキャッシュキーを使用する
翻訳された各レスポンスは、適切なキャッシュバリエーションにマッピングされる必要があります。URLベースの言語構造では、各言語に固有のURLが既に存在するため、この作業が容易になります。一方、ヘッダーベースまたはCookieベースの設定では、追加のキャッシュ設定が必要になります。.
ベストプラクティス: 可能な限り、言語固有のURLを使用することをお勧めします。例:
- /en/about/ → 英語
- /fr/about/ → フランス語
- /de/about/ → ドイツ語
これにより、言語バージョン間の明確な分離が実現し、言語をまたいだキャッシュヒットのリスクが軽減されます。.
キャッシュ制御とTTLを設定します
Cache-ControlヘッダーとTTLは、ブラウザ、CDN、リバースプロキシがキャッシュされたコンテンツをどのように処理するかを決定します。これらを正しく設定することで、ウェブサイトのパフォーマンスと最新の翻訳を提供する必要性とのバランスを取ることができます。.
変更頻度の低いページは通常、より長い期間キャッシュに保持できますが、頻繁に更新されるコンテンツはより短いTTL(有効期限)を使用する必要があります。適切な設定は、ウェブサイトのコンテンツと翻訳の更新頻度によって異なります。.
ベストプラクティス: 例えば、静的な多言語ランディングページには長めのTTLを、頻繁に更新される商品ページやニュースページには短めのTTLを設定できます。更新されたコンテンツが期待どおりに利用可能になるよう、必ず設定をテストしてください。
アップデート後にキャッシュをクリアする
コンテンツや翻訳が変更された場合は、TTLの有効期限切れだけに頼るのではなく、影響を受けるキャッシュされたレスポンスを削除または更新してください。これにより、訪問者は影響を受けるすべての言語で最新バージョンを受け取ることができます。.
ベストプラクティス: コンテンツ更新ワークフローにキャッシュ無効化処理を組み込み、影響を受けるすべての言語バージョンが対象となっていることを確認してください。
キャッシュされた多言語ページをテストする
キャッシュの問題は通常のブラウジングでは必ずしも目に見えるとは限らないため、テストは重要です。ページは直接アクセスした際には正しく表示されるかもしれませんが、キャッシュされたレスポンスから配信されると、誤った言語が返される可能性があります。.
キャッシュルールを設定または変更した後は、各言語バージョンをテストしてください。初回リクエストとそれ以降のリクエストの両方をチェックし、正しいキャッシュされたレスポンスが常に返されることを確認してください。.
ベストプラクティス: 次のようなテストシナリオを実施する:
- 同じページを異なる言語で開く
- キャッシュされたページを再読み込みする
- 言語の切り替え
- 翻訳を更新する
- キャッシュをクリアした後、ページを確認する
- 言語固有のURLをクロールする
多言語キャッシュチェックリスト
多言語キャッシュの設定を本番環境に導入する前に、簡単なチェックリストを使用して、言語検出、キャッシュ、コンテンツ更新が正しく連携して動作することを確認してください。.
ベストプラクティスチェックリスト:
- 各言語バージョンに固有のURLまたはキャッシュバリエーションを割り当てる
- 言語固有のキャッシュキーを使用する
- 適切なCache-Controlヘッダーを設定する
- コンテンツの更新頻度に基づいてTTLを設定する
- アップデート後に影響を受ける言語バージョンを削除する
- サポートされているすべての言語でキャッシュされたページをテストします。
- 言語の間違いがないか確認する
- 古い翻訳コンテンツがないか確認してください
- 検索エンジンのクローラーを使用して、言語固有のURLを検証します。
結論
多言語ウェブサイトを効果的にキャッシュするには、ウェブサイトのパフォーマンスと、すべての訪問者に対して適切で最新の言語バージョンを提供することとのバランスを取る必要があります。言語固有のキャッシュキー、適切なTTL(有効期限)、および信頼性の高いキャッシュ無効化を使用することで、サーバーへのリクエストを削減しながら、誤った言語や古いコンテンツの表示を防ぐことができます。.
翻訳コンテンツをより簡単に管理するには、 に登録して Linguise 、自動翻訳機能で多言語ウェブサイトのワークフローを効率化し、 ローカライズされたコンテンツを 迅速かつ管理しやすい状態に保ちましょう。



