访客互动 - 访客会话的开始

  • 访问者访问Sitecore网站,这被视为一种新的互动。Sitecore对交互的定义是“......联系人与品牌联系的任何一点,无论是在线还是离线”。在我们的例子中,这是网站上的新访客会话。
  • Sitecore运行CreateVisits管道。在此管道中,有一个名为UpdateGeoIpData的处理器,它在Sitecore.Analytics.Tracking.CurrentVisitContext中触发一个名为GeoIpManager.GetGeoIpData的方法,该方法启动访问者交互的GeoIP查找。
  • 在GeoIP查找逻辑中,Sitecore将使用访问者的IP地址根据访问者的IP地址生成唯一标识符(GUID)。例如。192.168.1.100 => fd747022-dd48-b1ca-1312-eb4ba55030b2。


注意:Sitecore使用此唯一标识符执行所有GeoIP查找。您可以通过查看MongoDB的GeoIPs集合来查看此ID。该字段名为_id,这是MongoDB在其所有内容中使用的唯一命名约定

  • Sitecore在内存缓存中执行GeoIP数据查找。
 
  • 如果GeoIP数据在内存缓存中,则它会将其附加到访问者的交互中。
 
  • 如果GeoIP数据不在内存缓存中,它将在MongoDB Analytics数据库的GeoIps集合中执行GeoIP查找。
 
  • 如果GeoIP数据在MongoDB Analytics数据库的GeoIps集合中,它会将其附加到访问者的交互并将结果存储在内存缓存中。
 
  • 如果GeoIP数据不在GeoIps集合中,它将使用Sitecore Geolocation服务执行查找,并将结果存储在内存缓存中,并将其附加到访问者的交互中。
注意:成功查找后,GeoIP数据存储在Tracker.Current.Interaction.GeoData(ContactLocation类)中

GeoIP数据缓存

  • 获取GeoIP数据后,它将被添加到属于Sitecore Tracker的字典对象中,以便可以通过Tracker.Current.Interaction.GeoData(如上所示)引用它。
  • 我注意到奇怪的是缓存过期设置为10秒(默认情况下)

代码参考:
          Sitecore.Analytics.Data.Dictionaries.TrackingDictionary 
          private readonly TimeSpan defaultCacheExpirationTimeout = TimeSpan.FromSeconds(10.0);

GeoIP数据 - 访问者会话结束

  • 在访问者的交互/会话结束时,Sitecore将运行CommitSession管道。
 
  • 与CreateVisits管道一样,有一个名为UpdateGeoIpData的处理器,它触发一个名为GeoIpManager.GetGeoIpData的方法(与CreateVisits管道中的代码完全相同)。这再次启动GeoIP查找流程(Cache / MongoDB / GeoIP服务)。
 
  • 似乎这里的意图是在将数据存储在MongoDB中之前确认访问者的GeoData,最终使其成为报告数据库的方式。

