訪問者の地理的情報に基づくルール(「(国)が(特定の国)と等しい場合」など) でパーソナライズまたは条件付きレンダリングを使用する場合、最初のリクエストで訪問者に対してパーソナライズされたコンテンツが正しく表示されない場合があります。
この挙動は、GeoIPルックアップ プロバイダーからのGeoIP情報が解決されるまでSitecoreが待機しないように設計されているために発生します。これは、GeoIPの解決プロセスに時間がかかる状況で、Webサイト訪問者の応答時間を短くするために実装されています。
訪問者からの最初のリクエストでもSitecoreにGeoIP情報を待機させるようにするには、以下の手順を実施してください。
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.
}
}
}
このアプローチは、createVisitパイプラインのロジックをオーバーライドし、GeoIp情報が解決されるまでSitecoreを一定時間待機させます。遅延時間はAnalytics.PerformLookup.CreateVisitInterval設定を使用して設定されます。この設定は、新しい訪問の最初のページの要求中に許容される、ルックアップ プロバイダーからの地理データを解決できるようにするための最大遅延を定義します。