Skip to content

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

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

Brazeは、コネクテッドコンテンツのレスポンシブボディを永久に記録または保存しない。メッセージレンダリング中、レスポンシブは一時的に(たとえばメモリやキャッシュに)保持され、Brazeはリキッドをレンダリングしてメッセージを送信できる。

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

Connected Content rendering and data handling (advanced)

このセクションでは、Brazeがリキッドコンテンツとコネクテッドコンテンツをどのようにレンダリングするのか、また、メッセージが送信される前にデータが一時的に存在する場所について、より詳細なエンドツーエンドのビューを提供する。これはプライバシーやデータ取り扱いの見直しに役立つかもしれない。

何が保存され、何が保存されないのか

  • コネクテッドコンテンツのレスポンスボディ:Brazeが永久に保存するわけではない。一時的にメモリに保持することができ、キャッシングがイネーブルメントの場合、TTL(time-to-live)でキャッシュに保存される。
  • コネクテッドコンテンツのリクエストメタデータ:完全にレンダリングされたURL、HTTPステータスコード、レスポンシブ時間などのリクエストメタデータは、トラブルシューティングやモニタリングのために記録される。これらのログは最大30日間保持されます。
  • 最後にレンダリングされたメッセージ:レンダリング中にメモリ上に存在する。また、設定やチャネルによっては、別の場所に保存されることもある(メッセージアーカイブやコンテンツカードなど)。

レンダリングの流れ(ハイレベル)

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

  1. バックグラウンドワーカーは、メッセージが配信される準備ができたときに、メッセージの Liquid テンプレートをレンダリングする。
  2. コネクテッドコンテンツのタグは、Liquidレンダリング中に評価される。
  3. コネクテッドコンテンツのタグごとに、Brazeは多階層のキャッシュをチェックする。キャッシュされた値が存在しない(またはキャッシュが無効になっている)場合、Brazeはエンドポイントを呼び出し、レスポンスを受け取る。
  4. レスポンスは Liquid テンプレートに注入され、メッセージは完全にレンダリングされる。
  5. プロバイダベースのチャネルの場合、レンダリングされたメッセージはチャ ネル・プロバイダに送信され、次にユーザーに送信される。コンテンツカードのようなSDK配信チャネルの場合、レンダリングされたコンテンツはBraze SDKに同期され、ファーストインプレッションまたは表示時に生成することができ、その時点でユーザーに表示される。

コネクテッドコンテンツのレスポンシブが一時的に生きる場所

Brazeは、コネクテッドコンテンツのレスポンスに、:cache_max_age やその他のキャッシュルールの使用状況に応じて、TTLが5分~4時間の多層キャッシュを使用する:

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

これらのキャッシュ層は揮発性であり、設定されたTTLよりも早くデータを消去することができる。

を使うと何が変わるのか? :no_cache

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

最終的なレンダリング出力をどこに置くか

  • メッセージアーカイブ:メッセージアーカイブがイネーブルメントの場合、Brazeは最終レンダリングメッセージを設定したクラウドストレージバケットに書き込むことができる。コネクテッドコンテンツのレスポンスがレンダリングメッセージに含まれている場合、それはアーカイブされたコピーに含まれる。
  • ユーザー機器:配信後、完全にレンダリングされたメッセージ・コンテンツは、ユーザー・デバイス上で未知の時間持続する可能性がある。
  • コンテンツカード:コンテンツカードのレンダリングコンテンツは、カードの有効期限が切れるまで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 では、キャッシュバスティングを行う必要はありません。これは、Braze は POST リクエストの結果をキャッシュすることがないためです。

知っておくべきこと

  • キャッシュは、コネクテッドコンテンツの呼び出しの重複を削減するのに役立ちます。ただしユーザーあたりのコネクテッドコンテンツ呼び出しが1回になるとは限りません。
  • コネクテッドコンテンツのキャッシュは、URL とワークスペースに基づいて行われます。コネクテッドコンテンツ呼び出しの呼び出し先が同一の URL であれば、キャンペーンやキャンバス間でキャッシュすることができます。
  • キャッシュはユーザー ID やキャンペーンではなく、ユニーク URL に基づいて行われます。つまり、キャッシュされたコネクテッドコンテンツ呼び出しは、URL が同じであれば、ワークスペース内の複数のユーザーやキャンペーンで使用される可能性があります。
New Stuff!