このガイドでは、最も一般的な多言語キャッシュの問題を探り、CloudflareとVarnishが翻訳されたコンテンツをどのように扱うかを説明します。読み進めて、適切なキャッシュ戦略を選択し、言語間のキャッシュヒットを防ぎ、多言語ウェブサイトのための信頼性の高い設定を構築しましょう。.
重要ポイント:Cloudflare & Varnishによる多言語ウェブサイトのキャッシュ
言語バージョンの分離
言語固有のURLまたはキャッシュキーを使用して、各翻訳版が個別に保存・配信されるようにしましょう。これにより、ユーザーが誤った言語のコンテンツを受け取ることを防げます。.
キャッシュの競合を防ぐ
VarnishとCloudflareは、URL、ヘッダー、またはCookieからの言語情報を考慮する必要があります。適切な設定により、言語間のキャッシュヒットを防ぎ、訪問者が正しい翻訳を受け取ることが保証されます。.
翻訳を最新の状態に保つ
翻訳が更新されるたびに、適切なキャッシュTTLを設定し、影響を受けるキャッシュをパージしてください。これにより、古いコンテンツが訪問者に表示され続けるのを防ぎます。.
多言語キャッシュが重要な理由

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

優れた多言語キャッシュ戦略は、ページを高速に保ちサーバーリクエストを削減しながら、訪問者が常に正しい言語バージョンを受け取れるようにします。最初のステップは、ウェブサイトが各言語をどのように識別し、キャッシュシステムがその情報をどのように利用するかを決定することです。.
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 に基づいてリクエストを区別しない場合、訪問者は別の言語を対象としたキャッシュされたページを受け取る可能性があります。したがって、キャッシュレイヤーは、必要に応じてキャッシュを変化させるかバイパスするように設定する必要があります。例えば:
- language=en
- language=fr
- language=de
キャッシュ戦略の選択
最適なキャッシュ戦略は、ウェブサイトが言語選択をどのように処理するかによって異なります。URLベースの言語ルーティングは、各言語が固有のURLを持つため、一般的にキャッシュが容易です。ヘッダーやCookieベースの検出も機能しますが、キャッシュされたレスポンスが正しく分離されるように、より慎重な設定が必要です。.
アプローチを選択する前に、言語の数、訪問者が言語を選択する方法、翻訳されたコンテンツがどのくらいの頻度で変更されるかを考慮してください。目標は、キャッシュレイヤーがすべてのリクエストを同じページとして扱うのではなく、言語検出とキャッシュ動作を連携させることです。考慮すべき主な要素:
- 言語別URL
- キャッシュキーの設定
- ヘッダーとCookieの処理
- キャッシュTTL
- キャッシュの無効化
- 翻訳の更新頻度
- 検索エンジンのクロール
Varnishが多言語および翻訳済みコンテンツをキャッシュする仕組み

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

言語固有のキャッシュキー
Varnishは、異なる言語バージョンを表すキャッシュされたレスポンスを区別する方法を必要とします。言語がすでにURLに含まれている場合、各URLは自然に異なるキャッシュエントリにマッピングできます。言語がリクエストヘッダー、Cookie、またはその他のリクエスト値によって決定される場合、Varnishの設定はその情報をキャッシュロジックに組み込む必要があります。例えば、多言語サイトでは、以下を使用してキャッシュされたレスポンスを区別する場合があります:
- /en/about/ → 英語のキャッシュエントリ
- /fr/about/ → フランス語のキャッシュエントリ
- Accept-Language: en → 英語バリエーション
- Accept-Language: fr → フランス語バリエーション
- 言語Cookie → 訪問者が選択した言語
正確な実装は、ウェブサイトが言語をどのように判断するかによって異なります。重要な要件は、異なる翻訳されたレスポンスを生成するリクエストが、同じキャッシュされたオブジェクトに解決されてはならないことです。.
言語間のヒットを防ぐ
言語をまたいだキャッシュヒットは、Varnishがある言語のキャッシュ済みレスポンスを、別の言語をリクエストする訪問者に返すときに発生します。たとえば、フランス語のページをリクエストした訪問者が、両方のリクエストが同じキャッシュ可能なリソースとして扱われる場合、英語のレスポンスを受け取る可能性があります。.
このリスクを軽減するため、Varnishは言語バリエーションが既知であり、リクエストと一致する場合にのみ、キャッシュされたレスポンスを再利用すべきです。言語を確実に判別できない場合は、共有キャッシュエントリとして保存するのではなく、レスポンスを慎重に処理する必要があります。重要な保護措置は次のとおりです:
- 言語情報が曖昧なレスポンスのキャッシュを避ける
- 言語Cookieとヘッダーを一貫して処理する
- 異なる言語リクエストに対するキャッシュヒットとミスをテストする
- キャッシュを有効にした後、言語切り替えを確認する
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(Time to Live)は、Cloudflareがキャッシュされたレスポンスを有効期限が切れるまで保持する期間を決定します。TTLを長くするとコンテンツがより長くキャッシュされるためパフォーマンスが向上し、TTLを短くすると変更がより早く反映されます。.
多言語ウェブサイトでは、TTLはコンテンツと翻訳がどのくらい頻繁に変更されるかを反映する必要があります。頻繁に更新されるページには短いTTLが必要になる場合がありますが、安定したページでは一般的に長いTTLを使用できます。翻訳が変更された場合、TTLの期限切れを待つのではなく、影響を受ける言語バージョンをパージまたはリフレッシュする必要があります。これにより、訪問者が古い翻訳を受け取るのを防ぐことができます。キャッシュ戦略には以下を含めることができます:
- 頻繁に更新されるコンテンツの短いTTL
- 安定したページには長めのTTLを設定
- URL固有のキャッシュルール
- 手動キャッシュパージ
- 更新後の自動パージ
多言語ウェブサイトをキャッシュするためのベストプラクティス

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



