Skip to content

コネクテッドコンテンツレスポンスのキャッシュ

コネクテッドコンテンツのレスポンスは、送信速度を最適化するために、異なるCampaignやメッセージ間(同じワークスペース内)でキャッシュできます。

Brazeはコネクテッドコンテンツのレスポンスボディを恒久的にログに記録したり保存したりしません。メッセージのレンダリング中、レスポンスは一時的に保持されることがあります(例えば、メモリ内やキャッシュ内)。これにより、BrazeはLiquidをレンダリングしてメッセージを送信できます。

キャッシュを防止するには:no_cacheを指定できますが、ネットワークトラフィックが増加する可能性があります。トラブルシューティングとシステムの健全性の監視を支援するために、Brazeは成功した呼び出しと失敗した呼び出しの両方について、コネクテッドコンテンツのリクエストメタデータ(完全にレンダリングされたリクエストURLやレスポンスステータスコードなど)をログに記録します。これらのログは最大30日間保持されます。

コネクテッドコンテンツのレンダリングとデータ処理(上級)

このセクションでは、BrazeがLiquidとコネクテッドコンテンツをレンダリングする方法と、メッセージが送信される前にデータが一時的に存在する場所について、より詳細なエンドツーエンドのビューを提供します。これはプライバシーとデータ処理のレビューに役立つ場合があります。

保存されるものと保存されないもの

  • コネクテッドコンテンツのレスポンスボディ: Brazeによって恒久的に保存されません。一時的にメモリに保持されることがあり、キャッシュが有効な場合はTTL(有効期限)付きでキャッシュに保存されます。
  • コネクテッドコンテンツのリクエストメタデータ: 完全にレンダリングされたURL、HTTPステータスコード、レスポンス時間などのリクエストメタデータは、トラブルシューティングと監視のためにログに記録されます。これらのログは最大30日間保持されます。
  • 最終レンダリングメッセージ: レンダリング中にメモリに存在します。設定やチャネルによっては、他の場所にも保存される場合があります(例えば、メッセージのアーカイブやContent Cards)。

レンダリングフロー(概要)

以下のフローは、Brazeがメール、SMS、プッシュなどのプロバイダーベースのチャネルでメッセージをレンダリングして送信する方法を説明しています。Content CardsなどのSDK配信チャネルは、同じ基盤となるLiquidとコネクテッドコンテンツのレンダリングを使用しますが、コンテンツが生成されるタイミングと配信方法が異なります。

  1. バックグラウンドワーカーは、メッセージの配信準備が整った時点で、メッセージのLiquidテンプレートをレンダリングします。
  2. コネクテッドコンテンツタグは、Liquidレンダリング中に評価されます。
  3. 各コネクテッドコンテンツタグについて、Brazeはマルチティアキャッシュを確認します。キャッシュされた値が存在しない場合(またはキャッシュが無効な場合)、Brazeはエンドポイントを呼び出してレスポンスを受信します。
  4. レスポンスはLiquidテンプレートに挿入され、メッセージが完全にレンダリングされます。
  5. プロバイダーベースのチャネルの場合、レンダリングされたメッセージはチャネルプロバイダーに送信され、その後ユーザーに届けられます。Content CardsなどのSDK配信チャネルの場合、レンダリングされたコンテンツはBraze SDKに同期され、最初のインプレッションまたは表示時に生成され、その時点でユーザーに表示されます。

コネクテッドコンテンツのレスポンスが一時的に存在する場所

Brazeは、:cache_max_ageやその他のキャッシュルールの使用に応じて、5分から4時間のTTLを持つマルチティアキャッシュをコネクテッドコンテンツのレスポンスに使用します。

  • インプロセスメモリキャッシュ: ワーカープロセス内の一時的なキャッシュです。データはジョブの期間中のみ存在できます(ワーカーのタイムアウトに基づき最大約11分)。
  • ローカルマシンキャッシュ: ローカルのMemcachedインスタンスなど、ワーカーごとのキャッシュです。
  • クラスター全体のキャッシュ: Memcachedクラスターなど、ワーカー間で共有される分散キャッシュです。

これらのキャッシュレイヤーは揮発性であり、設定されたTTLよりも早くデータが削除される場合があります。

:no_cacheを使用した場合の変更点

Brazeインフラ内でホストされていないエンドポイントの場合、:no_cacheを使用すると、コネクテッドコンテンツのレスポンスボディがMemcachedに保存されなくなります。この場合、レスポンスはレンダリングジョブの期間中(最大約11分)、ワーカープロセスメモリにのみ存在します。Braze内部のホストに解決されるエンドポイントの場合、キャッシュバスティングで説明されているとおり、レスポンスがキャッシュされる場合があります。