Sitecore8.2 GeoIP - 在8.2的引擎盖下发生了什么?的更多相关文章

  1. 第十二周翻译-《Pro SQL Server Internals, 2nd edition》

    <Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 专业SQL服务器内部 了解在引擎盖下发生 ...

  2. 如何打包和生成你的Android应用程序

    原文:http://android.eoe.cn/topic/android_sdk 在生成过程中,你的Android项目的编译和打包成一个apk文件,为您的应用程序二进制的容器.它包含了所有必要的信 ...

  3. KNIME快速入门指南

    一.介绍  KNIME Analytics Platform是用于创建数据科学应用程序和服务的开源软件.KNIME直观,开放,不断整合新的开发,使人们可以理解数据,设计数据科学工作流程和可重用组件. ...

  4. curl英文直译

    文档概述 比较表 curl手册页 常见问题 HTTP脚本编写 mk-ca-bundle 教程 curl / 文件 / 工具文档 /手册页 curl.1手册页 相关: 手动 常见问题解答 HTTP脚本 ...

  5. 2.2WebApi路由在Action上

    这篇文章描述 ASP.NET Web API 如何将 HTTP 请求路由到特定的操作在控制器上. 有关路由的高级别概述,请参见ASP.NET Web API 的路由. 本文着眼于路由进程的详细信息.如 ...

  6. 最好的Java IDE之争:Eclipse PK IntelliJ IDEA

    话说,好马配好鞍,一个好的工匠,必定要有一套好的工具才能打造出最好的工艺给大家.之前,Plumbr团队里的所有成员都使用Eclipse编辑器,而如今,大家都成为IntelliJ IDEA用户.那么,到 ...

  7. PS顶级胶片滤镜插件 Alien Skin Exposure v6.x最新通用汉化补丁

    Alien Skin Exposure v6.0 是一款专业的PS胶片调色滤镜软件,使用Alien Skin Exposure可以迅速将照片调出各种胶片效果,如电影胶片.宝丽来胶片效果.波拉潘胶片效果 ...

  8. 编写快速、高效的JavaScript代码

    许多Javascript引擎都是为了快速运行大型的JavaScript程序而特别设 计的,例如Google的V8引擎(Chrome浏览器,Node均使用该引擎).在开发过程中,如果你关心你程序的内存和 ...

  9. Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN

    快速入门 使用 Spark Shell 进行交互式分析 基础 Dataset 上的更多操作 缓存 独立的应用 快速跳转 本教程提供了如何使用 Spark 的快速入门介绍.首先通过运行 Spark 交互 ...

随机推荐

  1. PBRT笔记(1)——主循环、浮点误差

    PBRT2与3之间的改动 增加了一个功能完备的BRDF模型,支持体积光照与重要性多重路径采样. 次表面散射,基于光线追踪技术,无需预处理. 解决浮点数四折五入的问题 光子映射 样本生成 第一章多了讲并 ...

  2. NEO智能合约开发(二)再续不可能的任务

      NEO智能合约开发中,应用合约比较简单,是的你没看错,应用合约比较简单. 应用合约三部曲,发布.调用.看结果.除了看结果工具比较缺乏,发布调用neogui最起码可以支撑你测试.   鉴权合约比较麻 ...

  3. Scrapy基础(十四)————知乎模拟登陆

    #-*-coding:utf-8 -*-__author__ = "ruoniao"__date__ = "2017/5/31 20:59" 之前我们通过爬取伯 ...

  4. django——文本编辑器

    在博客项目中,为了支持用户的在线编辑博客,我们选用了kindeditor这个强大的编辑器. 以下是对kindeditor的简介,以及在Django中引入这个编辑器的方法:) 1.KindEditor是 ...

  5. C# - 获取windows系统特殊文件夹路径

    一.路径分类 1.绝对路径 完整路径,从磁盘符号开始,如:C:\Windows 2.相对路径 以当前路径为起点,不包含磁盘符号,通常使用“..\”符号来访问上级目录中的文件或文件夹. ../Windo ...

  6. jQuery (01) 浏览器的事件模型

    浏览器的事件模型 由网景公司引入的 DOM0 级事件模型 把事件处理程序绑定到 DOM 元素的属性上: ele.onclick(); ele.onDOMContentLoad(); ele.onloa ...

  7. [LeetCode] Minimum Swaps To Make Sequences Increasing 使得序列递增的最小交换

    We have two integer sequences A and B of the same non-zero length. We are allowed to swap elements A ...

  8. [LeetCode] Cheapest Flights Within K Stops K次转机内的最便宜的航班

    There are n cities connected by m flights. Each fight starts from city u and arrives at v with a pri ...

  9. Educational Codeforces Round 7

    622A - Infinite Sequence    20171123 暴力枚举\(n\)在哪个区间即可,时间复杂度为\(O(\sqrt{n})\) #include<stdlib.h> ...

  10. python语法_字典_字典操作

    字典:使用映射关系来存储数据的 数据类型 dict = {''name“:"gm","age":"34"} 采用键值对来存储数据 key_v ...