CN104820668A - 对数据进行压缩序列化以从客户端应用进行传输 - Google Patents

对数据进行压缩序列化以从客户端应用进行传输 Download PDF

Info

Publication number
CN104820668A
CN104820668A CN201510038468.4A CN201510038468A CN104820668A CN 104820668 A CN104820668 A CN 104820668A CN 201510038468 A CN201510038468 A CN 201510038468A CN 104820668 A CN104820668 A CN 104820668A
Authority
CN
China
Prior art keywords
data
content
thread
server
page view
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510038468.4A
Other languages
English (en)
Other versions
CN104820668B (zh
Inventor
蒂莫西·迈克尔·塔利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yahoo Assets LLC
Yahoo AD Tech LLC
Original Assignee
Yahoo Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yahoo Inc filed Critical Yahoo Inc
Publication of CN104820668A publication Critical patent/CN104820668A/zh
Application granted granted Critical
Publication of CN104820668B publication Critical patent/CN104820668B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/146Coding or compression of tree-structured data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • G06F11/3082Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting the data filtering being achieved by aggregating or compressing the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请涉及对数据进行压缩序列化以从客户端应用进行传输。一种系统能够在客户端应用线程(比如,Web浏览器线程)上有效地压缩与页面视图有关的测量数据,并通过互联网将经压缩的数据传输到服务器(比如,分析服务器)。作为压缩的准备,系统能够包括数据扫描、代码构建、代码编码和代码序列化。压缩能够在客户端应用的后台线程上运行,从而不会与客户端应用运行的其他处理相干扰。例如,web工作线程能够实现本文描述的代码压缩。

Description

对数据进行压缩序列化以从客户端应用进行传输
技术领域
本申请涉及从运行客户端应用(比如,web浏览器)的客户设备、跨网络传输压缩的数据。本申请还涉及用于通过客户端应用流式传输(streaming)内容的技术,比如,用于向由web浏览器显示的页面视图流式传输内容的技术。此外,本申请涉及压缩与流式传输内容相关联的数据,这些数据包括与内容流相关联的内容数据和用户交互数据。
背景技术
在复杂的客户端应用和网站的页面视图之中,互联网上正呈现和追踪着逐渐增涨的内容和数据量。在一些实例中,所提供和追踪的内容和数据量的增涨率超过了单位成本的带宽和传输速率的增涨率。当代的针对更快地传输更多数据的补救措施通常关注改进通信通道。另一补救措施是改变正在被传输的数据以使得这些数据更简明或至少更小。
一种已知的使得数据更简明或至少更小的方式是进行压缩。例如,已知和常用的方式是:压缩电子邮件附件以提高电子邮件附件被上传以通过电子邮件进行传输、跨网络在电子邮件服务器之间进行传输、并最终通过接收电子邮件服务器和用户点击下载附件而下载的速度。由于这样的需求,贯穿信息时代压缩技术已经发生了演进,并且出于许多原因改进的信息系统已经被配置为包括数据压缩技术。
然而,当代的用于通过互联网传输追踪的内容数据和用户交互数据以进行分析的方法和系统(这些方法和系统有效地采用了数据压缩)是能够被改进的。本文所描述的是示例改进。
另外,关于通过互联网(尤其是通过流(stream))递送内容,向用户呈现新内容的性能和无缝性仍然会暂时中断(hiccup),尤其是当用户设备包括或连接到具有有限带宽的链路时。本文还描述了用于提升通过互联网进行的内容的递送的无缝性的系统和方法,以及压缩数据和关联的数据以传输的服务器(比如,web分析服务器)的方式。
发明内容
本文描述的是用于有效地压缩与客户端应用线程上的页面视图有关的测量数据(instrumentation data)并通过互联网将压缩的数据传输到服务器(比如,分析服务器)的系统、产品和方法。作为压缩的准备,系统、产品和方法能够包括数据扫描、代码构建、代码解码和代码序列化。压缩能够在客户端应用的后台线程上运行,从而不会与客户端应用运行的其他处理相干扰。例如,web工作线程(worker)能够实现本文所述的代码压缩。
关于数据压缩,测量数据可以包括追踪的内容数据、追踪的页面视图数据、追踪的用户交互数据、以及追踪的客户端应用数据。追踪的内容数据可以包括与内容的实质有关追踪的数据以及与内容的人类可感知特征有关的任何数据(比如,内容的音频和/或视觉特征)。追踪的页面视图数据可以包括与页面视图的人类可感知特征和该页面视图的一个或多个部分有关的追踪的数据。追踪的用户交互数据可以包括关于与页面视图及其内容的用户交互(比如,针对页面视图及其内容的多个方面的点击和其他类型的手势)的追踪的数据。追踪的客户端应用数据可以包括与客户端应用属性和参数(比如,web浏览器版本和这些版本的技术和视觉特征)有关的追踪的数据。追踪的客户端应用数据还可以包括追踪的配置数据。
附图说明
参照以下附图和描述可以更好地理解这些系统和方法。参照以下附图描述了非限制性和非穷尽性的示例。附图中的部件不一定是按比例绘制的,而重点在于阐明系统的原理。在附图中,遍布不同的视图,相同的标号指代相应的部分。
图1示出了示例信息系统的框图,该示例信息系统包括网络的示例设备,这些示例设备能够通信地与对数据执行客户端压缩以传输到服务器的示例系统相耦合。
图2示出了在每个客户端应用的会话中由客户端应用呈现的示例屏幕的最初和最新显示的广告项和内容项,比如,在客户端应用(比如,web浏览器)的会话中,在该客户端应用的页面视图上流式传输的初始图形项和新图形项。
图3示出了图1的示例信息系统(信息系统100)与对数据执行客户端压缩以传输到服务器(比如,分析服务器)的示例系统(系统300)进行交互的框图。
图4-6示出了由能够对数据执行客户端压缩以传输到服务器的示例系统(比如,图3的系统300)执行的示例操作。
图7描绘了能够运行图4-6的操作以及其他客户端应用凑欧洲的一个或多个线程。
图8示出了由能够通过在压缩之前对数据的扫描进行分批处理来对数据在客户端进行压缩以传输到服务器进行扼制(throttle)的示例系统(比如,图3的系统300)执行的示例操作。
图9示出了由能够呈现看起来流式传输无限的无缝内容量的页面视图、并且能够对与无缝内容相关联的数据执行客户端压缩以传输到服务器的示例系统(比如,图3的系统300)执行的示例操作。
图10是示例电子设备的框图,该示例电子设备能够实现能够对数据执行客户端压缩以传输到服务器的示例系统(比如,图3的系统300和通信地耦合到系统300的系统)的或与其有关的一个或多个方面。
具体实施方式
后文将参照附图更全面地描述主题,附图形成了本申请的一部分并通过图示的方式示出了具体示例。然而,主题可能以各种不同的形式来实施,因此,涵盖和要求保护的主题意在被解释为不限于本文所提出的任何示例;所提供的示例仅是示意性的。同样地,涵盖和要求保护的主题意在具有合理宽泛的范围。除其他之外,例如,主题可以被实施为方法、设备、部件或系统。因此,下面的详细描述不意在限制所要求保护的范围。
图1示出了示例信息系统的框图,该示例信息系统包括网络的示例设备,这些示例设备通信地与对数据执行客户端压缩以传输到服务器(比如,以进行分析)的示例系统相耦合。图1的示例中的信息系统100包括账户服务器102、账户数据库104、搜索引擎服务器106、广告服务器108、广告数据库110、内容数据库114、内容服务器112、内容缓存服务器116、分析服务器118以及分析数据库119。上面提到的服务器和数据可以通过网络120通信地耦合。
信息系统100可以由一个或多个广告商设备(比如,广告商设备122)和一个或多个用户设备(比如,用户设备124)通过网络120进行访问。在这样的在线信息系统的各种示例中,用户可以通过网络120从源搜索并获得内容,比如,从搜索引擎服务器106、广告服务器108、广告数据库110、内容数据库114、内容服务器112和内容缓存服务器116获得内容。广告商可以提供用于在诸如网页之类的电子特性结构(electronic properties)上的广告,以及通过网络发送到用户设备(比如,用户设备124)的其他通信。在线信息系统能够由诸如Yahoo!公司之类的在线提供商来布设和运营。
账户服务器102存储广告商的账户信息。账户服务器102与账户服务器102进行数据通信。账户信息可以包括与各个广告商相关联的一个或多个数据库记录。任何合适的信息都可以由账户管理服务器102进行存储、维护、更新、并从账户数据库104中读取。示例包括广告商标识信息、广告商安全信息(比如,密码和其他安全证书)、账户平衡信息、以及经压缩的关于与他们的广告相关联的内容和与他们的广告和相关联的内容的用户交互的信息。并且,示例包括与他们的广告和相关联的内容以及与上述内容的用户交互有关的分析数据。
账户服务器102可以使用任何合适的设备来实现。账户管理服务器102可以被实现为单个服务器、多个服务器、或本领域已知的任何其他类型的计算设备。能够通过防火墙完成对账户服务器102的访问,该防火墙保护账户管理程序和账户信息免受外部篡改。可以通过增强来向标准通信协议提供附加的安全性,比如,安全HTTP(HTTPS)或安全套接层(SSL)。例如,这样的安全性可以被应用于图1的服务器。
账户服务器可以提供广告商前端以简化访问广告商的账户信息的过程。广告商前端可以是形成用户界面的程序、应用或软件例程。在具体示例中,广告商前端可作为具有一个或多个电子特性结构的网站被访问,来访的广告商可以在广告商设备(比如,广告商设备122)上查看这些电子特性结构。广告商可以使用广告商前端查看和编辑账户数据和广告数据。在编辑账户数据之后,可以将账户数据保存到账户数据库104。
搜索引擎服务器106可以是计算机系统、一个或多个服务器、或本领域已知的任何其他计算设备。可替代地,搜索引擎服务器106可以是存储在计算机可读存储介质上的计算机程序、指令或软件代码,该计算机可读存储介质可以在单个服务器、多个服务器、或本领域已知的任何其他类型的计算设备的处理器上运行。搜索引擎服务器106可以被用户设备(比如,由用户操作的用户设备124)通过网络120进行访问。
用户设备124将用户查询传输至搜索引擎服务器106。搜索引擎服务器106使用任何合适的协议或算法定位匹配信息并将该信息返回给用户设备124。搜索引擎服务器106可以被设计为帮助用户查找位于互联网或内联网上的信息。在示例中,搜索引擎服务器106可以通过网络120向用户设备124提供带有内容的电子特性结构(比如,网页),该内容包括操作用户设备124的用户感兴趣的搜索结果、与用户查询的上下文匹配的信息、到其他网络目的地的链接、或信息和信息的文件,以及被选择以显示给用户的内容项和广告项的流或网页。上面提到的由搜索引擎服务器106提供的信息可以是本文描述的经过扫描、构建、追踪、序列化、编码、压缩和/或传输的数据的一部分。
搜索引擎服务器106可以使得设备(比如,用户设备124或任何其他客户设备)能够使用搜索查询搜索感兴趣的文件。通常,搜索引擎服务器106可以经由一个或多个服务器或者直接通过网络120被客户设备访问。搜索引擎服务器106可以包括爬行器部件、索引器部件、索引存储部件、搜索部件、排名部件、缓存、简档存储部件、注册部件、简档构建器、以及一个或多个应用编程接口(API)。搜索引擎服务器106例如可以以分布式方式(比如,通过一组分布式服务器)来布设。这些部件可以在网络内被复制,比如,用于冗余或更好的访问。
广告服务器108操作来将广告提供给用户设备(比如,用户设备124)。广告包括定义用户设备的用户可能感兴趣的广告信息的数据。广告可以包括文本数据、图形数据、图像数据、视频数据或音频数据。广告还可以包括定义到提供这样的数据的其他网络资源的一个或多个链接的数据其他位置可以是互联网上的其他位置、由广告上操作的内联网上的其他位置、或任何接入点。上面提到的定向(targeting)数据可以是本文描述的经过扫描、构建、追踪、序列化、编码、压缩和/或传输的数据的一部分。上面提到的由广告服务器108提供的广告可以是本文描述的经过扫描、构建、追踪、序列化、编码、压缩和/或传输的数据的一部分。
对于在线信息广告可以被显示在电子特性结构上,这些电子特性结构是由于至少部分地基于一个或多个搜索项的用户定义的搜索而产生的。如果所显示的广告与一个或多个用户的兴趣有关,则广告对于用户、广告商或web门户是有益的。因此,已经开发了各种技术来推断用户兴趣、用户意图或随后将相关广告定向到用户。上面提到的定向数据可以是本文描述的经过扫描、构建、追踪、序列化、编码、压缩和/或传输的数据的一部分。
呈现定向广告的一种途径包括采用人口统计特征(例如,年龄、收入、性别、职业等)来(比如,按群组地)预测用户行为。可以至少部分地基于预测的用户行为将广告呈现给目标受众中的用户。上面提到的定向数据可以是本文描述的经过扫描、构建、追踪、序列化、编码、压缩和/或传输的数据的一部分。
另一途径包括简档类型广告定向。在此途径中,例如可以通过追踪用户经过网站或站点的网络的路径、并至少部分地基于最终递送的页面或广告编译简档,来生成用户专门的用户简档以对用户行为进行建模。例如,比如可以针对用户购买标识相关性。标识的相关性可以用于通过将内容或广告定向到特定用户来定向潜在购买者。上面提到的定向数据可以是本文描述的经过扫描、构建、追踪、序列化、编码、压缩和/或传输的数据的一部分。
另一途径包括基于用户所请求的电子特性结构的内容进行定向。广告可以被投放在电子特性结构上,或者与和广告的主题有关的其他内容相关联。可以以任何合适的方式来判定内容和广告之间的关系。例如可以通过分析电子特性结构中所呈现的内容来确定该电子特性结构的整体主旨。而且,已经开发了用于显示适合于用户当前正在查看的文章的具体章节的广告的技术。相应地,可以通过将广告内的关键词和/或短语与电子特性结构相匹配来选择广告。上面提到的定向数据可以是本文描述的经过扫描、构建、追踪、序列化、编码、压缩和/或传输的数据的一部分。
广告服务器108包括可操作来格式化广告数据以传输到用户设备的逻辑和数据。广告服务器108与广告数据库110进行数据通信。广告数据库110存储将被提供给用户设备的信息,这些信息包括定义广告的数据。广告数据可以被另一数据处理设备或广告商存储在广告数据库110中。广告数据可以包括定义相应广告的广告创意和报价金额的数据。上面提到的广告格式化和定价数据可以是本文描述的经过扫描、构建、追踪、序列化、编码、压缩和/或传输的数据的一部分。
广告数据可以被格式化为可以包括在提供给用户设备的内容项和广告项的流中的广告项。格式化的广告项能够由外观、大小、形状、文本格式化、图形格式化以及所包括的信息来表征,格式化的广告项可以被标准化以为流中的广告项提供一致的外表。
此外,广告服务器108与网络120进行数据通信。广告服务器108通过网络120将广告数据和其他信息传输到设备。这些信息可以包括传输到用户设备的广告数据。这些信息还可以包括与广告商设备(比如,广告商设备122)进行传输的广告数据和其他信息。操作广告商设备的广告商可以通过网络访问广告服务器108以访问包括广告数据的信息。该访问可以包括开发广告创意、编辑广告数据、删除广告数据、设置和调整报价金额、以及其他活动。广告服务器108随后将这些广告项提供给其他网络设备(比如,内容缓存服务器116)。
广告服务器108可以提供广告商前端以简化访问广告商的广告数据的过程。广告商前端可以是形成用户界面的程序、应用或软件例程。在具体示例中,广告商前端可作为具有一个或多个电子特性结构的网站被访问,来访的广告商可以在广告商设备上查看这些电子特性结构。广告商可以使用广告商前端查看和编辑广告数据。在编辑广告数据之后,广告数据可以被保存到广告数据库110中,以随后在广告中传输到用户设备。
广告服务器108可以是计算机系统、一个或多个服务器、或本领域已知的任何其他计算设备。可替代地,广告服务器108可以是存储在计算机可读存储介质上的计算机程序、指令或软件代码,该计算机可读存储介质可以在单个服务器、多个服务器、或本领域已知的任何其他类型的计算设备的处理器上运行。
内容服务器112和内容缓存服务器116可以访问关于来自内容数据库114或来自通过网络120可访问的另一位置的内容项的信息。内容服务器112和内容缓存服务器116通过网络120将定义内容项和其他信息的数据传输到设备。例如,内容缓存服务器116能够传输来自内容缓存服务器116中的队列的超链接,其中,这些超链接包括到提供的内容(比如,从内容服务器112或另一内容源提供的内容)的地址。这些超链接例如能够链接到本文描述的流中所提供的内容。一般来说,关于聂荣项的信息可以包括被传输到用户设备的任何类型的内容数据。
关于内容项的信息还可以包括有操作内容提供商设备的内容提供商传输的内容数据过和其他信息。操作内容提供商设备的内容提供商可以通过网络120访问内容服务器112或内容缓存服务器116以访问包括内容数据的信息。该访问可以用于开发内容项、编辑内容项、删除内容项、设置和调整报价金额、以及其他活动。
内容服务器112或内容缓存服务器116可以提供内容提供商前端以简化访问内容提供商的内容数据的过程。内容提供商前端可以是形成用户界面的程序、应用或软件例程。在具体示例中,内容提供商前端可作为具有一个或多个电子特性结构的网站被访问,来访的内容提供商可以在内容提供商设备上查看这些电子特性结构。内容提供商可以使用内容提供商前端查看和编辑内容数据。在(比如,在内容服务器112或另一内容源处)编辑内容数据之后,内容数据可以被保存到内容数据库114或内容缓存服务器116中,以随后传输到用户设备。在示例中,内容缓存服务器116专用于(比如,通过队列和/或栈)缓存内容和内容数据,以随后传输到用户设备(比如,图3的客户设备301)。
内容服务器112或内容缓存服务器116包括可操作来格式化内容数据或其他信息以传输到用户设备的逻辑和数据。内容服务器112或内容缓存服务器116还能够将这些内容项提供给其他网络设备。内容服务器112能够将这些内容项和到这样的项的链接提供给内容缓存服务器116,内容缓存服务器116总重将这些项提供给用户设备(比如,图3的客户设备301)。
内容数据可以被格式化为可以包括在提供给用户设备的内容项和广告项的流中的内容项。格式化的内容项能够由外观、大小、形状、文本格式化、图形格式化以及所包括的信息来表征,格式化的内容项可以被标准化以为流中的内容项提供一致的外表。
在示例中,内容项具有相关联的报价金额,该报价金额可以用于在呈现给用户设备的项的流中对这些内容项进行排名或定位。在其他示例中,内容项不包括报价金额,或者报价金额不用于对这些内容项进行排名。这样的内容项可以被看作是非收益生成项。
内容服务器112和/或内容缓存服务器116能够包括可操作来格式化内容数据和其他信息以传输到用户设备的逻辑和数据。内容服务器112和/或内容缓存服务器116随后能够将这些内容项提供给其他网络设备(比如,广告服务器108)。
内容缓存服务器116能够是地理上分布以促进更快地对数据进行检索的多个内容缓存服务器之一。例如,用户设备(比如,客户设备301)可以从地理上最近的内容缓存服务器、或者在最近的内容缓存服务器忙碌的情况下从地理上次近的内容缓存服务器接收内容数据。换言之,所使用的内容缓存服务器能够取决于哪个内容缓存服务器应该最快地向发出请求的用户设备提供数据的判定。判定能够根据在服务器处或与服务器相关联地出现的流量,和/或到发出请求的设备的地理接近度。并且,在示例中,能够利用各种捷径来判定与服务器相关联的流量或地理上最近的服务器。例如,智能域名系统(DNS)能够用于判定最近的内容缓存服务器。并且,在一个示例中,为促进内容递送的速度,内容数据能够被存储在内容缓存服务器116的RAM中,并通过轻量代理服务器(比如,通过Apache服务器实现的轻量代理服务器)来提供。
上面提到的服务器和数据库可以通过任意合适的计算设备来实现。计算设备可以比如通过有线或无线网络发送或接收信息,或者可以在比如物理存储器状态的存储器中处理或存储信号,并因此可以像服务器那样运作。从而,能够像服务器那样运作的设备例如可以包括专用机架式服务器、桌面式计算机、膝上型计算机、机顶盒、组合各种特征(比如,上述设备的两个或多个特征)的集成设备等等。
服务器在配置或能力上可能存在显著变化,当通常来说,服务器可以包括一个或多个中央处理单元和存储器。服务器还可以包括一个或多个大容量存储设备、一个或多个电源、一个或多个有线或无线网络接口、一个或多个输入/输出接口,或一个或多个操作系统(比如,Windows服务器、Mac OS X、Unix、Linux、FreeBSD等等)。
上面提到的服务器和数据库可以被实现为在线服务器系统,或者可以与在线服务器系统进行通信。在线服务器系统可以包括包括(响应于对页面视图或的请求或以其他内容递送形式)经由网络将数据提供给其他设备的配置的设备。在线服务器系统例如可以容宿(host)诸如社交网络站点之类的站点,这样的站点的示例可以包括但不限于:Flicker、Twitter、Facebook、LinkedIn、或个人用户站点(比如,博客、微博、在线交友站点等)。在线服务器系统还可以容宿各种其他站点,这些站点包括但不限于:的站点、教育站点、词典站点、百科全书站点、维基、金融站点、政府站点等。
在线服务器系统还可以提供各种服务,这些服务可以包括:web服务、第三方服务、音频服务、视频服务、电子邮件服务、即时消息(IM)服务、SMS服务、MMS服务、FTP服务、IP语音(VOIP)服务、日历服务、照片服务等等。内容的示例可以包括文本、图像、音频、视频等等,这些内容的示例例如可以以物理信号(比如,电信号)的形式进行处理,或者例如可以被存储在实体状态存储器中。可以像在线服务器系统那样运作的设备的示例包括桌面式计算机、多处理器系统、微处理器型或可编程消费性电子产品等。在线服务器系统可以或可以不与本文描述的服务器和数据库有共同所有权,或者由本文描述的服务器和数据库来控制。
网络120可以包括任何数据通信网络和网络的组合。例如,网络可以耦合设备,以使得通信可以在比如服务器和客户设备或其他类型的设备之间(包括在通过无线网络耦合的无线设备之间)进行交换。例如,网络还能够包括大容量存数设备,比如,网络附接存储设备(NAS)、存储区域网络(SAN)、或其他形式的计算机或机器可读介质。网络可以包括互联网、一个或多个局域网(LAN)、一个或多个广域网(WAN)、线缆型连接、无线型连接、或其任意组合。同样地,子网络比如可以采用不同架构,或者可以遵循不同协议或与不同协议兼容,可以在较大网络(比如,网络120)内交互操作。
可以使得各种类型的设备能够用于为不同架构或协议提供彼此协作的能力。例如,路由器可以再否则分开或独立的LAN之间提供链路。通信链路或通道例如可以包括模拟电话线(比如,双绞线),同轴线缆,包括T1、T2、T3或T4型线的全数字或部分数字线,集成服务数字网络(ISDN)、数字用户线(DSL)、包括卫星链路的无线链路、或本领域技术人员可能知道的其他通信链路或通道。而且,例如,计算设备或其他有关电子设备可以被远程地耦合到网络,比如,通过电话线或链路。
广告商设备122包括可以通过网络120访问信息系统100的任何数据处理设备。广告商设备122可操作来通过网络120与本文所述的任何服务器或数据库进行交互。广告商设备122可以实现用于查看电子特性结构和提交用户请求的客户端应用(比如,web浏览器)。广告商设备122可以将数据传输到信息系统100,这些数据包括定义电子特性结构和其他信息的数据。广告商设备122可以从信息系统100接收通信,这些通信包括定义电子特性结构和广告创意的结构。
在示例中,内容提供商可以使用内容提供商设备访问信息系统100,这些内容提供商设备在结构和功能上通常类似于广告商设备。例如,内容提供商设备提供对内容数据库114中的内容数据的访问。
用户设备124包括可以通过网络120访问信息系统100的任何数据处理设备。用户设备124可操作来通过网络120与搜索引擎服务器106、广告服务器108、内容服务器112、内容缓存服务器116、以及分析服务器118进行交互。用户设备124可以实现用于查看电子内容和提交用户请求的客户端应用(比如,web浏览器)。操作用户设备124的用户可以宿儒搜索请求并将该搜索请求传输至信息系统100。搜索引擎处理该搜索请求,搜索结果被返回给用户设备124。
在其他示例中,用户设备124的用户可以从在线信息系统100请求数据,比如,信息的页面。反而,可以在另一环境中(比如,本地移动应用、TV应用、或音频应用)提供数据。在线信息系统100可以提供数据或将浏览器重定向到另一数据的源。另外,广告服务器可以从广告数据库110中选择广告并将定义这些广告的数据包括在提供给用户设备124的数据中。
当访问信息系统100上的信息时,广告商设备122和用户设备124像用户设备那样运作。客户设备(比如,广告商设备122和用户设备124)可以包括比如能够通过有线或无线网络发送或接收信号的计算设备。客户设备例如可以包括桌面式计算机或便携式设备,比如,蜂窝电话、智能电话、显示呼叫器、射频(RF)设备、红外设备、个人数字助理(PDA)、手持式计算机、平板计算机、膝上型计算机、机顶盒、可穿戴计算机、组合各种特征(比如,上述设备的特征)的集成设备等等。在图1的示例中,能够是客户设备的膝上型计算机126和智能电话128都可以作为广告商设备或者用户设备。
客户设备的功能和特征可能不同。所要求保护的主题意在覆盖可能的变体的宽泛的范围。例如,手机可以包括具有有限功能的数字按键或用于显示文本的显示器,比如,单色液晶显示器(LCD)。然而相反地,如另一示例,web启用的客户设备例如可以包括一个或多个物理或虚拟键盘、大容量存储设备、一个或多个加速计、一个或多个陀螺仪、全球定位系统(GPS)或其他位置标识类型的能力、或具有高级功能的显示器(比如,触摸敏感彩色2D或3D显示器)。
客户设备(比如,广告商设备122和用户设备124)可以包括或运行各种操作系统,这些操作系统包括个人计算机操作系统(比如,Windows、iOS或Linux)或移动操作系统(比如,iOS、Android或Windows Mobile)等等。客户设备可以包括或运行各种可能的应用,比如使得能够比如通过电子邮件、短消息服务(SMS)、或多媒体消息服务(MMS)(包括通过诸如社交网络之类的网络(例如,Facebook、LinkedIn、Twitter、Flickr或Google+))与其他设备进行通信(比如,传输一个或多个消息)的客户软件应用,所提供的仅是若干可能的示例。客户设备还可以包括或运行用于传输内容(比如,文本应用、多媒体应用等等)的应用。客户设备还可以包括或运行用于执行各种可能的任务(比如,浏览、搜索、播放各种形式的内容,这些内容包括本地或远程地存储或流失传输的视频或游戏)的应用。提供上述内容以阐明所要求保护的主题意在包括可能的特征或能力的宽泛的范围。通过本文描述的各种处理,特征、能力以及与上面提到的这些的交互中的至少一些可以被追踪、序列化、编码、压缩并传输到有关服务器。
并且,所公开的方法和系统可以至少部分地在云计算环境中、至少部分地在服务器中、至少部分地在客户设备中、或其组合中被实现。
图2示出了在每个客户端应用的会话中由客户端应用呈现的示例屏幕的最初和最新显示的广告项和内容项,比如,在客户端应用(比如,web浏览器)的会话中,在该客户端应用的页面视图上流式传输的初始图形项和新图形项。所显示的内容项和广告项可以由图1的搜索引擎服务器106、广告服务器108、内容服务器112或内容缓存服务器116来提供。
在图2中,显示广告202被示出为显示在各种显示器上,包括移动web设备显示器204、移动应用显示器206和个人计算机显示器208。移动web设备显示器204可以出现在移动手持式设备(比如,智能手机)的显示屏幕上。移动应用显示器206可以出现在便携式设备的(比如,平板电脑)的显示屏幕上。个人计算机显示器208可以显示在个人计算机(PC)的显示屏幕上。
显示广告202在图2中被示出为针对在用户设备上显示进行格式化,但不作为示出了这样的显示广告的内容的示例的流的一部分被显示。显示广告202包括文本212、图形图像214和定义的边界216。显示广告202能够由广告商开发以投放在电子特性结构(比如,网页)上,该电子特性结构被发送到用户操作的用户设备。显示广告202可以被投放在电子特性结构上的各种各样的位置上。定义的边界216和显示广告的形状能够与电子特性结构上的可用的空间相匹配。如果可用的空间具有错误的形状或大小,则显示广告202可能无法使用。
为克服这些要求和限制,显示广告202可以针对包括在内容项和广告项的流(包括含有显示广告202的内容的流广告)中被重新格式化或替代格式化。上面提到的针对包括在流中进行的重新格式化或替代格式化发生在内容缓存服务器116和/或内容服务器112中。例如,针对包括在流中进行的重新格式化或替代格式化可以发生在内容服务器112,但是这些活动的结果可以在内容缓存服务器116处被缓存和/或细化。
在这些示例中,显示广告被示出为流224a、224b和224c的一部分。流224a、224b和224c包括一项接一项显示的项的序列,例如,沿移动web设备显示器204、移动应用显示器206和个人计算机显示器208上看到的电子特性结构向下。流224a、224b和224c可以包括任何类型的项。在所示的示例中,流224a、224b和224c包括内容项和广告项。例如,流224a包括内容项225a和228a以及广告项222a;流224b包括内容项226b、228b、230b、232b、234b和广告项222b;并且流224c包括内容项226c、228c、230c、232c、234c和广告项222c。参照图2,内容项能够是由非广告商发布的项。然而,这些内容项可以包括广告组分。流224a、224b和224c中的每个可以包括任何数目的内容项和广告项。
在示例中,流224a、224b和224c可以被布置为作为无尽的项的序列呈现给用户,以使得显示流224a、224b和224c之一的用户设备的用户滚动显示屏,看起来无尽的项的序列被呈现在所显示的流中。例如,滚动能够通过滚动条240a和240b或通过其他已知的操纵方式(比如,用户在显示流224a、224b和224c的触摸屏上向下或向上拖动他或她的手指)来进行。
为增强表面上无尽的项的序列以使得这些项随着用户的操纵而更快地显示,这些项能够由与客户端应用或页面视图相关联的本地缓存和/或远程缓存(比如,嵌入在内容缓存服务器116中的远程缓存)进行缓存。这样的缓存可以包括用于存储内容项或到这些内容项的链接的队列或栈。
位于流224a、224b和224c中的内容项可以包括新的项、与商务有关的项、与运动有关的项等。此外,除文本或图形内容中户外,任何流的内容项还可以包括其他数据,比如音频和视频数据或应用。每个内容流可以包括文本、图形、其他数据、以及到附加信息的链接。点击或以其他方式选择链接将用户的设备上的浏览器重定向到被称作着陆页(landing page)的、包含附加信息的电子特性结构。例如,点击或以其他方式选择链接、重定向到着陆页,着陆页以及附加信息能够分别被追踪,随后与追踪相关联的数据能够被序列化、编码、压缩并传输到有关服务器(比如,分析服务器118或账户服务器102)。一旦被有关服务器接收,经压缩的数据能够被解压缩和解码为序列化数据。并且,序列化的数据能够被反向处理为或接近其初始状态。例如,分析服务器能够接收分批扫描的、序列化的、编码的和经压缩的与页面视图的一个或多个流相关联的数据,并且反向进行这些处理以将数据推导到其初始状态或近初始状态。随后,推导得出的数据能够用于分析和其他通途。
像流224a、224b和224c之类的流广告可以被插入内容的流中,以增补有关项的序列、为最终用户提供更无缝的体验。类似于内容项,广告项可以包括文本或图形内容以及其他数据,比如,音频和视频数据或应用。每个广告项222a、222b和222c可以包括文本、图形、其他数据以及到附加信息的链接。点击或以其他方式选择链接将用户的设备上的浏览器重定向到被称作着陆页的电子特性结构。例如,点击或以其他方式选择链接、重定向到着陆页,着陆页以及附加信息能够分别被追踪,随后与追踪相关联的数据能够被序列化、编码、压缩并传输到有关服务器(比如,分析服务器118或账户服务器102)。
尽管示例流224a、224b和224c被示出为分别具有的单一可见广告项222a、222b和222c,但是项的流中可以包括任意数目的广告项。而且,广告项可以被槽插(slot)在内容内,比如针对所有用户槽插同样的广告项或基于个性化或分组(比如,按照受众成员或内容分组)进行槽插。对槽插的调整可以根据各种方面和算法。槽插的概念仅是诸多互联网营销策略之一,这些互联网营销策略能够通过图3的系统300或本文描述的其他系统、模块或操作(比如,图4-9示出的操作)之一来进行优化。
图3示出了图1的示例信息系统(信息系统100)与对数据执行客户端压缩以进行web分析的示例系统(系统300)进行交互的框图。例如,图3示出了能够通过内容扫描、内容模型构建、内容和用户交互追踪、数据序列化、数据编码、和/或数据压缩使得通过最小量的分组将最大量的数据传输到账户服务器102和/或分析服务器118的系统300。在示例中,系统300使得能够从客户设备301(比如,用户设备124、126或128)向服务器设备(比如,通过信息系统100的网络120连接到客户设备的服务设备)上传最大量的数据。考虑到通过web应用呈现和追踪的不断增涨的内容和数据量、有限的带宽、以及对速率的不断增涨的需求,具有能够通过压缩而在每分组上传大量数据的系统是特别有用的。
如图所示,系统300容宿在客户设备301上。然而,系统300的任何一个或多个描绘的方面可以容宿在客户设备301外部的设备上。并且,如图所示,系统300是通过客户端应用(比如,web浏览器)容宿在客户设备301上的。然而,系统300的任何一个或多个描绘的方面可以不具有容宿应用或者由除客户端应用303之外的另一应用容宿。
系统300包括代码扫描仪302、代码构建器304、序列化设备306、代码压缩器308、以及通信接口310。系统300还包括用户交互追踪器312和内容追踪器320。代码扫描仪302至少通信地耦合到代码构建器304和一个或多个内容源(例如,图1的内容缓存服务器116、内容服务器112、广告服务器108、和搜索服务器106)。
将被代码扫描仪302扫描的内容316能够通过电子特性结构的页面视图(比如,web页面视图)、媒体播放器的流式传输的音频和/或视频、任何其他形式的电子内容递送、或其任何组合来提供。大多数情况下,为便利起见,本申请描述与页面视图的交互。然而,本文描述的系统300和其他系统和方法的示例方面能够与媒体播放器的流式传输的音频和/或视频、任何其他形式的电子内容递送、或其任何组合进行交互。
能够通过网络120将这样的内容从(一个或多个)内容源传输到客户设备301。一旦客户设备301接收到内容316,代码扫描仪302就能够扫描内容316的至少一部分。内容(比如,内容316)能够是被配置为通过显示器、扬声器、或任何其他用户接口设备中的一个或多个呈现的任何电子形式的内容。例如,内容316能够包括音频、视觉、触觉、或任何其他形式的人类可感知的信息中的一个或多个。
在内容316的至少一部分位于页面视图内、并且可获得至少页面视图的该部分的源代码的情况下,代码扫描仪302能够扫面该源代码以识别源代码的对象。在源代码包括一个或多个文档(比如,源代码包括HTML和/或XML)的情况下,代码扫描仪能够使用计算机程序(比如,文档对象模型(DOM)脚本)来进行搜索并识别源代码的一个或多个文档的DOM的对象。例如DOM是,用于表示和与HTML和XML文档中的对象进行交互的跨平台和语言无关的约定。DOM脚本能够包括能够以各种方式与DOM进行交互的脚本计算机语言,比如,JAVASCRIPT和PHP。
DOM脚本、其他客户端应用脚本、小应用程序、其他软件、类似的固件、类似的计算机硬件、及其任何组合能够用于实现代码扫描仪302、追踪器312和320、序列化设备306、代码压缩器308、以及通信接口310。
再次参照系统300的架构,代码构建器304至少通信地耦合到代码扫描仪302和序列化设备306。代码扫描仪302还能够通信地耦合到用户交互追踪器312和内容追踪器320。用户交互追踪器312还至少通信地耦合到代码构建器304和序列化设备306。内容追踪器320也至少通信地耦合到代码构建器304和序列化设备306。序列化设备306至少通信地耦合到代码压缩器308、代码构建器304、用户交互追踪器312、和内容追踪器320。代码压缩器308至少通信地耦合到至少序列化设备306和通信接口310。上面提到的耦合可以是直接耦合或者可以通过中间设备进行耦合。上面提到的系统300的部件中的每个可以直接或间接通信地相互耦合。例如,代码压缩器308和序列化设备306可以通过代码编码器相耦合。
系统300还包括代码扫描仪302、代码构建器304、序列化设备306、代码压缩器308、通信接口310、以及追踪器312和320的相应的配置器322、324、326、328、330、332和334。在页面视图期间,相应的配置器322、324、326、328、330、332和334能够即时地(on the fly)配置代码扫描仪302、代码构建器304、序列化设备306、代码压缩器308、通信接口310、以及追踪器312和320执行他们相应的处理。能够通信地耦合到其他相关联的服务器(比如,账户服务器102和分析服务器118)的与系统300相关联的服务器能够向相应的配置器322、324、326、328、330、332和334传输配置数据318。例如,即时配置允许在不刷新页面视图或向(除内容缓存服务器之外的)客户端应用303外部的服务器或设备发送请求的情况下发生各种复杂的特征和交互。
系统300还能够包括代码扫描仪302、代码构建器304、序列化设备306、代码压缩器308、通信接口310、以及追踪器312和320的相应的终止器(未示出)。相应的终止器能够终止或至少中断代码扫描仪302、代码构建器304、序列化设备306、代码压缩器308、通信接口310、以及追踪器312和320所执行的操作。相应的终止器还能够完全终止代码扫描仪302、代码构建器304、序列化设备306、代码压缩器308、通信接口310、以及追踪器312和320并将其从页面视图的会话或甚至客户端应用303的整个会话中移除。在示例中,在重新启动系统的部件之前(比如,在重新启动会话中的部件的情况下),可能需要运行相应的终止器。
并且,在页面视图期间或在客户端应用303的会话期间,能够即时执行对这些部件或这些部件的处理的终止或中断。这允许各种特征和交互被立即限制。例如,相应的终止器能够通信地耦合到安全部件,以使得在感染或可能感染病毒或一些其他形式的腐蚀或安全漏洞时系统或系统的部件的任何操作能够被终止。
在示例中,代码扫描仪302能够被配置为在线程(比如,客户端应用303的前台线程(例如,图4-6中分别示出的(一个或多个)前台线程416、516和616))上运行代码扫描处理(例如,图4-6中分别示出的代码扫描422、522和622)。触发(比如,来自远程控制服务器或本地控制器的通信)可以启动由代码扫描仪302进行的扫描。触发可以是接收到将要追踪的电子特性结构的一个或多个区段的指示,比如通过HTTP或HTTPS请求来追踪电子特性结构。
在扫描处理中,代码扫描仪302能够通过线程被配置为接收将要追踪的内容316的一个或多个区段的指示。并且,在扫描处理中,代码扫描仪302能够通过线程被配置为扫描内容316的结构和/或组织,比如,扫描电子特性结构的DOM(比如,网页的DOM)的至少一部分。代码扫描仪302能够被配置为扫描在内容的一个或多个区段的至少一个中的内容316的结构和/或组织。在示例中,内容316的一个或多个区段是与内容相关联的源代码块。例如,源代码块可以是电子特性结构的源代码块。
在扫描处理中,代码扫描仪302还能够被配置为根据所扫描的内容316的区段识别一个或多个锚点。例如,代码扫描仪302能够被配置为能够被配置为根据所扫描的内容316的结构和/或组织(比如,根据所扫描的电子特性结构的DOM的至少一部分)识别一个或多个锚点。锚点能够包括标识页面视图的多个部分、到页面视图的元素或到其他内容的链接、或到与页面视图相关联的计算机程序的链接的文本。在示例中,这些链接能够是HTML或XML超链接。锚点能够是除源代码的文本之外的其他形式,并且能够提供本文未指出的其他功能。
锚点和锚点的类型能够是标准的或定制的,比如,定制为适合容宿内容316的电子特性结构。能够通过伴随从内容源或从系统的控制部分(比如,控制服务器)传输的内容316的代码段或配置对象进行定制。配置代码还能够包括调试部件,该调试部件用于调试扫描、日志记录,并可能用于记录的数据的最终构建和组织。配置代码和对象能够是自动和/或手动创建的。
在示例中,代码扫描仪能够被配置为例如通过机器学习自动判定将要扫描内容316的哪些区段。例如,能够判定内容列表中的哪些链接视图能够被扫描。随着扫描的进行,代码扫描仪可以将相应的数据记录在数据结构(比如,数组)中。在示例中,代码扫描仪能够自动记录与所判定的或所选择的锚点和/或区段相关联的链接视图。区段和锚点能够被选择以通过列表(比如,数组数据结构)中的键值对进行扫描。例如,对的列表可以是多维的,从而可以标识对之间的关系。键值对可以代表符号的各种实例,这些符号的实例表示内容的区段划分、段落和其他方面,比如,电子特性结构的源代码的结构元素。
在可能发生在扫描过程中的内容316的日志记录中,可以利用各种开源和/或专有的库。例如,扫描和日志记录可以使用专用于追踪电子内容的各种音频和/或视觉表示、与客户端应用相关联的各种参数、以及各种类型的用户交互的库。并且,可以使用专用于追踪与电子内容的浏览相关联的用户交互数据的库。最后,分析系统能够将所扫描和追踪的与内容316和/或客户端应用相关联的部件和动作用于各种目的。
在示例中,能够追踪客户端应用(比如,web浏览器)的各种特征、方面和/或参数。这能够在每个会话的基础上进行一次。该追踪的信息能够与用户相关联,并且能够表示关于用户对互联网上的客户端应用的使用的用户的鉴别性标记(fingerprint)。例如,系统300能够通过追踪用户在他或她的客户端应用上的独特设置来追踪用户。例如,用户的web浏览器能够具有能够被追踪的独特的特征布置。例如,所安装的web浏览器插件、优选的屏幕大小、所接收的HTTP头部、多用途互联网邮件扩展(mime)类型、和/或安装的字体的独特布置是能够被跟踪的。
除可相对于内容316的结构进行选择之外,可以根据将在所扫描和记录的数据上运行的分析对扫描进行聚焦(focus)。并且,根据针对不同分析目的的分批处理,可以按批次分别运行扫描。随后,单个批次扫描可以通过分开进行序列化和压缩来区分开。例如,压缩的文件可以在每次聚焦扫描的分组中被发送。
在代码构建处理(例如,图4-6中分别示出的代码构建424、524或624)中,代码构建器304可以将记录的数据组织在多维数据结构中,该多维数据结构提供了内容316的多个部分之间的关系数据。这对于集中扫描能够是特别有用的。并且,在代码构建处理中,代码构建器304能够识别并标记分开的集中扫描之间的关系。这在(比如,在图8中的810示出的)扫描的分批处理中能够是特别有用的。
在示例中,代码构建器304能够被配置为在线程(比如,客户端应用303的前台线程(例如,图4-6中分别示出的前台线程416、516和616))上运行代码构建处理。在代码构建处理中,代码构建器304能够通过线程被配置为构建一个或多个区段和/或一个或多个所识别的锚点的至少一部分的分级表示。
并且,在示例中,用户交互追踪器312能够被配置为在线程(比如,客户端应用303的前台线程(例如,图4-6中分别示出的(一个或多个)前台线程426、526和626))上运行用户交互追踪处理。在用户交互追踪处理中,用户交互追踪器312能够通过线程被配置为追踪与内容316的一个或多个区段的至少一部分中的用户接口元素的用户交互。用户交互还能够通过内容316的结构和/或组织(比如,通过电子特性结构的文档对象模型(DOM))被追踪。用户交互还能够通过一个或多个区段和/或一个或多个所识别的锚点的至少一部分的分级表示(比如,由代码构建器304构建的分级表示)被追踪。在用户交互追踪处理中,用户交互追踪器312还能够通过线程被配置为从所追踪的用户交互中推导出用户交互数据。例如,所推导出的用户交互数据可以包括链接视图、页面视图、在电子特性结构的多个方面上的点击、以及停留时间中的一个或多个。
用户交互数据还能够包括浏览一个或多个页面视图或浏览单一页面视图的一个或多个区段的各种实例。例如,用户交互数据能够包括用户已经在客户端应用的屏幕中滚动浏览的页面视图的量。在示例中,能够根据在一个方向上浏览的像素的量和该方向上的屏幕的长度来确定用户已经在屏幕中浏览的页面视图的量。例如,如果包含第一页面视图的屏幕的高度是100像素且用户已经向下浏览了200像素,那么用户已经查看了包括第一页面视图在内的三个页面视图。
并且,在示例中,内容追踪器320能够被配置为在线程(比如,客户端应用303的前台线程(例如,图4-6中分别示出的(一个或多个)前台线程416、516和616))上运行内容追踪处理。在内容追踪处理中,内容追踪器320能够通过线程被配置为追踪内容316中的更新(无论更新是在没有刷新页面视图的情况下发生的、或是在没有向客户设备301/客户端应用303外部的设备发出请求的情况下发生的),只需向诸如缓存服务器116之类的内容缓存服务器发出请求。例如,在图2的页面视图242中,除了向内容缓存服务器发出请求,在不需要刷新页面视图242或者向客户端应用303或客户设备301外部的设备发出请求的情况下,最初出现的流224c中的内容(例如,内容项226c、228c和230c)可以更新;并且该更新可以被内容追踪器320追踪。
对内容316的更新还可以包括对内容316的动态或静态改变或对页面视图的改变或对媒体播放器中的内容的改变,这些改变与内容316无关。例如,在图2的页面视图242中,在用户与滚动条240a的交互之后出现的流224c中的内容(例如,内容项232c和234c)可以与内容316无关,因为其来自于与内容316不同的源和/或除链接到流224c之外与内容316不相关联;在用户与滚动条240a的交互之后出现的内容可以被内容追踪器320追踪。在用户与客户端应用303的交互之后出现的新内容(比如,图2中的内容项232c和234c)能够被内容追踪器320追踪,能够响应于对该新内容的表示、或者响应于在表示之前被存储在客户端应用或客户设备301的缓存中、甚至是对这样的内容的请求而被追踪。
还能够通过内容316的结构和/或组织(比如,通过电子特性结构的DOM)来追踪对内容的更新。还能够通过一个或多个区段和/或一个或多个所识别的锚点的至少一部分的分级表示(比如,由代码构建器304构建的分级表示)来追踪对内容316的更新。在内容追踪处理中,内容追踪器320还能够通过线程被配置为从所追踪的对内容316的更新中推导出内容更新数据。
在示例中,序列化设备306能够被配置为在线程(比如,客户端应用303的后台线程(例如,图4-6中分别示出的(一个或多个)后台线程418、518和618))上运行数据序列化处理(例如,图4-6中分别示出的序列化430、530或630)。在另一示例中,序列化设备306能够被配置为在客户端应用303的前台线程上运行序列化处理。
在序列化处理中,序列化设备306能够通过线程被配置为将从一个或多个区段和/或一个或多个所识别的锚点的分级表示中推导出的数据序列化。在序列化处理中,序列化设备306还能够通过线程被配置为将从用户交互数据中推导出的数据序列化。
在序列化处理中,序列化设备306还能够通过线程被配置为在存储器(比如,本地存储设备或本地缓存)中存储序列化的数据。在示例中,存储器可以是客户设备301的存储器的一部分,比如是图10的存储器1010的一部分。对于客户端应用303、容宿客户端应用303的操作系统、和/或容宿客户端应用303的设备而言,存储器可以是本地的。序列化处理可以包括将内容316的数据结构和/或对象状态转换成能够被存储的格式。存储操作可以包括转换内容316的数据结构和/或对象状态以存储在存储器、文件、和/或到存储器的缓冲器中,和/或以通过分组跨过网络通道进行传送。
序列化的数据随后可以在其被序列化的相同计算机环境中或与序列化兼容的另一环境中被重建。序列化能够用于创建与内容316相关联的初始对象(比如,由代码构建器304优化的对象)的语义上等同的复制品。
复杂对象(比如,具有复杂层级的那些对象和大量使用引用的那些对象)可以通过对正在被序列化的初始数据对象进行修改来序列化。例如,在序列化包括面向对象的对象的序列化的情况下,对象的关联的方法可以不包括密不可分的关联的方法。
为维持隐私和保密,序列化也可以使用对数据进行加密的算法。通过通信接口310发送的数据一旦经过加密、序列化和压缩就可能是安全的;并且一旦数据被其意图的目的地安全地接收到,数据就能够至少被解密。加密和解密可以通过任何已知的或可预知的与本文描述的特征兼容的技术来实现。
并且,序列化的格式可以是灵活的。例如,序列化设备306可以通过使用人类可读的文本传送包括属性值对(比如,JAVASCRIPT对象符号(JSON))的数据对象的序列化的格式实现格式化的至少一部分。其他格式可以包括标准化计算机编程语言之间通用的编码。并且,可以使用更紧凑的选项,比如,二进制XML。也可以使用标准XML。JSON能够是有利的,因为它向标准XML一样是人类可读的并且是类似于二进制XML的轻量级的。JSON可以是基于JAVASCRIPT语法和/或其他编程语言的。
JSON能够是XML的更轻量级的明文替代方案,也常用于web应用中的客户端-服务器通信。JSON能够是基于JAVASCRIPT语法和/或其他编程语言的。并且,“另一标记语言(YAML)”或类似的语言可以用于序列化。YAML可以包括通过标准JSON改进序列化的可读性和紧凑性的特征。序列化格式的这些特征可以包括标记数据类型的概念、对非分级数据结构的支持、使用缩进来组织数据的选项、以及标量数据引用的形式。另外或可替代地,在序列化中可以使用性质列表格式。并且,可以使用二进制序列化。
至少对于序列化处理而言,可以使用面向对象的编程语言,比如Ruby、Smalltalk、Python、PHP、Obiective-C、Java、和.NET语言。并且,脚本或小应用程序至少可以用于指令序列化处理。并且,可以为序列化添加支持对序列化缺乏本地支持的语言的库。
在示例中,代码压缩器308能够被配置为在线程(比如,客户端应用303的后台线程(例如,图4-6中分别示出的(一个或多个)后台线程418、518和618))上运行代码压缩处理(例如,图4-6中分别示出的代码压缩432、532或632)。在压缩处理中,代码压缩器308能够通过线程被配置为压缩由序列化设备306序列化和/或存储的数据。
在压缩处理中,代码压缩器308还能够被配置为对从序列化设备306接收到的数据进行编码。例如,代码压缩器308可以使用通过将二进制数据转换成64为基数的表示方式(比如,将数据编码为Base64)以ASCII字符串格式表示二进制数据的编码方案。
由代码压缩器308执行的数据压缩能够包括原始数据压缩、源代码压缩、和/或比特率降低。比特率降低可以包括使用比初始数据少的比特来编码数据。压缩能够是有损的或无损的。无损压缩通过识别和减低初始数据中的冗余来减少比特。在理想的无损压缩中不存在数据损失。在示例中,有损压缩能够通过识别不必要的数据(比如,重复数据)并移除不必要的数据来减少比特。代码压缩器308还能够使用压缩感知。压缩感知可以包括对初始数据进行采样并随后压缩采样的数据。采样能够随其目的和分配给该采样的资源而变化。
在客户端或服务器端的压缩配置器328能够被配置为手动或自动调整代码压缩器308的时空复杂度权衡。这样的配置可能在压缩处理中发生。相对于压缩的速率的专用于压缩的资源量也能够通过压缩配置器328进行调整。配置器328能够配置压缩度的等级、由有损数据压缩引入的失真量、以及对数据进行压缩和解压缩所需的计算资源。
在示例中,在压缩处理中,代码压缩器308能够压缩数据(比如,客户端应用数据、内容数据、和用户交互数据),以使得经压缩的数据与和客户端应用303相关联的缓存的模型层和数据层的操作相兼容。
缓存的模型层和数据层的至少一部分能够容宿在与容宿客户端应用303的设备进行通信的服务器上。容宿模型层和数据层的缓存的部分的服务器能够作为客户端应用303的缓存。服务器还能够容宿缓存的与客户端应用303相关联的层的多次迭代,以使得针对客户端应用303与容宿客户端应用303的不同实例的不同设备的每个会话存在虚拟地分开的缓存。除本文描述的上传处理之外,由这样的服务器提供的缓存能够为通过网络(比如,互联网)递送内容带来极高的效率。
在示例中,通信接口310能够被配置为在线程(比如,客户端应用303的前台线程(例如,图4-6中分别示出的(一个或多个)前台线程416、516和616))上运行通信处理(例如,图4-6中分别示出的通信434、534和634)。在通信处理中,通信接口310能够通过线程被配置为向服务器(比如,账户服务器102和/或分析服务器118)传输经代码压缩器308压缩的数据。通信接口310能够被配置为将经压缩的数据和未经压缩的数据同时传输到服务器。这样的通信能够是异步的或同步的或其组合。
在示例中,在通信处理中,通信接口能够通过线程被配置为将经压缩的数据传输到数据库314(或模拟关系数据库的web服务),比如,HTTP将经压缩的数据提交(post)到与系统300、客户端应用303、内容316、账户系统(例如,账户服务器102和账户数据库104)、和/或分析系统(例如,分析服务器118和分析数据库119)相关联的一个或多个数据库表格。数据库314能够容宿在一个或多个服务器上。在示例中,数据库314能够由内容缓存服务器116、分析服务器118、和/或账户服务器102来容宿。并且,分析数据库119、账户数据库104、和/或与容缓存服务器116和/或内容服务器112相关联的数据库可以包括数据库314的多个方面。并且,数据库314的多个方面能够在容宿客户端应用303的客户端设备上被本地地存储和运行。并且,数据库314能够包括账户数据库104和/或分析数据库119,并能够通信地耦合到账户服务器102和/或分析服务器118。
在示例中,与数据库314相关联或作为其一部分的部件能够对编码进行解码、对压缩进行解压缩、并记录经过解码和解压缩的数据。随后,分析系统(比如,由分析服务器118和分析数据库119提供的系统)能够利用经过解码和解压缩的数据。
在使用HTTP提交的示例中,提交能够使用AJAX或另一格式来跨各种平台传输web应用信息。在示例中,通信接口310能够传输跨域通信,比如,跨域HTTP提交。在该示例中,如果客户端用用303支持跨域资源共享(CORS),则代码构建器304能够使用诸如CORS之类的证书标准。可替代地,为支持跨域通信,代码构建器304或系统300的另一方面能够使用隐藏的标签。例如,web浏览器能够使用定向相应的隐藏<iframe>标签的隐藏<form>标签。
关于系统300的线程,通信接口310的线程可以是客户端应用303或运行客户端应用303的操作系统的前台线程。代码扫描仪302、代码构建器304、和/或追踪器312和320的线程额可以是客户端应用303或运行客户端应用303的操作系统的前台线程。序列化设备306和代码压缩器308的线程可以是客户端应用303或运行客户端应用303的操作系统的后台线程。可替代地,序列化设备306的线程可以是客户端应用303或运行客户端应用303的操作系统的前台线程。与系统300相关联的所有线程或其任意组合可以是一个或多个线程。例如,所有的后台处理可以在一个线程上运行,而所有的前台线程可以再另一线程上运行。并且每个处理可以具有专用的线程。
在示例系统300中,系统300可以运行针对代码扫描仪302、代码构建器304、追踪器312和320、和通信接口310的操作的一个或多个前台线程,并运行针对序列化设备306和代码压缩器308的操作的一个或多个后台线程。可替代地,系统300可以运行针对代码扫描仪302、代码构建器304、追踪器312和320、序列化设备306、和通信接口310的操作的一个或多个前台线程,并运行针对和代码压缩器308的操作的一个或多个后台线程。
并且,例如,系统300可以运行针对通信接口310的操作的一个或多个前台线程,并运行针对代码扫描仪302、代码构建器304、追踪器312和320、序列化设备306、和代码压缩器308的操作的一个或多个后台线程。上面提到的即使线程布局的三个示例,还存储通过后台和前台线程布局系统300的操作的其他有用变体。
系统300的每个方面都可以通过至少一种解释型计算机编程语言(比如,JAVASCRIPT或PHP)或面向对象的计算机语言(比如,DART)来实现。系统300的这些方面可以通过专用于分开的或组合的系统的每个部件的相应的小应用程序和/或脚本来实现。系统300的每个部件(比如,代码压缩器)都可以通过web工作线程来实现。
由万维网联盟(W3C)和网页超文本应用技术工作小组(WHATWG)定义的web工作线程是从在后台运行的HTML页面中运行的JavaScript脚本,其与也可以从相同HTML页面运行的其他用户接口脚本无关。参见http://en.wikipedia.org/wiki/Web_worker。web工作线程能够是从在后台运行的客户端应用中运行的任何脚本或小应用程序,其与在后台运行的客户端应用的其他脚本、小应用程序或内置部件无关。web工作线程可以包括不被用户接口脚本(响应于点击或其他用户交互的脚本)干扰的长时间运行的脚本。例如,这允许系统300的部件的处理器密集型任务相对不会受客户端应用303的用户交互操作干扰。并且,web工作线程可以限制对传输数据分组的任务的干扰。在一个示例中,web工作线程能够管理前台浏览器线程和后台线程(比如,后台JAVASCRIPT线程)的同时运行。并且,web工作线程能够专用于客户端应用的背景线程。
在一个示例中,除代码压缩之外,本文描述的客户端应用303和处理的背景处理可以按单线程执行,使得系统的各种处理按预定的顺序发生,而压缩能够具有专用线程。因为顺序是能够预定的并且将要处理的数据的量是能够预定的,所以扫描、构建、跟踪、序列化和压缩的定时是能够预测的,该预测能够用于协调通过通信接口310传输分组的定时。
web工作线程可以专用于系统300的处理之一(比如,压缩),或者由线程的组合(比如,序列化和压缩)共享。当web工作线程在后台线程上运行时,可能无法直接访问内容316的结构和组织(比如,电子特性结构的DOM)。在示例中,当web工作线程在后台线程上运行时,可以利用消息传送(比如,通过SOAP的消息传送)来与DOM进行通信。在示例中,扫描和/或构建处理能够被扼制为分批处理,以使得每条消息中有更多信息被传输到web工作线程。例如,通过扼制,每条消息中能够有更多信息从运行扫描和/或构建的线程传送到运行序列化和/或压缩的线程。在示例中,消息是系统300的被序列化和压缩的方面。消息能够包括来自常规扫描处理(比如,代码扫描422或522)或扼制的扫描处理(例如,扼制的扫描622)的数据。
系统300能够包括图3中未描绘的若干其他特征,这些特征能够通过一个或多个上面提到的系统300的部件来执行。
系统300能够包括添加模块设备,用于添加要追踪的页面视图的区段或模块。系统300还能够包括移除模块设备,用于移除要追踪的页面视图的区段或模块。添加模块设备能够被配置为接收表示对要追踪的区段和模块的元素标识的字符串数组、单一字符串、或多维映射对象。移除模块设备能够接收同样的但是标识不追踪的区段和模块的字符串数组、单一字符串、或多维映射对象。并且,添加模块设备能够被配置为接收追踪或不追踪整个页面视图的指令。添加模块设备和移除模块设备的至少一部分能够由代码扫描仪302来运行,并且添加模块设备和移除模块能够分别动态即时地添加和移除要追踪的页面视图的区段或模块。当向页面视图动态添加或移除内容区段和模块而不对页面视图进行任何刷新时,这能够是特别有用的。
系统300能够包括刷新模块设备,用于刷新页面视图的区段和模块。刷新模块设备能够被配置为接收表示对要刷新的区段和模块的元素标识的字符串数组、单一字符串、或多维映射对象。并且,刷新模块设备能够被配置为连同页面视图标识一起记录模块和区段的任何刷新。并且,刷新模块设备能够被配置为在自上次扫描起未添加新模块或区段或未移除模块或区段时不运行。分开设备能够被运行以判定模块或区段是否正被追踪并随后通知刷新器。并且,刷新模块能够被配置为捕获页面视图中最近更新的数据而不捕获先前查看的内容。
刷新模块设备的至少一部分能够由代码扫描仪302或代码构建器304来运行,并且,刷新模块设备能够动态即时地刷新页面视图的区段或模块。当向页面视图动态添加或移除内容区段和模块而不对页面视图进行任何刷新时,这能够是特别有用的。从这层意义上说,没有刷新整个页面视图,但是区段和模块能被单独地刷新。在示例中,能够刷新整个页面视图。并且,在系统300中,在无需容宿客户端应用303的设备外部的设备请求刷新的情况下,就能够对页面视图、区段和模块进行刷新。
系统300能够包括添加事件信号设备,用于标明(beacon)选择的事件,比如在页面视图上的某个点击事件。添加事件信号设备能够被配置为接收标识所选择的事件的字符串。该设备还能够被配置为接收包括用于添加与相应页面视图或所选择的事件相关联的参数的键值对。设备还能够接收所选择的事件的结果的标识。例如,用户交互追踪器312能够记录所选择的事件的结果。这样的日志能够用于通过代码构建器304来在页面视图中标出(map)结果。这些标出的结果能够是一个或多个区段和/或一个或多个所识别的锚点的至少一部分的分级表示的一部分。添加事件信号设备的至少一部分能够由用户交互追踪器扫描仪312来运行,并且该设备能够动态即时地标明某个事件。当动态地向页面视图添加点击机会而不对页面视图进行任何刷新时,这能够是特别有用的。
系统300能够包括添加点击事件信号设备,用于标明选择的点击事件。例如,添加点击事件信号设备能够被配置为接收能够标识与点击事件相关联的页面视图区段的字符串、描述与点击事件相关联的链接的字符串、以及表示相对于会话内的其他链接的链接位置的值。添加点击事件信号设备还能够接收能够随点击事件信标一起被传递的键值对。该设备还能够接收所选择的点击事件的结果的标识。例如,用户交互追踪器312能够记录所选择的点击事件的结果。这样的日志能够用于通过代码构建器304来在页面视图中标出结果。这些标出的结果能够是一个或多个区段和/或一个或多个所识别的锚点的至少一部分的分级表示的一部分。添加点击事件信号设备的至少一部分能够由用户交互追踪器扫描仪312来运行,并且该设备能够动态即时地标明某个点击事件。并且,当链接存在于系统300的其他设备和特征都无法追踪的页面视图上时,该设备能够是特别有用的。例如,难于追踪的链接通常出现在用于中断(比如,防止不想要的事件传播的中断)的代码区段(比如,JavaScript处理程序)内或与其相关联。
系统300还包括添加页面视图信号设备,用于选择的页面视图。添加页面视图信号设备能够被配置为接收包括键值对的对象,以添加与相应页面视图相关联的参数。例如,该设备能够通过页面视图的会话标识符修改相关联的页面视图参数。例如,一个或多个页面视图参数能够标识是否以及如何通过分析程序分析页面视图。添加页面视图信号设备的至少一部分能够由代码扫描仪302和/或代码构建器304来运行,并且该设备能够动态即时地标明页面视图。在客户端应用303既未请求新的页面视图又未重新请求先前追踪的页面视图的情况下,当页面视图被动态添加到所追踪的页面视图时,这能够是特别有用的。
图4-6示出了由能够对数据执行客户端压缩以传输到服务器的示例系统(比如,图3的系统300)执行的示例操作。
在图4-6中,代码扫描仪302能在相应的线程416、516和616中执行代码扫描422、522和622;并且这些扫描能够与最终相应的代码压缩432、532和632有关。
代码构建器304能在相应的线程416、516和616中执行代码构建424、524和624;并且这些构建能够基于相应的扫描422、522和622。
用户交互追踪器312能在相应的线程416、516和616中执行用户交互追踪426、526和626;并且这些追踪能够基于相应的构建424、524和624和/或相应的内容追踪428、528和628。
内容追踪器320能在相应的线程416、516和616中执行内容追踪428、528和628;并且这些追踪能够基于相应的构建424、524和624和/或相应的用户交互追踪426、526和626。
序列化设备306能在相应的线程418、518和618中执行数据序列化430、530和630;并且这些序列化能够基于相应的构建424、524和624,相应的用户交互追踪426、526和626,和/或相应的内容追踪428、528和628。
代码压缩器308能在相应的线程418、518和618中执行代码压缩432、532和632;并且这些压缩能够基于相应的序列化430、530和630。
通信接口310能在相应的线程416、516和616中执行通信处理434、534和634。这些通信处理能够包括将经压缩的数据发送到适当的接收者,比如账户服务器和分析服务器。
未描绘的是能够恰在压缩432、532和632之前发生的编码处理。上面在描述图3的章节中描述了编码处理。取决于系统300的配置,编码处理能够在(一个或多个)前台线程416、516或616或(一个或多个)后台线程418、518或618上运行。在示例配置中,分别与压缩432、532或632同步地,编码处理在(一个或多个)后台线程418、518或618上运行。
图4-6中示出的每个操作能够在一个或多个后台线程或一个或多个前台线程上运行。并且,前台线程或后台线程能够分担图4-6中示出的多个操作。
本文描述的线程能够同步地和/或异步地运行。例如,图4-6中的线程被示出为同步运行,因为每个线程包括依赖于另一线程的至少一个操作的至少一个操作。例如,在420、520或620,系统300能够在相应的第一时间段440a、540a或640a期间接收页面视图。随后,在相应的第二时间段440b、540b或640b期间,代码扫描仪302能够扫描所接收到的页面视图的至少一部分。由于对页面视图的扫描依赖于对页面视图的接收,所以这两个操作是同步处理。根据用户交互追踪器312和用户交互追踪320的相应的配置,诸如用户交互追踪426、526和626以及内容追踪428、528和628之类的处理能够是同步的和/或异步的。在图4-6中,这些操作是同步的。当接收经压缩的数据的服务器希望在某些时隙内接收到经压缩的数据时,对这些操作进行同步能够是有利的。
图7描绘了能够相对于页面视图的第一、第二和第三区段运行图4-6的操作的一个或多个线程702。一个或多个线程704与(一个或多个)线程702是同步的,因为(一个或多个)线程704具有依赖于(一个或多个)线程702的操作的至少一个操作。一个或多个线程706相对于(一个或多个)线程702和704是异步的。各自能够具有其自己的线程的页面视图的区段的量能够取决于可用的资源的量。在这样的示例中,因为资源的限制,区段能够具有不同的用于通过专用线程接收操作的特性结构。
图7还描绘了能够运行于和页面视图相关联的操作无关的操作(比如,客户端应用安全操作、与在主操作系统上运行的其他应用的资源共享操作、以及与页面视图无关的缓存)的一个或多个线程708。一个或多个线程708能够相对于专用于页面视图的一个或多个线程(例如,一个或多个线702-706)是异步的。
再次参照图4-6,时间段440a-440e、540a-540eb或640a-640e表示不重叠的时间段。仅持续(span)图4-6的时间段中的每个时间段内的一个时间段的操作不会与其他时间段的单一时间段持续操作重叠。持续不止一个时间段的操作能够与那些时间段内存在的其他操作重叠。
参照图4,在第一时间段440a内,系统300能够在420将资源用于接收与页面视图相对应的初始数据。在422,在第二时间段440b内,代码扫描仪302能够扫描经识别将要扫描的页面视图的一个或多个区段。在424,代码构建器304能够构建表示一个或多个扫描的页面视图的区段的数据模型。如图所示。代码构建424和代码扫描422能够在相同时间段内发生。例如,在扫描第一区段之后,就能够扫描第二区段,同时构建第一区段的数据模型。直到被扫描了页面视图的项才可能被包括在构建的数据模型内。
在426,用户交互追踪器312能够使用构建的数据模型中存储的方面追踪用户交互。还能够相对于在428追踪的内容方面来追踪用户交互。例如,如果正在追踪字体的加粗并且字体由于用户交互而变粗,则在不返回参照构建的数据模型的情况下能够追踪与加粗的字体相关联的在前的用户交互。并且,根据用户交互追踪器312的配置,无论指定的用户操作是否与构建的数据模型中存储的方面相关联都能够追踪指定的用户操作。
在428,内容追踪器320能够追踪与构建的数据模型中存储的页面视图的方面相关联的内容的方面。诸如图形格式方面之类的内容方面还能够相对于在426追踪的用户交互被追踪。例如,如果正在追踪对超链接的文本的点击,并且已知这样的用户交互使得链接的文本变红,那么能够在对超链接的文本进行点击之后通过推理跟踪转红的文本。并且,根据内容追踪器320的配置,无论指定的内容方面是否与构建的数据模型中存储的方面相关联都能够追踪指定的内容方面。
在430,序列化设备306能够序列化从在424的代码构建、在426的用户交互追踪、和/或在428的内容追踪得出的数据。如图4中所示,包括在430的序列化的第三时间段440c与第二时间段440b不重叠,第二时间段440b包括扫描422、代码构建424、和追踪426和428。换言之,在图4的示例中,在430对与页面视图的一个或多个区段相关联的(从扫描422、代码构建424、追踪426和428得出的)数据的序列化可能直到对这一个或多个区段的扫描、代码构建和追踪完成之后才发生。
在432,代码压缩器能够压缩在430序列化的数据。由于压缩432在第四时间段440d内发生,所以压缩432可能直到相应的序列化430完成之后才发生。在434,通信接口310能够传输在432压缩的数据。由于对经压缩的数据的传输发生在第五时间段440e,所以传输434可能直到相应的压缩432完成之后才发生。
在进行扫描422、构建424、追踪426和428、序列化、压缩和传输的过程中,系统300能够接收页面视图的更新的信息,并相应地在440更新页面视图内的内容。随后,更新的内容能够在422被扫描,等等,直到更新的内容和与该内容相关联的交互在424-428被记录、在430被序列化、在432被压缩、并在434被传输。
参照图5,第一时间段540a内,系统300能够在520将资源用于接收与页面视图相对应的初始数据。在552,在时间段540b-540d,系统300能够将资源用于更新在与页面视图相关联的缓存内的页面视图的内容。例如,在时间段540b-540d内,缓存线程能够被用于更新在页面视图的缓存内的内容。并且,在时间段540b-540d内,在540能够根据在552在缓存中更新的内容信息,更新页面视图内的内容。由于在522对页面视图的先前的内容的扫描、基于在522的扫描的相应的代码构建524、在526和528的相应的追踪、在530的相应的序列化、和在532的相应的压缩,所以这些内容更新操作能够同时发生。类似地,内容更新能够跨时间段540b-540d分布。
在522,在第二时间段540b内,代码扫描仪302能够扫描经识别将要扫描的页面视图的一个或多个区段。这能够在552和540的更新过程中发生。后能能够进行对更新的扫描。
在524,代码构建器304能够构建表示一个或多个扫描的页面视图的区段的数据模型。如图所示,代码构建524和代码扫描522能够与在552和540的更新在相同时间段内发生。在扫描第一区段之后,就能够扫描第二区段,同时构建第一区段的数据模型。第二区段能够包括在552对缓存或在540对实际页面视图的内容更新。通常来说,不管页面视图的项是最初接收到的还是在客户端会话期间的更新,该项都直到被扫描了才可能被包括在构建的数据模型内。
在526,用户交互追踪器312能够使用构建的数据模型中存储的方面追踪用户交互。还能够相对于在528追踪的内容方面来追踪用户交互,而不管这些被追踪的内容方面是被呈现的还是仅进行了缓存的。例如,如果正在追踪字体的加粗并且字体由于用户交互而在显示器上或至少在缓存中变粗,则在不返回参照构建的数据模型的情况下能够追踪与加粗的字体相关联的在前的用户交互。并且,根据用户交互追踪器312的配置,无论指定的用户操作是否与构建的数据模型中存储的方面相关联都能够追踪指定的用户操作。
在528,内容追踪器320能够追踪与构建的数据模型中存储的页面视图的方面相关联的内容的方面,而不管这些内容是在540之后被显示的还是仅在552中被缓存的。诸如图形格式方面之类的内容方面还能够相对于在526追踪的用户交互被追踪,而不管这些格式方面是在540之后被显示的还是仅在552中被缓存的。例如,如果正在追踪对超链接的文本的点击,并且已知这样的用户交互使得链接的文本变红,那么能够在对超链接的文本进行点击之后通过推理跟踪转红的文本。并且,根据内容追踪器320的配置,无论指定的内容方面是否与构建的数据模型中存储的方面相关联都能够在540的页面视图的更新和/或552的缓存的更新处追踪指定的内容方面。
在530,序列化设备306能够序列化从在524的代码构建、在526的用户交互追踪、和/或在528的内容追踪得出的数据。如图5中所示,包括在530的序列化的第三时间段540c与第二时间段540b不重叠,第二时间段540b包括扫描522、代码构建524、和追踪526和528。换言之,在图5的示例中,在530对与页面视图的一个或多个区段相关联的(从扫描522、代码构建524、追踪526和528得出的)数据的序列化可能直到对这一个或多个区段的扫描、代码构建和追踪完成之后才发生。
在532,代码压缩器能够压缩在530序列化的数据。由于压缩532在第四时间段540d内发生,所以压缩532可能直到相应的序列化530完成之后才发生。在534,通信接口310能够传输在532压缩的数据。由于对经压缩的数据的传输发生在第五时间段540e,所以传输534可能直到相应的压缩532完成之后才发生。
如所提到的,在进行扫描522、构建524、追踪526和528、序列化530、压缩532和传输534的过程中,系统300能够接收页面视图的更新的信息,并相应地在540更新在实际页面视图处的页面视图内的内容,或者在552更新在与页面视图相关联的缓存内的内容。随后,更新的内容能够在522被扫描,等等,直到更新的内容和与该内容相关联的交互在524-528被记录、在530被序列化、在532被压缩、并在534被传输。
参照图6,第一时间段640a内,系统300能够在620将资源用于接收与页面视图相对应的初始数据。在662,在专用于缓存内的页面视图的内容的更新时间段660内,系统300能够将资源用于更新在与页面视图相关联的缓存内的页面视图的内容。该缓存能够包括队列和/或栈,并且可以驻留在服务器(比如,内容缓存服务器116)上。时间段660还能够用于将缓存的项传输到扼制扫描622和/或在640对页面视图内的内容的更新。专用于在622更新页面视图内的缓存的时间段还能够被称作缓存时间段660。
对于扼制扫描622而言,将该专用时间段用于收集进一步显示的内容能够是特别有用的。扼制扫描622能够包括对与页面视图相关联的数据的分批扫描,而不管该内容已经被呈现给用户还是隐藏在缓存中。例如,扼制扫描能够包括对页面视图的DOM的扫描,以使得例如在时间段内扫描一大部分表示页面视图的数据。例如,这能够在624提供更高效的构建,因为提供了大多数表示页面视图的数据。由于类似的原因,这种扼制允许在626和628进行更高效的追踪。由于类似的原因,序列化630和在632的压缩能够是特别高效的。在所描绘的示例中,由于序列化630和压缩632具有能够与(一个或多个)前台线程616同时运行的一个或多个专用线程618,所以将要序列化和压缩的数据的大小不影响页面视图的表示和呈现。因此,序列化630和压缩632能够提供大量的压缩数据来一次发送到服务器(比如,分析服务器)。这对于复杂页面视图能够是特别有用的。
并且,由于,缓存时间段660和专用缓存更新662,所以对显示视图的更新的缓存能够以非常快的速率发生。这种加速能够优化内容的流,特别是项的透明无尽序列(比如,参照图2和图9的描述中的项的无尽序列)的流。一旦被缓存,各项就能够更快速地呈现到屏幕上。而且,随着更快速地缓存更多项,缓存的项能够更可能跟上用户浏览新的项的速率。专用于这一处理的资源越多,流的呈现就越无缝。
随着内容的加速,项的流可能看似无尽的和无缝的。与先从内容源请求项随后再显示它相比,在显示项之前对其进行缓存将加速对该项的显示。换言之,缓存能够作为队列。并且,通过将缓存时间段660专用于缓存更新622,系统300的其它线程和操作在更新缓存时不会干扰或竞争资源。而且,该处理能够具有自己的专用线程(图6中未示出)。因此,缓存被快速地更新,与系统无法以类似的方式快速更新其页面视图项的缓存相比内容的相关联的流看起来更加无尽和无缝。
并且,因为对新的项的缓存在662被加速,在给定的时间段内,代码扫描到序列化、压缩和发送经压缩的与内容项相关联的数据能够更频繁地发生。因此,接收账户服务器或分析服务器能够受益于关于较早缓存的新项的信息。这些服务器随后能够向(例如,能够容宿在服务器上的)内容源或缓存提供反馈,该内容源或缓存用于向页面视图提供新的内容项。因此,新的项(比如,流中的新的项)能够被更好地定向。
关于图6中示出的示例,在时间段640b-640e内,在640,能够根据由常规缓存过程在652、或由加速缓存处理在662更新的缓存中的内容信息来更新页面视图内的信息。在在622对页面视图的先前的内容的扼制代码扫描、在624基于在622的扼制代码扫描的相应的代码构建、在626和628相应的追踪、在630相应的序列化、以及在632相应的压缩的进行过程中,能够在652和640进行内容更新操作。
在622,在第二时间段640b内,代码扫描仪302能够扫描经识别将要扫描的页面视图的一个或多个区段。即使页面视图是复杂的必过具有内容的流,这也能够发生。扼制扫描622能够在652和640的更新过程中发生,并且针对在前刚刚接收到的内容更新,比如,刚刚在最新接收到的内容更新之前接收到的从在662的加速缓存更新、在652的常规缓存更新、和/或在640的显示项更新中得出的内容更新。系统300能够被配置为运行扼制扫描并被配置为不运行加速缓存662。使用常规缓存652和/或加速缓存,扼制扫描622能等待直到缓存了阈值量的数据。并且,在示例配置中扼制扫描622能够等待直到与页面视图相关联的数据被显示和/或缓存后才启动。并且,例如,扼制扫描622能够通过图8中描述的操作来进行。
在624,代码构建器304能够构建表示一个或多个扫描的页面视图的区段的数据模型,这些区段例如能够包括与来自在662、652和/或640的操作的更新相关联的区段。如图所示,代码构建624和代码扫描622能够与在652和640的更新在相同时间段内发生。并且,即使使用扼制扫描,在扫描第一区段之后,就能够扫描第二区段,同时构建第一区段的数据模型。然而,在一个区段中的构建仍然与该区段的扼制扫描同步。如此一来,第二区段能够包括在与第一区段相关联的代码的扫描和构建过程中的在662对缓存的加速内容更新、在652对内容的常规更新、或在640对实际页面视图的更新。
在626,用户交互追踪器312能够使用构建的数据模型中存储的方面追踪用户交互。还能够相对于在628追踪的内容方面来追踪用户交互,而不管这些被追踪的内容方面是被呈现的、还是仅通过扼制缓存更新662或常规缓存更新652进行了缓存的。例如,如果正在追踪字体的加粗并且字体由于用户交互而在显示器上或至少在缓存中变粗,则在不返回参照构建的数据模型的情况下能够追踪与加粗的字体相关联的在前的用户交互。并且,根据用户交互追踪器312的配置,无论指定的用户操作是否与构建的数据模型中存储的方面相关联都能够追踪指定的用户操作。
在628,内容追踪器320能够追踪与构建的数据模型中存储的页面视图的方面相关联的内容的方面,而不管这些内容是在640之后被显示的还是仅通过扼制缓存更新662或常规缓存更新652进行了缓存的。诸如图形格式方面之类的内容方面还能够相对于在626追踪的用户交互被追踪,而不管这些格式方面是在540之后被显示的还是仅在652或662被缓存的。例如,如果正在追踪对超链接的文本的点击,并且已知这样的用户交互使得链接的文本变红,那么能够在对超链接的文本进行点击之后通过推理跟踪转红的文本。并且,根据内容追踪器320的配置,无论指定的内容方面是否与构建的数据模型中存储的方面相关联都能够在640的页面视图的更新、在652的缓存的更新、或在扼制缓存更新662的更新处追踪指定的内容方面。
在630,序列化设备306能够序列化从在624的代码构建、在626的用户交互追踪、和/或在628的内容追踪得出的数据。如图6中所示,包括在630的序列化的第三时间段640c既不与第二时间段640b重叠也不与缓存时间段660重叠,第二时间段640b包括扫描622、代码构建624、和追踪626和628。换言之,在图6的示例中,在630对与页面视图的一个或多个区段相关联的(从扫描622、代码构建624、追踪626和628得出的)数据的序列化可能直到对这一个或多个区段的相应的扫描、相应的代码构建和相应的追踪完成之后才发生。
在632,代码压缩器能够压缩在630序列化的数据。由于压缩632在第四时间段640d内发生,所以压缩632可能直到相应的序列化630完成之后才发生。在634,通信接口310能够传输在632压缩的数据。由于对经压缩的数据的传输634发生在第五时间段640e,所以传输634可能直到相应的压缩632完成之后才发生。
如所提到的,在进行扫描622、构建624、追踪626和628、序列化630、压缩632和传输634的过程中,系统300能够接收页面视图的更新的信息,并相应地在640更新在实际页面视图处的页面视图内的内容,或者在652或在662更新在与页面视图相关联的缓存内的内容。随后,更新的内容能够在622被扫描,等等,直到更新的内容和与该内容相关联的交互在624-628被记录、在630被序列化、在632被压缩、并在634被传输。
图8示出了由能够通过在压缩之前对数据的扫描进行分批处理来对数据在客户端进行压缩以传输到服务器进行扼制的示例系统(比如,图3的系统300)执行的示例操作。
例如,在802,系统300能够接收与客户端应用的会话中的页面视图的初始呈现相关联的数据。第一页面视图能够包括至少一个内容的流式传输的区段。在804,系统随后能够接收与附加内容相关联的附加数据以在至少一个内容的流区段中流失传输。在客户端应用的会话中能够接收初始内容和附加内容。初始内容和附加内容包括将被呈现的内容和/或到将被呈现的内容的链接。附加数据能够表示用于显示在内容的至少一个流式传输的区段的一个或多个附加视图中的附加内容。初始数据能够表示用于显示在至少一个流式传输的区段的初始视图中的初始内容。并且,在806,接收到的数据在处理之前能够被存储在远程缓存(比如,内容缓存服务器116的缓存)或本地缓存(比如与由容宿客户端应用的客户设备容宿的客户端应用相关联的缓存)中。
能够持续接收附加内容,直到达到至少一个流式传输的区段的缓存阈值数据量。在808,系统300能够判定是否达到缓存阈值。缓存中存储的阈值数据量能够是预定的,并且能够最终由接收压缩形式的数据的服务器来配置。如果判定未达到阈值,那么在806系统能够继续接收附加数据。
在810,由于接收到的附加数据满足缓存阈值,所以代码扫描仪302能够通过分批处理至少扫描针对内容的至少一个流式传输的内容区段的缓存的初始数据和缓存的附加数据。一旦在810执行了分批处理,则在820能够从缓存中清楚数据,系统随后能够在806继续接收更多数据。初始数据和附加数据能够是与内容和/或到内容的超链接相关联的数据。
可替代地,所接收到的页面视图的任何数据能够被拍成队列来由代码扫描仪进行扫描,并且代码扫描仪能够继续分批处理对数据的扫描直到达到扫描的阈值数据量。在可替代的示例中,每批次扫描的量是在扫描处理过程中(比如,在追踪相关联的缓存时)而不是在扫描处理之前进行限制的。
在812,代码构建器304能够根据在810通过分批处理的扫描构建代码。在814,构建的代码能够被序列化。在816,序列化的代码能够被压缩,随后在818,经压缩的代码能够被传输到服务器(比如,分析服务器118)。
图9示出了由能够呈现看起来流式传输无限的无缝内容量的页面视图并且能够对与无缝内容相关联的数据执行客户端压缩以传输到服务器的示例系统(比如,图3的系统300)执行的示例操作。并且,在示例中,看似无限的内容的流的客户端压缩能够通过图8中示出的操作进行优化。
随着在客户设备301的显示设备上显示页面视图,看似无限的内容流能够开始于902。以其初始表示方式的页面视图能够包括流式传输看起来无限的内容的至少一个区段。在904,与页面视图相关联和/或包括与页面视图中的用户接口能够接收至少一个用户交互。在页面视图的会话内进行页面视图和(一个或多个)用户交互的初始显示。在906,页面视图能够在(一个或多个)区段处被更新,这些区段具有响应于(一个或多个)用户交互的至少一个新的内容项。此更新还能够发生在页面视图的会话内。例如能够从与区段相关联的队列中的链接得出新的内容项。队列能够由服务器(比如,内容缓存服务器116)来容宿。每次在页面视图的会话内接收到与该会话相关联的新的用户交互时,页面视图能够使用新的内容项重复对区段进行更新。这能够直到没有新的内容项存在于该区段的队列中才停止。该队列还可以是对页面视图或相应的web特性结构(比如,整个网站)通用的。在这些更新过程中,系统300能够随着新的内容项出现在会话、队列、或与这些队列或会话相关联的缓存中而追踪这些新的内容项。在示例中,队列和/或栈可以用于存储即将到来的内容。
对新的内容项的追踪能够包括由系统300的部件执行的操作。例如,追踪能够包括在908扫描页面视图的文档对象模型和/或页面视图的一个或多个更新的区段,以识别新的内容项。追踪能够包括在910构建表示页面视图和/或页面视图的一个或多个更新的区段的代码。追踪还能够包括在912序列化构建的代码;在914压缩序列化的代码;并在916将经压缩的代码传输到服务器(比如,分析服务器118)。在914进行压缩之前对代码进行编码,虽未作描绘但是能够在一些示例中找到。
在示例中,在918,例如,系统300或客户端应用303能够判定队列中是否存在内容项。在920,由于队列中不存在内容项,内容缓存服务器116例如能够通过将使用过的内容插回到队列中来回收使用过的内容。并且,在920,内容缓存服务器116例如能够从内容源检索新的内容项以填充队列。如果内容在页面视图的会话内被用尽了,则能够向队列添加内容。另外,在对内容进行回收时,内容缓存服务器116例如能够改变在页面视图的会话内使用过的内容的至少一个内容项。并且,在示例中,如所提到的,相对于回收的内容,能够使用新的内容来更新队列。无论哪种方式,都能够使用来自多个内容源的新的和/或回收的内容来持续地更新队列,以避免发生页面视图的会话用尽队列中的新的或回收的内容项的情况。在一个示例中,新的内容的量能够使得在会话中回收的内容项几乎不可能存在于队列中。在这样的示例中,可以废除回收处理。
图10是示例电子设备1000(比如,内容缓存服务器116)的框图,该示例电子设备能够实现系统300的一个或多个方面或与系统300相关联的一个或多个方面。电子设备1000的实例可以包括服务器(比如,服务器102、106、108、112、116或118),或者可以包括客户设备(比如,客户设备301)。电子设备1000能够包括处理器1002、存储器1010、电源1006、和输入/输出部件(比如,(一个或多个)网络接口1030和(一个或多个)输入/输出接口1040)、以及链接上面提到的电子设备的元件的通信总线1004。网络接口1030能够包括接收器和发送器(或收发机)、和用于无线通信的天线。处理器1002能够包括一个或多个任何类型的处理设备,比如,中央处理单元(CPU)。并且,例如,处理器1002能够是中央处理逻辑;中央处理逻辑能够包括硬件、固件、软件和/或上述每个的组合,以执行(一个或多个)功能或(一个或多个)动作,和/或引发来自另一部件的功能或动作。并且,中央处理逻辑可以包括软件控制的微处理器、诸如专用集成电路(ASIC)之类的离散逻辑、可编程/编程的逻辑设备、包含指令的存储器设备等等,或在硬件中实施的组合逻辑。并且,逻辑还可以完全实施为软件。能够包括随机访问存储器(RAM)1012或制度存储器(ROM)1014的存储器1010能够由一个或多个任意类型的存储器设备(比如,(由CPU直接访问的)初级和/或(由CPU间接访问的)次级存储设备(例如,闪速存储器、磁盘、光盘))来启用。
RAM 1012能够存储定义操作系统1021、数据存储设备1024、和(包括客户端应用303的)应用1022、系统300的方面数据和指令,和/或启用内容缓存器116的方面的指令。由应用提供的示例内容(比如,内容316)可以包括文本、图像、音频、视频等等,该内容例如可以物理信号(比如,电信号)的形式进行处理,或者例如可以存储在实体状态的存储器中。
ROM能够包括电子设备1000的基础输入/输出系统(BIOS)1020。电源1006包含一个或多个电能部件,并促进电能向电子设备1000的供应和管理。输入/输出部件还能够包括用于促进电子设备1000的任何部件、外部设备的任何部件(比如,信息系统100的其他设备的部件)和最终用户之间的通信的任何接口。例如,这样的部件能够包括集成有接收器、发送器、和一个或多个I/O接口((一个或多个)输入/输出接口1040)的网卡。网卡例如能够促进与网络的其他设备的有线或无线通信。在无线通信的情况下,天线能够促进这样的通信。I/O部件(比如,(一个或多个)I/O接口1040)能够包括用户接口,比如,监视器、键盘、触摸屏、麦克风和扬声器。此外,一些I/O部件(比如,(一个或多个)I/O接口1040)和总线1004能够促进电子设备1000的部件之间的通信,并且能够缓解由处理器1002执行的处理。
在电子设备1000是服务器的情况下,它能够包括计算设备,该计算设备能够比如通过有线或无线网络发送或接受信号,或者能够比如通过有线或无线网络处理或存储信号(比如,在实体存储器状态的存储器中),并因此能够像服务器那样运作。因此能够像服务器那样运作的设备例如可以包括专用机架式服务器、桌面计算机、膝上型计算机、机顶盒、组合各种特征(比如,上述设备的两个或多个特征)的集成设备、等等。
此外,服务器在配置或功能上可能显著不同,但是通常来说,服务器可以包括一个或多个中央处理单元和存储器。服务器还能够包括一个或多个大容量存储设备、一个或多个电源、一个或多个有线或无线网络接口、一个或多个输入/输出接口、或一个或多个操作系统(比如,WindowsServer、Mac OS X、Unix、Linux、FreeBSD)等等。具体而言,服务器可以是应用服务器,该应用服务器可以包括用于通过网络向其他设备提供诸如系统300之类的应用的配置。并且,应用服务器例如可以容宿能够提供用于对系统300进行配置的用户接口的网站。

Claims (20)

1.一种存储在能够由处理器执行的非暂态介质中的系统,包括:
代码扫描仪,所述代码扫描仪被配置为:
在客户端应用的共享线程上运行;
在页面视图的一个或多个区段内,扫描所述页面视图的文档对象模型DOM;以及
识别所扫描的DOM内的测量数据;
数据序列化设备,所述数据序列化设备通信地耦合到所述代码扫描仪,所述数据序列化设备被配置为:
在所述客户端应用的第一专用线程或共享线程上运行;以及
将所述测量数据序列化;以及
代码压缩器,所述代码压缩器被配置为:
在所述客户端应用的第二专用线程上运行;以及
压缩序列化的数据。
2.根据权利要求1所述的系统,其中,所述共享线程是第一共享线程,以及其中,所述系统还包括:用户交互追踪器,所述用户交互追踪器通信地耦合到所述数据序列化设备,所述用户交互追踪器被配置为:
在所述客户端应用的第二共享线程上运行;
追踪与所述一个或多个会话内的用户接口元素的用户交互;
从所追踪的用户交互中得出用户交互数据;以及
将所述用户交互数据添加到所述测量数据。
3.根据权利要求1所述的系统,其中,所述共享线程是第一共享线程,以及其中,所述系统还包括:
代码构建器,所述代码构建器通信地耦合到所述数据序列化设备,所述代码构建器被配置为:
在所述客户端应用的第二共享线程上运行;以及
根据所述DOM构建所述一个或多个会话的分级表示;以及
通信接口,所述通信接口通信地耦合到所述代码压缩器,所述通信接口被配置为:
在所述客户端应用的第三共享线程上运行;以及
将经压缩的数据传输到服务器。
4.根据权利要求1所述的系统,其中,所述测量数据包括以下各项中的一个或多个:内容数据、页面视图数据、用户交互数据、和客户端应用数据。
5.根据权利要求1所述的系统,其中,所述代码压缩器被配置为压缩所述序列化的数据,以使得经压缩的数据与缓存模型层和数据层的操作相兼容,所述缓存模型层和数据层与所述页面视图相关联,所述缓存模型层和数据层的至少一部分容宿于页面视图源处。
6.根据权利要求1所述的系统,其中,所述代码扫描仪被配置为接收待追踪的页面视图的一个或多个区段的指示。
7.根据权利要求2所述的系统,其中,所述用户交互包括以下各项中的一个或多个:链接视图、页面视图、对页面的方面的点击、和停留时间。
8.根据权利要求2所述的系统,其中,所述客户端应用的每个共享线程都是前台线程。
9.根据权利要求8所述的系统,其中,所述客户端应用的每个专用线程都是后台线程。
10.根据权利要求2所述的系统,其中,所述共享线程是一个线程,并且其中,所述专用线程是一个线程。
11.根据权利要求1所述的系统,其中,所述代码扫描仪、所述代码构建器、所述数据序列化设备、所述代码压缩器、和所述通信接口中的至少一个是使用解释型计算机编程语言实现的。
12.根据权利要求1所述的系统,其中,所述序列化是以使用人类可读的文本来发送包括属性值对的数据对象的序列化的格式来实现的。
13.根据权利要求12所述的系统,其中,所述序列化的格式是JAVASCRIPT对象表示(JSON)。
14.根据权利要求1所述的系统,其中,所述代码压缩器是通过web工作线程实现的。
15.一种方法,包括:
在客户端应用的第一线程上,在页面视图的一个或多个区段内,扫描所述页面视图的文档对象模型DOM,以产生扫描的测量数据;
将所述扫描的测量数据序列化;以及
在所述客户端应用的第二线程上,压缩序列化的数据。
16.根据权利要求15所述的方法,还包括:
识别所述扫描的测量数据内的一个或多个锚点;
在进行所述序列化之前构建所述一个或多个区段的分级表示,其中,所述分级表示包括所述一个或多个锚点,以及其中,所述序列化包括对构建的所述一个或多个区段的分级表示进行序列化。
17.根据权利要求15所述的方法,还包括:
追踪与所述一个或多个区段内的用户接口元素的用户交互;
从所追踪的用户交互中得出用户交互数据;以及
将所述用户交互数据添加到所述扫描的测量数据。
18.根据权利要求15所述的方法,还包括接收将要追踪的页面视图的一个或多个区段的指示。
19.根据权利要求15所述的方法,还包括将所述经压缩的数据传输到服务器。
20.一种系统,包括:
用于在页面视图的一个或多个区段内扫描所述页面视图的文档对象模型DOM以产生扫描的测量数据的装置,所述用于扫描的装置在客户端应用的第一线程上运行;
用于将所述扫描的测量数据序列化的装置;以及
用于压缩序列化的数据的装置,所述用于压缩的装置在所述客户端应用的第二线程上运行。
CN201510038468.4A 2014-01-31 2015-01-26 对数据进行压缩序列化以从客户端应用进行传输 Active CN104820668B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/170,377 US9779069B2 (en) 2014-01-31 2014-01-31 Model traversing based compressed serialization of user interaction data and communication from a client-side application
US14/170,377 2014-01-31

Publications (2)

Publication Number Publication Date
CN104820668A true CN104820668A (zh) 2015-08-05
CN104820668B CN104820668B (zh) 2019-06-07

Family

ID=52444172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510038468.4A Active CN104820668B (zh) 2014-01-31 2015-01-26 对数据进行压缩序列化以从客户端应用进行传输

Country Status (5)

Country Link
US (1) US9779069B2 (zh)
EP (1) EP2903241B1 (zh)
CN (1) CN104820668B (zh)
HK (1) HK1212490A1 (zh)
TW (1) TWI590157B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106101114A (zh) * 2016-06-27 2016-11-09 浪潮(苏州)金融技术服务有限公司 一种序列化的资源共享方式
CN106294648A (zh) * 2016-08-03 2017-01-04 腾讯科技(深圳)有限公司 一种针对页面访问路径的处理方法及装置
CN108256017A (zh) * 2018-01-08 2018-07-06 武汉斗鱼网络科技有限公司 一种用于数据存储的方法、装置及计算机设备
CN109428939A (zh) * 2017-09-04 2019-03-05 上海仪电(集团)有限公司中央研究院 一种外挂式云端联动时空感知的传感系统
CN112162755A (zh) * 2020-09-28 2021-01-01 北京字节跳动网络技术有限公司 一种数据处理方法、装置、介质和电子设备
CN114722012A (zh) * 2021-12-23 2022-07-08 武汉联影生命科学仪器有限公司 一种动物扫描成像数据导出方法、系统、电子设备

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10375183B2 (en) * 2013-03-15 2019-08-06 Coursera, Inc. Eventing analysis framework
US10339572B2 (en) * 2014-01-31 2019-07-02 Oath Inc. Tracking user interaction with a stream of content
US10812588B2 (en) * 2016-01-13 2020-10-20 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Storage performance based on data placement
CN106991100B (zh) * 2016-01-21 2021-10-01 北京京东尚科信息技术有限公司 数据导入方法及装置
US10650081B2 (en) * 2016-08-25 2020-05-12 Adobe Inc. Television application page tracking using declarative page tracking
TWI620091B (zh) * 2016-09-13 2018-04-01 健行學校財團法人健行科技大學 植基於worker序列化請求的認證處理方法
CN109739728B (zh) * 2019-01-08 2023-06-13 武汉益模科技股份有限公司 一种mes系统性能和日志数据监控方法
CN110928543A (zh) * 2019-11-04 2020-03-27 北京小米移动软件有限公司 页面处理方法、装置及存储介质
CN111901685B (zh) * 2020-07-30 2023-09-08 深圳市康冠科技股份有限公司 一种文件扫描方法及相关装置
CN113518094B (zh) * 2021-09-14 2021-12-28 深圳市普渡科技有限公司 数据处理方法、装置、机器人和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080263446A1 (en) * 2007-04-20 2008-10-23 Utbk, Inc. Methods and Systems to Connect People to Services via Virtual Reality
CN102710768A (zh) * 2012-05-31 2012-10-03 深圳市远行科技有限公司 一种基于面向服务架构的大批量数据传输系统及方法
CN102841901A (zh) * 2011-06-23 2012-12-26 腾讯科技(深圳)有限公司 一种网页显示的方法和装置
CN103425699A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 获取网页的方法、设备和系统

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5796952A (en) 1997-03-21 1998-08-18 Dot Com Development, Inc. Method and apparatus for tracking client interaction with a network resource and creating client profiles and resource database
US6038601A (en) 1997-07-21 2000-03-14 Tibco, Inc. Method and apparatus for storing and delivering documents on the internet
US6769032B1 (en) * 1998-05-15 2004-07-27 E.Piphany, Inc. Augmented processing of information objects in a distributed messaging framework in a computer network
WO2000075814A1 (en) 1999-06-03 2000-12-14 Keylime Software, Inc. System and method for monitoring user interaction with web pages
US6883032B1 (en) 2000-02-02 2005-04-19 Lucent Technologies Inc. Method and system for collecting data on the internet
US7747782B2 (en) 2000-04-26 2010-06-29 Novarra, Inc. System and method for providing and displaying information content
US20030037181A1 (en) * 2000-07-07 2003-02-20 Freed Erik J. Method and apparatus for providing process-container platforms
US20020078191A1 (en) 2000-12-20 2002-06-20 Todd Lorenz User tracking in a Web session spanning multiple Web resources without need to modify user-side hardware or software or to store cookies at user-side hardware
US6944660B2 (en) 2001-05-04 2005-09-13 Hewlett-Packard Development Company, L.P. System and method for monitoring browser event activities
US7185085B2 (en) 2002-02-27 2007-02-27 Webtrends, Inc. On-line web traffic sampling
US7349827B1 (en) 2002-09-18 2008-03-25 Doubleclick Inc. System and method for reporting website activity based on inferred attribution methodology
CN1203403C (zh) 2003-01-17 2005-05-25 天图信息技术(上海)有限公司 网视网络广告投放系统中的后台智能下载方法
US8949220B2 (en) * 2003-12-19 2015-02-03 Oracle International Corporation Techniques for managing XML data associated with multiple execution units
CN1997995B (zh) * 2004-06-23 2010-05-05 甲骨文国际公司 使用转换有效评估查询
US20060259585A1 (en) 2005-05-10 2006-11-16 International Business Machines Corporation Enabling user selection of web page position download priority during a download
US7975019B1 (en) 2005-07-15 2011-07-05 Amazon Technologies, Inc. Dynamic supplementation of rendered web pages with content supplied by a separate source
US20070118910A1 (en) * 2005-09-02 2007-05-24 Taylor Stephen F Identification of files in a file sharing environment
US7941525B1 (en) 2006-04-01 2011-05-10 ClickTale, Ltd. Method and system for monitoring an activity of a user
US20070255821A1 (en) 2006-05-01 2007-11-01 Li Ge Real-time click fraud detecting and blocking system
WO2008092104A2 (en) * 2007-01-25 2008-07-31 Skyfire Labs, Inc. Dynamic client-server video tiling streaming
US8099739B1 (en) * 2007-06-14 2012-01-17 Keithley Instruments, Inc. Java applet management method
US20090063262A1 (en) 2007-08-31 2009-03-05 Microsoft Corporation Batching ad-selection requests for concurrent communication
US7930646B2 (en) 2007-10-19 2011-04-19 Microsoft Corporation Dynamically updated virtual list view
US20130132833A1 (en) * 2008-04-15 2013-05-23 Foresee Results, Inc. Systems and Methods For Remote Tracking And Replay Of User Interaction With A Webpage
US8180891B1 (en) 2008-11-26 2012-05-15 Free Stream Media Corp. Discovery, access control, and communication with networked services from within a security sandbox
US8812451B2 (en) 2009-03-11 2014-08-19 Microsoft Corporation Programming model for synchronizing browser caches across devices and web services
AU2010289343A1 (en) 2009-09-03 2012-03-22 Virtual Piggy, Inc. Parent playback
US20110125759A1 (en) 2009-11-17 2011-05-26 Yoono, Inc Method and system to contextualize information being displayed to a user
US20120022926A1 (en) 2010-07-12 2012-01-26 Kumaresan Ramanathan Process for increasing visibility of animated advertisements
US8769039B2 (en) * 2011-01-21 2014-07-01 Kaseya International Limited Method and apparatus of performing remote computer file exchange
US20140040437A1 (en) * 2011-05-19 2014-02-06 Nippon Hoso Kyokai Receiver and reception method
US8874781B2 (en) 2011-10-17 2014-10-28 Qualcomm Incorporated System and apparatus for power efficient delivery of social network updates to a receiver device in a broadcast network
US20130145252A1 (en) 2011-12-02 2013-06-06 Opera Software Asa Page based navigation and presentation of web content
US20130339485A1 (en) * 2012-06-13 2013-12-19 Motorola Mobility, Inc. Multi-Threaded Asynchronous Download of a Set of Script files Used in a Web Application
US9246847B2 (en) * 2012-12-17 2016-01-26 Telefonaktiebolaget L M Ericsson (Publ) Extending the reach and effectiveness of header compression in access networks using SDN
US20150067024A1 (en) 2013-08-27 2015-03-05 Apple Inc. Autobatching

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080263446A1 (en) * 2007-04-20 2008-10-23 Utbk, Inc. Methods and Systems to Connect People to Services via Virtual Reality
CN102841901A (zh) * 2011-06-23 2012-12-26 腾讯科技(深圳)有限公司 一种网页显示的方法和装置
CN103425699A (zh) * 2012-05-24 2013-12-04 腾讯科技(深圳)有限公司 获取网页的方法、设备和系统
CN102710768A (zh) * 2012-05-31 2012-10-03 深圳市远行科技有限公司 一种基于面向服务架构的大批量数据传输系统及方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106101114A (zh) * 2016-06-27 2016-11-09 浪潮(苏州)金融技术服务有限公司 一种序列化的资源共享方式
CN106101114B (zh) * 2016-06-27 2019-06-04 浪潮金融信息技术有限公司 一种序列化的资源共享系统及方法
CN106294648A (zh) * 2016-08-03 2017-01-04 腾讯科技(深圳)有限公司 一种针对页面访问路径的处理方法及装置
CN109428939A (zh) * 2017-09-04 2019-03-05 上海仪电(集团)有限公司中央研究院 一种外挂式云端联动时空感知的传感系统
CN109428939B (zh) * 2017-09-04 2023-06-30 上海仪电(集团)有限公司中央研究院 一种外挂式云端联动时空感知的传感系统
CN108256017A (zh) * 2018-01-08 2018-07-06 武汉斗鱼网络科技有限公司 一种用于数据存储的方法、装置及计算机设备
CN108256017B (zh) * 2018-01-08 2020-12-15 武汉斗鱼网络科技有限公司 一种用于数据存储的方法、装置及计算机设备
CN112162755A (zh) * 2020-09-28 2021-01-01 北京字节跳动网络技术有限公司 一种数据处理方法、装置、介质和电子设备
CN114722012A (zh) * 2021-12-23 2022-07-08 武汉联影生命科学仪器有限公司 一种动物扫描成像数据导出方法、系统、电子设备

Also Published As

Publication number Publication date
HK1212490A1 (zh) 2016-06-10
EP2903241B1 (en) 2020-04-22
TWI590157B (zh) 2017-07-01
US20150220502A1 (en) 2015-08-06
EP2903241A1 (en) 2015-08-05
TW201539322A (zh) 2015-10-16
US9779069B2 (en) 2017-10-03
CN104820668B (zh) 2019-06-07

Similar Documents

Publication Publication Date Title
CN104820668A (zh) 对数据进行压缩序列化以从客户端应用进行传输
US10769353B2 (en) Dynamic streaming content provided by server and client-side tracking application
US9680897B2 (en) Throttled scanning for optimized compression of network communicated data
US8086957B2 (en) Method and system to selectively secure the display of advertisements on web browsers
US10339572B2 (en) Tracking user interaction with a stream of content
US9811327B2 (en) Dependency-aware transformation of multi-function applications for on-demand execution
CN104346471A (zh) 基于地理位置信息确定待推送应用的方法、装置和系统
US11488213B2 (en) Tracking user interaction with a stream of content
KR101907120B1 (ko) 서버 장치, 및 서버 프로그램 및 게임 프로그램의 기록매체
US20170177318A1 (en) Dependency-Aware Transformation of Multi-Function Applications for On-Demand Execution
CN105027121A (zh) 对本机应用的应用页面建索引
CN103428525A (zh) 网络视频和电视节目的在线查询和播放控制方法及系统
CN102932469A (zh) 一种实现客户端浏览器的方法和客户端浏览器
CN105468419A (zh) 一种基于应用软件实现播报的方法、装置及电子设备
CN106796695A (zh) 应用安装的转化和识别
CN106233284B (zh) 生成用于主要内容的稳定标识符的方法和系统
CN113626624B (zh) 一种资源识别方法和相关装置
CN102739776A (zh) 一种展现信息的方法、装置及系统
CN102929489A (zh) 客户端浏览器实现方法及客户端浏览器
CN103617043A (zh) 一种带图片网页数据上传的方法和系统
CN104965720B (zh) 应用安装方法和装置
US10068250B2 (en) System and method for measuring mobile advertising and content by simulating mobile-device usage
JP2020042674A (ja) 情報表示プログラム、情報表示装置、情報表示方法および配信装置
US9754035B2 (en) Recursive unique user metrics in real time
JP3145657U (ja) 分割広告装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1212490

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20170817

Address after: California, USA

Applicant after: YAHOO Holdings

Address before: California, USA

Applicant before: YAHOO! Inc.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180403

Address after: American New York

Applicant after: Aoshi Co.

Address before: California, USA

Applicant before: YAHOO Holdings

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210325

Address after: New York State, USA

Patentee after: Verizon media

Address before: New York State

Patentee before: Aoshi Co.

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: New York, United States

Patentee after: Yahoo Advertising Technology Co.,Ltd.

Address before: New York, United States

Patentee before: Verizon media

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221014

Address after: California, USA

Patentee after: Yahoo Assets Co.,Ltd.

Address before: New York, United States

Patentee before: Yahoo Advertising Technology Co.,Ltd.