最終レンダリング出力が存在する場所

  • メッセージのアーカイブ: メッセージのアーカイブが有効な場合、Brazeは最終レンダリングメッセージを設定済みのクラウドストレージバケットに書き込む場合があります。コネクテッドコンテンツのレスポンスがレンダリングされたメッセージに含まれている場合、アーカイブされたコピーにも含まれます。
  • ユーザーデバイス: 配信後、完全にレンダリングされたメッセージコンテンツは、不明な期間ユーザーデバイスに残る場合があります。
  • Content Cards: Content Cardsのレンダリングされたコンテンツは、カードの有効期限が切れるまでBrazeデータベースに保存されます。

デフォルトのキャッシュ設定

キャッシュの有効期間は最大5分(300秒)です。コネクテッドコンテンツの呼び出しに:cache_max_ageパラメーターを追加することで更新できます。例は以下のとおりです。

1
{{ {% connected_content [https://example.com/webservice.json] :cache_max_age 900 %}}}

GETリクエストはキャッシュされます。コネクテッドコンテンツの呼び出しに:no_cacheパラメーターを追加することで設定を変更できます。

POSTリクエストはデフォルトではキャッシュされませんが、コネクテッドコンテンツの呼び出しに:cache_max_ageパラメーターを追加することでキャッシュできます。最小キャッシュ時間は5分、最大キャッシュ時間は4時間です。

キャッシュサイズの制限

コネクテッドコンテンツのレスポンスボディは最大1 MBです。レスポンスボディが1 MBを超える場合、キャッシュされません。

キャッシュ時間

コネクテッドコンテンツは、GETエンドポイントから返される値を最低5分間キャッシュします。キャッシュ時間が指定されていない場合、デフォルトのキャッシュ時間は5分です。

コネクテッドコンテンツのキャッシュ時間は、以下の例に示すように:cache_max_ageを使用してより長く設定できます。最小キャッシュ時間は5分、最大キャッシュ時間は4時間です。コネクテッドコンテンツのデータは、Memcachedなどの揮発性キャッシュシステムを使用してインメモリでキャッシュされます。

そのため、指定されたキャッシュ時間に関係なく、コネクテッドコンテンツのデータは指定された時間よりも早くBrazeのインメモリキャッシュから削除される場合があります。つまり、キャッシュ期間は目安であり、Brazeによってデータがキャッシュされることが保証される実際の期間を表すものではない場合があります。そのため、指定されたキャッシュ期間で予想されるよりも多くのコネクテッドコンテンツリクエストが発生する場合があります。

指定した秒数のキャッシュ

この例では、900秒(15分)間キャッシュされます。

1
{% connected_content https://example.com/webservice.json :cache_max_age 900 %}

キャッシュバスティング

コネクテッドコンテンツがGETリクエストから返される値をキャッシュしないようにするには、:no_cache設定を使用できます。ただし、Braze内部のホストからのレスポンスは引き続きキャッシュされます。

1
{% connected_content https://example.com/webservice.json :no_cache %}

POSTの場合、POSTリクエストはデフォルトでキャッシュされないため、キャッシュバスティングは不要です。POSTレスポンスをキャッシュするには:cache_max_ageを追加し、キャッシュを避けるには:cache_max_ageを省略してください。

知っておくべきこと

  • キャッシュは重複するコネクテッドコンテンツの呼び出しを削減するのに役立ちます。ただし、ユーザーごとに1回のコネクテッドコンテンツ呼び出しになることが常に保証されるわけではありません。
  • コネクテッドコンテンツのキャッシュはURLとワークスペースに基づいています。コネクテッドコンテンツの呼び出しが同一のURLに対するものであれば、CampaignやCanvases間でキャッシュを共有できます。
  • キャッシュはユニークなURLに基づいており、ユーザーIDやCampaignには基づいていません。つまり、URLが同じであれば、コネクテッドコンテンツ呼び出しのキャッシュされたバージョンが、ワークスペース内の複数のユーザーやCampaignで使用される場合があります。
  • コネクテッドコンテンツのキャッシュは、タグマークアップに以下の高カーディナリティスニペットが含まれている場合、スキップされることがあります。
    • {{${user_id}}}
    • {{${braze_id}}}
    • {{${email}}}
    • {{${email_address}}}
    • {{${phone_number}}}
    • {{${date_of_birth}}}
New Stuff!