地理ベースの条件によるパーソナライズが、訪問者の最初のリクエストで正しく機能しない


解説

訪問者の地理的情報に基づくルール(「(国)が(特定の国)と等しい場合」など) でパーソナライズまたは条件付きレンダリングを使用する場合、最初のリクエストで訪問者に対してパーソナライズされたコンテンツが正しく表示されない場合があります。

この挙動は、GeoIPルックアップ プロバイダーからのGeoIP情報が解決されるまでSitecoreが待機しないように設計されているために発生します。これは、GeoIPの解決プロセスに時間がかかる状況で、Webサイト訪問者の応答時間を短くするために実装されています。

解決策1

訪問者からの最初のリクエストでもSitecoreにGeoIP情報を待機させるようにするには、以下の手順を実施してください。

  1. createVisits パイプライン用のカスタム プロセッサを作成します:
    namespace Sitecore.Support.Analytics.Pipelines.CreateVisits
    {
    using Sitecore.Analytics.Pipelines.CreateVisits;
    using Sitecore.Configuration;
    using Sitecore.Diagnostics;
    using System;
    public class UpdateGeoIpData : CreateVisitProcessor
    {
    public override void Process(CreateVisitArgs args)
    {
    Assert.ArgumentNotNull(args, "args");
    Assert.ArgumentNotNull(args, "args");
    int intSetting = Settings.GetIntSetting("Analytics.PerformLookup.CreateVisitInterval", 5); // retrieve the delay value from the setting.
    args.Interaction.UpdateGeoIpData(TimeSpan.FromSeconds((double) intSetting)); // wait for the time specified in the Analytics.PerformLookup.CreateVisitInterval setting.
    }
    }
    }
  2. <processor type="Sitecore.Analytics.Pipelines.CreateVisits.UpdateGeoIpData, Sitecore.Analytics" /> プロセッサを作成したものと置き換えます。

このアプローチは、createVisitパイプラインのロジックをオーバーライドし、GeoIp情報が解決されるまでSitecoreを一定時間待機させます。遅延時間はAnalytics.PerformLookup.CreateVisitInterval設定を使用して設定されます。この設定は、新しい訪問の最初のページの要求中に許容される、ルックアップ プロバイダーからの地理データを解決できるようにするための最大遅延を定義します。