CN110574033A - 减少多媒体内容传递的远程过程调用 - Google Patents
减少多媒体内容传递的远程过程调用 Download PDFInfo
- Publication number
- CN110574033A CN110574033A CN201780090054.3A CN201780090054A CN110574033A CN 110574033 A CN110574033 A CN 110574033A CN 201780090054 A CN201780090054 A CN 201780090054A CN 110574033 A CN110574033 A CN 110574033A
- Authority
- CN
- China
- Prior art keywords
- content item
- script
- content
- sandboxed
- local cache
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
Abstract
描述了减少多媒体内容传递中的远程过程调用的系统和方法。客户端设备可以请求和接收用于经由沙盒媒体环境中的客户端设备上运行的应用呈现的数字内容。在沙盒媒体环境中运行的应用接收内容项之前,在客户端设备上运行的标记解释器可以拦截该内容项。标记解释器可以解析内容项,以提取脚本的识别符。标记解释器可以识别与沙盒媒体环境分开的客户端设备上的本地高速缓存中存储的脚本。标记解释器可以构造修改的内容项。标记解释器可以将修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使所述应用运行修改的内容项。
Description
背景技术
在诸如移动计算设备的计算设备上运行的应用可以渲染数字内容。该应用或其实例可以请求被配置为渲染一类数字内容的软件开发套件(“SDK”)。为了改善计算机安全性,可以将针对在计算设备上运行的应用的实例而建立的计算环境与针对另一应用或同一应用的另一实例而建立的计算环境分开或隔离。例如,计算环境可以包括沙盒(sandbox)安全机制,该沙盒安全机制通过例如限制对存储器的访问、限制文件系统名称空间、基于规则的运行、iframe或虚拟机来分离正在运行的程序。因此,经由应用的实例接收以渲染数字内容的SDK可能不可用于在相同的计算设备上运行的另一应用或甚至该应用的另一实例。因此,使用沙盒计算环境来改善计算机安全性可能会增加远程过程调用、网络利用率、处理器利用率、服务器利用率和等待时间,这是由于对SDK的重复请求和下载,以在分开的应用或应用的分开的实例中渲染数字内容而导致的。
发明内容
本公开针对减少多媒体内容传递中的远程过程调用的系统和方法。例如,本解决方案可以减少远程过程调用、网络利用率、处理器利用率、服务器利用率和等待时间,同时保持计算机安全性。标记解释器可以拦截从服务器接收的在线文档,并解析该在线文档以识别脚本或其他可运行逻辑(例如SDK)。标记解释器可以将脚本的副本存储在与沙盒应用分开的本地高速缓存中,并且在一些实现方式中可以预取脚本。标记解释器可以从高速缓存中检索脚本,并修改拦截的文档以包括或引用高速缓存的内容,然后将新构造的在线文档转发给应用以供运行。因此,在其沙盒环境中运行的应用可能不会意识到该文档已被修改,或者它最初包含对该脚本的引用。类似地,尽管通常被禁止共享脚本或沙盒的高速缓存空间,但是在设备上同时运行的许多应用(每个都在其自己的沙盒环境中)可以处理包含相同高速缓存的脚本的修改的文档。因此,每个应用不必向服务器发送针对脚本的单独请求,因此,本解决方案可以减少或消除为了在单独的应用或应用的单独的实例中运行在线文档的针对脚本的冗余请求和下载。
这些以及其他方面和实现方式将在下面详细讨论。前述信息和以下详细描述包括各个方面和实现方式的说明性示例,并且提供了用于理解所要求保护的方面和实现方式的性质和特征的概述或框架。附图提供了对各个方面和实现方式的说明和进一步的理解,并且被并入本说明书中并构成本说明书的一部分。
附图说明
在附图和以下描述中阐述在本说明书中描述的主题的一个或多个实现方式的细节。根据说明书、附图和权利要求书,本主题的其他特征、方面和优点将变得显而易见。
图1A是根据实现方式的用于减少通过计算机网络的多媒体内容传递中的远程过程调用的系统的操作的图示。
图1B是根据实现方式的用于减少通过计算机网络的多媒体内容传递中的远程过程调用的系统的操作框图。
图2是根据实现方式的用于减少通过计算机网络的多媒体内容传递中的远程过程调用的系统的图示。
图3是根据实现方式的减少通过计算机网络的多媒体内容传递中的远程过程调用的方法的流程图的图示。
图4是示出用于可以用来实现图1和2中所示的系统的各种元件和图3中所示的方法的计算机系统的体系结构的框图。
在各个附图中,相同的附图标记和标号表示相同的元件。
具体实施方式
以下是与在网络上的计算设备和内容选择基础设施之间平衡数据请求的方法、装置和系统有关的各种概念以及其实现的更详细描述。可以以许多方式中的任何一种来实现上面介绍的和下面将更详细讨论的各种概念。
本公开针对减少多媒体内容传递中的远程过程调用的系统和方法。例如,本解决方案可以减少远程过程调用、网络利用率、处理器利用率、服务器利用率和等待时间,同时保持计算机安全性。标记解释器可以拦截从服务器接收的在线文档,并解析该在线文档以识别脚本或其他可运行逻辑(诸如SDK)。标记解释器可以将脚本的副本存储在与沙盒应用分开的本地高速缓存中,并且在一些实现方式中预取脚本。标记解释器可以从高速缓存中检索脚本,并修改拦截的文档以包括高速缓存的内容,然后将新构造的在线文档转发给应用程序以运行。因此,在其沙盒环境中运行的应用可能无法意识到该文档已被修改,或者它最初包含对高速缓存脚本的引用。类似地,尽管通常被禁止共享脚本或沙盒高速缓存空间,但是在设备上同时运行的许多应用(每个都在其自己的沙盒环境中)可以处理包含相同高速缓存脚本的修改文档。因此,每个应用不必向服务器发送针对脚本的单独的请求,因此,本解决方案可以减少或消除为了在单独的应用或应用的单独的实例中运行在线文档而对脚本的冗余请求和下载。
例如,应用可以在孤立的计算环境(有时称为沙盒环境)、受限的数据共享环境、应用隔离环境、虚拟化环境或其他类似术语中运行。当在孤立的计算环境中运行时,应用可能对计算资源(诸如存储器、输入/输出缓冲器或网络资源)具有有限或受限的访问。可以限制在孤立或沙盒计算环境中运行的应用与可在计算设备上并发运行的一个或多个其他应用、或甚至同一应用的一个或多个实例进行交互。例如,应用的每个孤立实例都可能具有其自己的存储器空间、首选项、注册表设置、高速缓存、网络套接字等,并且可能无法访问或甚至不必知道该应用的其他实例的资源。由于有限或受限的访问或与其他应用或跟同一应用的先前实例相关联的存储器或文件进行交互的能力,每个孤立的应用或应用的实例可能必须从远程服务器请求或下载脚本或其他文件或内容,即使先前已在同一计算设备上请求并下载了相同的脚本或文件也是如此。例如,在一个这样的实现方式中,网络浏览器可以将每个浏览器窗口或标签与其他浏览器窗口或标签(或此窗口或标签的子集,诸如未经由来自父窗口或标签的链接启动的窗口或标签(例如独立实例化))沙盒化。与每个窗口或标签关联的进程或运行线程可能无法访问与其他窗口或标签关联的进程或执行线程的高速缓存资源,因此,如果用户在两个窗口中访问同一网站,则两个相应的浏览器进程或线程可能需要独立发送对相同内容的请求,接收并潜在地高速缓存相同内容,运行嵌入的脚本等。虽然使用沙盒计算环境可以通过防止跨进程或跨线程漏洞(例如一个进程从保留给另一个进程的存储器中秘密读取密码或用户数据)来改善计算机安全性,但是在沙盒计算环境中重复进行内容检索和存储,可能会增加远程过程调用或服务器通信的数量、网络利用率、处理器利用率、服务器利用率和等待时间,这是由于重复请求和下载相同的数据造成的。这样的数据可能是大量的,诸如在检索的资源包括用于在单独的应用或应用的单独的实例中渲染数字内容的嵌入的可执行资源(诸如浏览器内媒体播放器或SDK)的情况下。
因此,等待时间可能是移动站点和应用的主要问题。高等待时间可能导致不良的用户体验、浪费的计算资源、增加的电池使用量、增加的网络利用率或更多的空闲。诸如音频或视频的多媒体内容可能会越来越受此等待时间的影响,因为视频可能会使用比文本或图像显示内容项更大的带宽。对于可能不知道进程和资源的底层沙盒并且可能替代地期望重复的进程(诸如重复的浏览器窗口)以立即从高速缓存加载的用户而言,这尤其令人沮丧。在高速缓存使用不一致的情况下,这可能会进一步突显:例如,如果用户在第一浏览器窗口中加载网站,然后在同一浏览器窗口中重新加载网站,则该进程可能利用先前检索的高速缓存版本以用最小等待时间加载网站。然而,如果用户在第二个单独的浏览器窗口中加载网站,则相应的第二进程可能无法访问或不知道先前检索的高速缓存版本,并且可能发送对网站的单独请求。因此,从用户的角度看,加载时间可能因应用、窗口或甚至标签而不一致。
例如,可以被冗余下载的SDK可以包括用于在移动应用中运行或渲染横幅内容项或插页内容项的SDK。在客户端设备(例如,膝上型计算机、台式计算机、平板计算机、可穿戴计算机、移动设备等)上运行的应用可以渲染可以包括图像、视频、音频、文本或其他多媒体内容的内容。该应用可以在与其他应用和/或该应用的进程或子进程分开的沙盒化或孤立的媒体内容环境内运行或经由其提供内容。在一些实施例中,在媒体播放器中渲染的视频数字内容可以包括具有前卷、后卷或插页内容的媒体流。在一个这样的实现方式中,可以经由超文本标记语言(“HTML”)5或Javascript SDK来提供媒体播放器,并且该媒体播放器在应用中的沙盒计算环境内运行。在一些情况下,SDK可以托管在远离计算设备的服务器上,并可以在沙盒环境内检索SDK以便执行。该SDK可以由本机应用在视频数字内容的呈现或回放时或接近其渲染或回放时在计算设备上加载,而不是永久存储在计算设备上或高速缓存相当长的持续时间。相对于较慢的本机SDK版本,这对于频繁更新SDK(诸如频繁(例如每天、每周或每月)的代码部署)的实现方式有帮助,所述较慢的本机SDK版本仅在发布者构建SDK的新版本到应用中时才会更新;并且这可能促进跨平台开发。一旦SDK在沙盒环境内播放了媒体内容并进程终止,该沙盒环境就可能被破坏,其中资源(例如媒体内容以及SDK本身)被释放。可以创建新的沙盒环境以播放新的媒体内容。
如上所述,为了允许用于在媒体内容环境内播放媒体内容的媒体处理逻辑的跨平台开发和常规代码更新(例如,以改善功能、安全性等),媒体处理逻辑可以存储在远离要播放媒体内容的用户设备的服务器处。因此,可以通过媒体内容环境从远程服务器获取媒体处理逻辑。尽管媒体处理逻辑的一些组件可以存储在属于媒体内容环境的高速缓存中,但是该高速缓存随着媒体内容环境的毁坏而被破坏。这样,每次要在媒体内容环境内播放媒体内容时,就获得媒体处理逻辑并将其加载到存储器中。这可能会导致多次频繁的往返网络调用,从而增加等待时间、网络业务量、存储器使用和带宽需求。
尽管从远程服务器请求和接收用于在本机应用SDK中加载的Javascript可以允许对SDK的关键特征开发以合理的速度发生,但是这种方法可能增加等待时间,因为每次渲染或运行内容项时都加载Javascript文件,从而导致计算设备与远程服务器之间的多次往返网络调用。尽管一些文件可由应用运行的计算环境高速缓存,但是此高速缓存与计算环境一起被破坏,并为了内容项或应用的每个实例而被替换。
本公开描述了包括SDK和其他可运行逻辑的标记解释器的实现方式,该标记解释器可以在引用内容的本地高速缓存版本的检索数据中识别和替换对服务器托管内容的引用,使得沙盒的进程可以利用本地高速缓存的版本,而无需重复加载相同的数据,以及无需损害由沙盒环境提供的安全性,从而减少等待时间并改善多媒体数字内容(诸如视频)的回放。标记解释器可以改善针对本机应用中示出的视频或其他数字多媒体内容的等待时间。标记解释器可以例如减少用于取出与显示特定内容项相关联的逻辑文件的网络远程过程调用(“RPC”)的等待时间。标记解释器可以配置为在沙盒环境外部的本地或私有高速缓存中高速缓存和引用高速缓存的内容。例如,可以运行脚本以在高速缓存或未高速缓存的环境中运行。标记解释器可以识别运行的脚本内的要本地高速缓存的特定元素。在一些实现方式中,通过仅识别要高速缓存的特定元素,标记解释器可以限制总的存储器消耗。然后,标记解释器可以使高速缓存的元素可用于在单独的沙盒计算环境中运行的任何应用。因此,标记解释器可以自动识别脚本的哪些元素要预先高速缓存并替换内嵌,以及脚本的哪些元素要在客户端计算设备上运行而无需参考高速缓存的结果。例如,标记解释器可以高速缓存HTML页面内的对Javascript页面的特定引用,该HTML页面由在本地计算环境中运行的应用处理。在一些实现方式中,标记解释器可以访问新的本地高速缓存(例如,私有高速缓存),并且在将来自服务器的响应发送到沙盒计算环境中的进程、线程或应用以供处理之前,对其进行拦截和操纵。例如,标记解释器可以解析或通读HTML脚本以识别描述要在沙盒计算环境高速缓存外部高速缓存的内容(例如Javascript文件或另一个HTML文件)的新标记,然后从本地高速缓存中抽取出该内容,或取出并高速缓存该内容,然后将内嵌文件引用替换为对内容的高速缓存版本的本地文件引用。结果,当运行提供的HTML时,可以从本地盘中抽取出高速缓存的内容,而不是用往返RPC来抽取出。
在一些情况下,标记解释器可以将高速缓存内容内嵌在文件中,而不是将引用替换为本地文件引用。在一些情况下,替代写入盘或除写入盘之外,标记解释器可以将内容保留为内嵌在存储器中。尽管这可能利用更多的本地存储器,但可以导致减少的等待时间(例如,长达几秒或更长时间)。为了避免使用过时的高速缓存内容,标记解释器可以为高速缓存内容分配识别符,以允许计算环境中的应用确定当前高速缓存内容的版本是否与该应用兼容和/或当前高速缓存的内容是否已经被取代。因此,标记解释器可以提供低等待时间,并允许开发人员通过经由服务器改变推送更新来提供对SDK的频繁更新。
图1A是根据实现方式的用于减少通过计算机网络的多媒体内容传递中的远程过程调用的系统的操作的图示。系统100可以包括客户端计算设备102。系统100可以包括数据处理系统112。客户端计算设备102可以与数据处理系统112交互以显示内容项。客户端计算设备102可以运行应用104(例如,网络浏览器、移动应用、视频游戏应用、新闻应用、地图应用等)。在步骤106,在客户端计算设备102上运行的应用104可以调用web视图108,诸如沙盒媒体计算环境。在步骤110,应用可以将内容请求发送到数据处理系统112(例如,动态内容服务器130)。数据处理系统112可以包括动态内容服务器130,或者访问动态内容服务器130。动态内容服务器130可以提供内容项,诸如图像、文本、视频、音频或其他数字内容。在步骤114,数据处理系统112可以向客户端计算设备102提供内容项。由动态内容服务器130提供的内容项116可以包括对用于处理逻辑的脚本的引用。脚本可以包括处理逻辑或提供用于经由在步骤106由应用104调用的web视图108来渲染、运行或呈现内容项114的处理逻辑。
为了减少远程过程调用并减少等待时间,客户端计算设备102可以包括在客户端计算设备102上运行的挂钩组件118,以在内容项114被转发到web视图108用于呈现之前拦截内容项114。挂钩组件114可以在步骤120处拦截内容项并将内容项114重定向到标记解释器122。客户端计算设备102可以包括标记解释器122,其在客户端计算设备122上运行以解析内容项116从而识别对脚本的引用。在步骤126,标记解释器122可以查询客户端计算设备102的本地高速缓存128(例如,标记解释器122可访问的私有高速缓存),以确定本地高速缓存128是否包括在内容项114中引用的脚本的正确版本。标记解释器122可以响应于查询确定本地高速缓存128是否包括脚本的正确版本。如果标记解释器122确定本地高速缓存128不包括脚本的正确版本,则标记解释器122可以在步骤124从与数据处理系统112相关联的静态内容服务器132请求脚本的正确版本,并且静态内容服务器132可以将脚本的正确版本提供给标记解释器122。标记解释器122随后可以将脚本的正确版本存储在本地高速缓存128中。
标记解释器122然后可以构造包括脚本的修改的内容项。例如,标记解释器122可以从本地高速缓存128中检索处理逻辑,并用脚本的内嵌版本(例如,与脚本的处理逻辑相对应的代码或超文本标记语言)来替换对内容项114中的脚本的引用。标记解释器122可以将脚本内嵌在内容项114中以构造修改的内容项,或者将脚本直接添加到内容项中以代替对脚本的引用,并且在步骤108处将修改的内容项转发到web视图108,用于供web视图108渲染或运行。因此,通过将脚本内嵌到内容项中,标记解释器122可以允许web视图108运行内容项114,而无需web视图108或应用104对web视图108的每个新实例从静态内容服务器132单独请求脚本。
图1B是根据实现方式的用于减少通过计算机网络的多媒体内容传递中的远程过程调用的系统的操作框图。可以由系统100、200或系统400的一个或多个组件或功能来执行操作101,所述系统包括例如数据处理系统112和客户端计算设备102。如图1B中所示,客户端计算设备102可以在步骤140从动态内容服务器130请求内容项。在步骤142,动态内容服务器130可以返回具有对脚本的引用的的内容项。在步骤144,客户端计算设备102可以检查存储在客户端设备102的本地高速缓存中的脚本的版本。在步骤146,客户端计算设备102可以从静态内容服务器132请求脚本的正确版本。在步骤148,客户端计算设备102可以构造内嵌正确脚本的新的、修改的内容项。
仍参考图1B,并且更详细地,客户端计算设备102可以在步骤140从动态内容服务器130请求内容项。在客户端计算设备102上运行的应用可以请求经由客户端计算设备102的接口呈现内容。该请求可以包括有助于内容选择的信息。客户端计算设备102可以将请求发送到数据处理系统112或动态内容服务器130。动态内容服务器130可以包括或访问内容选择器(例如,数据处理系统112的内容选择器组件218)以选择内容项。
在步骤142,动态内容服务器130可以响应于对内容的请求将所选择的内容项返回给客户端计算设备。内容项可以包括对脚本的引用。例如,内容项可以包括引用Javascript文件的HTML。在说明性示例中,内容项的HTML可以包括:
<script type=”text/Javascript”src=https://examplesdk.exampleapps.com/somecode.js”cache-version-id=”6.21.074”“core-cache-policy=”replace-inline”>
在步骤144,客户端计算设备102可以检查存储在客户端设备102的本地高速缓存(或私有高速缓存)中的脚本的版本。例如,客户端计算设备102(例如,经由标记解释器)可以拦截返回的内容项以识别脚本。标记解释器可以解析内容项的HTML以识别脚本“somecode.js”。标记解释器可以通过将标记或指示符“src=”识别为somecode.js,从而识别脚本的来源为https://examplesdk.exampleapps.com/。标记解释器还可以基于标签或指示符“cache-version-id=”将somecode.js的版本识别为“6.21.074”。标记解释器还可以基于指示符或标签“core-cache-policy=”将如何用数字内容嵌入或运行脚本确定为“replace-inline”。
在识别从动态内容服务器130返回的内容项中规定的脚本的名称和脚本的期望版本时,客户端计算设备102可以检查客户端计算设备的存储器中的本地高速缓存以确定脚本是否存储在存储器中。客户端计算设备102可以向存储器中的本地高速缓存查询“somecode.js”和版本“6.21.074”。在一些情况下,客户端计算设备102可以确定脚本的正确版本被存储在存储器中,并且可以继续将脚本内嵌到内容项的HTML中。然而,在一些情况下,标记解释器可以确定脚本的正确版本在客户端计算设备的存储器中不可用。例如,响应于该查询,标记解释器可以接收对somecode.js的版本“6.21.072”和“6.21.073”的指示。标记解释器确定这些存储的版本与期望的版本6.21.074不匹配。
在步骤146,客户端计算设备102可以响应于确定正确版本未存储在本地高速缓存中而从静态内容服务器132请求脚本的正确版本,然后将正确版本存储在本地高速缓存中。客户端计算设备102(例如,经由标记解释器)可以从数据处理系统112的静态内容服务器132请求脚本的正确版本。该请求可以包括如标记解释器在步骤142所识别的脚本的识别符和脚本的版本识别符。客户端计算设备102可以响应于该请求从静态内容服务器132接收脚本的正确版本。客户端计算设备102可以将脚本的正确版本存储在客户端计算设备102的存储器中以用于将来使用。客户端计算设备102可以对脚本的正确版本分配脚本的识别符和脚本的版本识别符或将它们关联,使得标记解释器可以响应于对脚本的后续请求来定位脚本的正确版本。
在步骤148,客户端计算设备102可以构造内嵌正确脚本的新的、修改的内容项。标记解释器可以构造修改的内容项,该内容项包括与存储在本地高速缓存中的脚本(例如somecode.js的内容)相对应的HTML。标记解释器可以将该新修改的数字内容转发到与在客户端计算设备102上运行的应用相关联的web视图以用于运行。
在一些实现方式中,标记解释器122可刷新存储器206中的本地高速缓存128,如图2中所描绘的。例如,标记解释器122可以配置有高速缓存策略,诸如高速缓存替换技术、生存时间(“TTL”)高速缓存策略等。例如,存储在存储器206中的高速缓存中的脚本可以被分配TTL值,诸如6小时、12小时、24小时、48小时、1周、30天等。
图2示出了减少用于在客户端计算设备和数据处理系统之间进行多媒体内容传递的远程过程调用的示例系统200。系统200可以包括内容选择基础设施。系统200可以包括数据处理系统112,其经由网络205与内容提供者计算设备214、内容发布者计算设备216或客户端计算设备102中的一个或多个通信。网络205可以包括计算机网络,诸如因特网、局域网、广域网、城域网或其他区域网、内联网、卫星网络以及其他通信网络,诸如语音或数据移动电话网络。网络205可用于访问可显示在至少一个计算设备102上的信息资源,诸如网页、网站、域名或统一资源定位符,所述计算设备诸如笔记本电脑、台式机、平板电脑、个人数字助理、智能电话、便携式计算机或移动电信设备。例如,经由网络205,计算设备102的用户可以访问由至少一个网站运营商或内容发布者216提供的网页。客户端计算设备102的网络浏览器(例如,应用104)可以访问网站运营商或内容发布者216的web服务器,以检索网页用于显示在计算设备102的监视器上。内容发布者216可以向在计算设备102上运行的应用104提供指令以渲染内容。网站运营商或内容发布者216通常包括操作网页的实体。网站运营商或内容发布者216包括至少一个网页服务器,其与网络205通信以使网页对计算设备102可用。数据处理系统112可以向在计算设备102上运行的应用104提供指令以渲染内容。
网络205可以是任何类型或形式的网络,并且可以包括以下任何一种:点对点网络、广播网络、广域网、局域网、电信网络、数据通信网络、计算机网络、ATM(异步传输模式)网络、SONET(同步光网络)网络、SDH(同步数字体系)网络、无线网络和有线网络。网络205可以包括无线链路,诸如红外信道或卫星频带。网络205的拓扑可以包括总线、星形或环形网络拓扑。该网络可以包括使用任何一种或多种用于在移动设备之间进行通信的协议的移动电话网络,所述协议包括高级移动电话协议(“AMPS”)、时分多址(“TDMA”)、码分多址(“CDMA”)、全球移动通信系统(“GSM”)、通用分组无线业务(“GPRS”)或通用移动电信系统(“UMTS”)。可以经由不同的协议发送不同类型的数据,或者可以经由不同的协议发送相同类型的数据。
系统200可以包括至少一个数据处理系统112。数据处理系统112可以包括:至少一个逻辑设备,诸如计算设备,其具有处理器以经由网络205与例如计算设备102、网站运营商或内容发布者计算设备216(或内容发布者216)进行通信;以及至少一个内容提供者计算设备214(或提供者设备214或内容提供者214)。数据处理系统112可以包括至少一个计算资源、服务器、处理器或存储器。例如,数据处理系统112可以包括位于至少一个数据中心中的多个计算资源或服务器。数据处理系统112可以包括多个按逻辑分组的服务器,并且有助于分布式计算技术。服务器的逻辑组可以称为数据中心、服务器场或机器场。服务器也可以在地理位置上分散。数据中心或机器场可以作为单个实体进行管理,或者该机器场可以包括多个机器场。每个机器场内的服务器可以是异构的——服务器或机器中的一个或多个可以根据一种或多种类型的操作系统平台进行操作。
机器场中的服务器可以与关联的存储系统一起存储在高密度机架系统中,并且位于企业数据中心中。例如,以这种方式整合服务器可以通过在本地化的高性能网络上定位服务器和高性能存储系统改善系统的可管理性、数据安全性、系统的物理安全性和系统性能。集中服务器和存储系统、并将它们与高级系统管理工具耦合允许更有效地使用服务器资源。
数据处理系统112可以包括具有至少一个计算资源或服务器的内容放置系统。数据处理系统112可以包括至少一个动态内容服务器130或与之通信。数据处理系统112可以包括至少一个静态内容服务器132或与之通信。内容提供者设备214可以向数据处理系统112提供动态内容,诸如视频内容项,并且数据处理系统112可以将视频内容项提供给客户端计算设备102。在一些情况下,内容发布者216可以向客户端计算设备102提供静态内容,诸如在线文档或网页,并且数据处理系统112可以提供视频插页内容项,用于经由客户端计算设备102上的应用104呈现。
数据处理系统112可以包括或访问至少一个内容选择器组件218、至少一个动态内容服务器130、至少一个静态内容服务器132以及至少一个数据仓库220与之交互,或者以其他方式与之通信。至少一个数据仓库220可以包括内容数据、脚本、数字内容、数据文件、应用或标记解释器或将它们存储在一个或多个数据结构或数据库中。内容数据可以包括例如内容活动信息、内容组、内容选择标准、内容项对象或由内容提供者214提供或由数据处理系统112获得或确定的其他信息,以有助于内容选择。
内容选择器组件218、动态内容服务器130或静态内容服务器132可各自包括至少一个处理单元或其他逻辑设备,诸如可编程逻辑阵列引擎,或配置为与数据库存储库或数据库220通信的模块。内容选择器组件218、动态内容服务器130、静态内容服务器132和数据仓库220可以是数据处理系统112的分开的组件、单个组件或一部分。系统200及其组件(诸如数据处理系统112)可以包括硬件元件,诸如一个或多个处理器、逻辑设备或电路。
数据处理系统112可以获得与多个计算设备102相关联的匿名计算机网络活动信息。计算设备102的用户可以肯定地授权数据处理系统112以获得与该用户的计算设备102相对应的网络活动信息。例如,数据处理系统112可以提示计算设备102的用户同意获得一种或多种类型的网络活动信息。计算设备102的用户的身份可以保持匿名,并且计算设备102可以与唯一识别符(例如,由数据处理系统或计算设备的用户提供的用户或计算设备的唯一识别符)相关联。数据处理系统可以将每个观察与对应的唯一识别符相关联。
数据处理系统112可以包括或运行具有一个或多个输入文本框、按钮、下拉菜单、小部件或其他用户界面元素的图形用户界面,或者与之通信。数据处理系统112可以提供用于在内容提供者设备214上渲染的图形用户界面。数据处理系统112可以经由图形用户界面接收有助于内容选择处理或建立内容选择处理的参数或其他信息。
由数据处理系统112提供的图形用户界面可以包括动态界面。动态界面可以响应于从内容提供者设备214接收的输入而提供信息。数据处理系统112的图形用户界面可以将从内容提供者设备214接收的数据分组转发或路由到数据处理系统112的一个或多个组件,诸如内容选择器组件218或数据仓库220。数据处理系统112可以包括网络接口、用户界面、输入/输出接口、通信端口、总线或其他软件或硬件,以提供数据分组或信息到内容提供者设备214、内容发布者设备216或计算设备102,并从内容提供者设备214、内容发布者设备216或计算设备102接收数据分组或信息。
内容提供者214可以提供一个或多个内容项对象以供数据处理系统112选择。数据处理系统112可以在与为内容组指定的预算、内容日程、最高出价、关键字和其他选择标准匹配的内容布置机会变为可用时选择内容项对象。内容组中可以包括不同类型的内容项对象,诸如文本内容项、图像内容项、视频内容项、音频内容项、多媒体内容项、调用内容项、内容项链接、插页内容项、或横幅内容项。
数据处理系统112可以包括、运行或以其他方式与内容选择器组件218通信,以基于关键字经由实时内容选择处理来接收和选择内容项。内容选择处理可以参考或包括选择由第三方内容提供者214提供的赞助内容项对象。实时内容选择处理可以包括对多个内容提供者提供的内容项进行解析、处理、加权或匹配以便选择一个或多个内容项以提供给计算设备102的服务。内容选择器组件218可以实时执行内容选择处理。实时执行内容选择处理可以指响应于经由客户端计算设备102接收的对内容的请求而执行内容选择处理。实时内容选择处理可以在接收请求的时间间隔(例如5秒、10秒、20秒、30秒、1分钟、2分钟、3分钟、5分钟、10分钟或20分钟)内执行(例如,发起或完成)。实时内容选择处理可以在与客户端计算设备102的通信会话期间或者在通信会话终止之后的一时间间隔内执行。
例如,数据处理系统112可以包括被设计、构造、配置或操作为选择内容项对象的内容选择器组件218。为了选择用于显示的内容项,数据处理系统112可以使用关键字基于匹配技术来选择匹配的内容项。候选内容项可以包括指示候选内容项的主题的元数据,在这种情况下,内容选择器组件218可以处理元数据以确定候选内容项的主题是否对应于输入关键词。
例如,数据处理系统112可以从计算设备102接收一个或多个数据分组,该一个或多个数据分组包括对要在内容时隙中渲染的内容的请求。内容时隙可以由电子显示硬件经由计算设备102运行的应用104来呈现。应用104可以包括例如网络浏览器、移动应用或视频游戏。响应于接收到请求,数据处理系统112(例如,经由内容选择器组件218)可以运行实时内容选择处理,以基于一个或多个数据分组来识别多个内容项。内容选择器组件218可以基于将由一个或多个数据分组携带或指示的一个或多个标准与由内容提供者214提供的一个或多个内容选择标准相匹配来识别多个内容项。一个或多个数据分组指示的标准可以包括关于将在其上渲染内容项的内容时隙的信息、与应用104相关联的信息、关于网页的信息或与计算设备102相关联的信息。
客户端计算设备102可以包括或访问至少一个接口202、至少一个沙盒计算环境204、至少一个应用104、至少一个标记解释器122、至少一个脚本定位器210、至少一个解析器165、至少一个数字内容修改器212和至少一个存储器206,与之交互或以其他方式与之通信。至少一个存储器206可以包括内容数据、脚本、数字内容、数据文件、应用或标记解释器或将其存储在一个或多个数据结构或数据库中。至少一个存储器206可以包括标记解释器122可访问的本地高速缓存128。例如,标记解释器122可以将用于处理逻辑的脚本存储在本地高速缓存128中,并且本地高速缓存128可以维护或保持所存储的脚本以用于应用104或沙盒204的多个会话或实例。
接口202、沙盒204和标记解释器122可以各自包括至少一个处理单元或其他逻辑设备,诸如可编程逻辑阵列引擎或配置为与存储器206通信的模块。接口202、沙盒204、标记解释器122和存储器206可以是客户端计算设备102的分开的组件、单个组件或一部分。客户端计算设备102及其组件可以包括硬件元件,诸如一个或多个处理器、逻辑设备或电路。
客户端计算设备102可以在客户端计算设备102的沙盒204中运行应用104。在一些情况下,客户端计算设备102可以在沙盒204中运行应用104的第一部分,并且在存储器206中的非沙盒计算环境中运行应用104的第二部分。在一些情况下,客户端计算设备102可以在沙盒204中运行应用104的至少一部分。在一些情况下,应用104可以启动或调用沙盒204以经由应用104运行、渲染或呈现内容项。例如,应用104可以调用并建立沙盒204以渲染或运行视频内容项,然后在视频内容项完成时终止、擦除或删除沙盒204。应用104可以继续运行,而沙盒204可以被擦除或终止。因此,应用104可以调用第二沙盒204来渲染第二视频内容项。
沙盒204可以包括或被称为沙盒媒体环境、孤立环境、虚拟化环境、隔离环境、应用隔离环境或任何其他类似术语。沙盒环境可以是一种安全机制,其将多个正在运行的进程、线程或应用104或同一进程、线程或应用104的多个运行实例分开。通过防止运行恶意代码的进程访问操作系统参数或控件、用户数据或者甚至其他沙盒进程的数据,沙盒204可用于运行可能来自未经验证或不受信任的第三方、供应商、用户或网站的程序或代码,而不冒损害客户端计算设备102或操作系统的风险。沙盒204可以提供应用104在其中运行的严格控制的资源集合,诸如盘和存储器(例如存储器206)上的暂存空间。沙盒204可以限制或阻止某些网络访问、审视客户端计算设备102或从/向某些输入设备读取/写入的能力。
在一些情况下,沙盒204可以提供一种虚拟化。在由网络浏览器提供沙盒(例如,用于与窗口或标签相关联的处理)的一些情况下,沙盒204可包括一种iframe或提供与iframe相关联的功能。在一些情况下,沙盒204可以包括或提供与web视图关联的功能。沙盒204可以包括或提供web视图渲染引擎,应用104可以利用该引擎来渲染或运行数字内容,诸如内容项116。
例如,沙盒204可以包括或运行web视图或窗口。web视图可以允许应用104在应用104中嵌入外部Web内容(诸如内容项116)。内容项116可以在沙盒204中运行,该沙盒可以是与应用104分开的进程。因此,沙盒204内部的利用(exploit)可以与应用104隔离,并且可能无法获得应用104可具有的提升特权。此外,沙盒204对数据(诸如Cookie)的存储可以与应用104隔离,因此web视图无法访问与应用104相关联的数据。
沙盒204数字内容116可以嵌入应用104内。例如,沙盒204数字内容116可以使用iframe嵌入应用104内。iframe可以引用嵌入在经由应用104(例如,网络浏览器)运行的网站上的另一个HTML文档内的HTML文档。iframeHTML元素可以配置为插入来自另一源(诸如内容提供者214或数据处理系统112)的数字内容。iframe可以运行JavaScript Ajax(异步JavaScript和XML,允许开发者定义定制标记语言的元语言)。
客户端计算设备102可以包括一个或多个接口130,其可以是相同或不同的类型。接口202可以包括网络接口、用户界面、输入/输出接口、通信端口、总线或其他软件或硬件,以接收经由通信地耦合到客户端计算设备102的一个或多个输入/输出设备输入的信息或指令,经由网络205接收数据分组或经由网络205发送数据。接口202可包括图形用户界面、多点触摸接口、基于手势的接口、基于音频或语音的接口。接口202可以包括传感器或与之交互,所述传感器诸如位置传感器(例如,全球定位系统、无线传输、短距离无线互连、近场通信等)、加速度计、陀螺仪、环境光传感器、运动检测器、环境声音传感器、环境温度传感器等。接口202可以允许客户端计算设备102的一个或多个组件彼此交互。例如,接口202可以在应用104、沙盒计算环境204、存储器206和标记解释器122中的一个或多个之间中继数据或指令。
接口202可以向内容提供者设备214、内容发布者设备216或数据处理系统112提供数据分组或信息,并从内容提供者设备214、内容发布者设备216或数据处理系统112接收数据分组或信息。
接口202可以包括或运行具有一个或多个输入文本框、按钮、下拉菜单、窗口小部件或其他用户界面元素的图形用户界面,或与之通信。数据处理系统112可以提供用于在客户端计算设备102上渲染的图形用户界面。数据处理系统112可以经由计算设备102的接口202接收有助于内容选择处理的参数或其他信息。客户端计算设备102的接口202可以将从客户端计算设备102的一个或多个组件接收的数据分组转发或路由到数据处理系统112、内容提供者设备214或内容发布者216。
例如,接口202可以发送对于数字内容的请求以供经由沙盒媒体环境204中的客户端设备上运行的应用104呈现。该请求可以包括有助于数据处理系统112(例如,由内容选择器组件218)进行内容选择的信息。在计算设备102上运行的应用104可以生成请求并指令接口202将请求发送到数据处理系统112。应用104可以响应于指示、交互或触发事件来生成请求。例如,应用104可以响应于计算设备102的用户经由应用104访问资源而生成请求。该请求可以包括有助于选择数字内容的信息或与之相关联,所述信息诸如内容选择标准、偏好、大小、宽度、位置、数字内容的类型(例如,静态、动态、图像、文本、视频、音频)或呈现类型(例如,横幅或插页)。
接口202可以经由网络205将请求发送到数据处理系统112。接口202可以将请求发送到数据处理系统112的动态内容服务器130。例如,数据处理系统112可以接收请求,经由内容选择器组件218处理该请求以选择内容项,然后指令动态内容服务器130提供相应的所选择的动态内容,并指令静态内容服务器132提供任何相应的所选择的静态内容,诸如数字内容处理逻辑、媒体处理逻辑、脚本、Javascript、AJAX等。例如,动态内容服务器130可以提供内容项,诸如图像、音频、视频或其他多媒体内容,并且静态内容服务器132可以提供诸如Javascript的脚本,其用于运行内容项以经由客户端计算设备102的接口202呈现。
接口202可以响应于该请求而接收包括对脚本的引用的内容项。接口202可以从数据处理系统112(或其动态内容服务器130)接收内容项(例如,数字内容116)。接口202可以将接收的内容项转发或提供给客户端计算设备102的一个或多个组件。在一些情况下,接口202可以将内容项提供给请求该内容项的组件。例如,接口202可以将内容项转发到沙盒204中运行的应用104或web视图。
客户端计算设备102可以包括被设计和构造为拦截内容项的标记解释器122。标记解释器122可以包括应用、服务、服务器、守护程序、例程或其他可运行逻辑,用于拦截由沙盒的应用、线程或进程请求并发送给沙盒的应用、线程或进程的文档或数据,并用于替换拦截的文档或数据的一个或多个部分。标记解释器122可以在沙盒204、媒体内容环境或web视图的范围之外的应用层中运行。标记解释器122可以在调用和创建沙盒204(或web视图或媒体内容环境)的同一层中运行。标记解释器122可以在应用104(或沙盒204)接收内容项之前拦截该内容项。标记解释器122可以在沙盒媒体环境(例如,沙盒204)中运行的应用104(或应用104的一部分)接收内容项之前拦截该内容项。
例如,标记解释器可以使用挂钩组件或挂钩技术来拦截内容项,所述挂钩组件或挂钩技术被设计为拦截诸如在从接口202到应用104或沙盒204的客户端计算设备的组件之间传递的功能调用、内容项、消息或事件。标记解释器122可以在配置为拦截内容项的应用104的运行时插入事件挂钩。在一些实现方式中,标记解释器122可以在例如将数据传递到堆栈的应用层之前在网络堆栈内运行。在其他实现方式中,标记解释器122可以在操作系统的内核级别、用户级别内运行,或者可以由管理程序独立于一个或多个虚拟机运行。
标记解释器122可以包括解析器208,其被设计和构造为解析内容项,以提取内容项116中引用的脚本的识别符。解析器208可以识别对诸如Javascript文件、数据文件、HTML文件、应用编程接口、链接等的脚本的引用。解析器208可以配置有模式匹配技术或搜索模式,以识别内容项中的对脚本的引用或脚本的识别符。解析器208可以配置有使用正则表达式(例如,正则表达式、正则式或有理表达式)的模式,所述正则表达式可以是定义搜索模式的字符序列。解析器208可以将正则表达式与字符串搜索技术一起使用以识别内容项116中的脚本。
例如,解析器208可以使用正则表达式(并且因此使用正则式)来意指用于表示匹配文本要遵循的模式的标准文本语法。正则表达式中的每个字符(例如,描述其模式的字符串中的每个字符)可以是元字符(具有其特殊含义),或正则字符(具有其字面含义)。例如,在正则式“a.”中,“a”是仅与“a”匹配的文字字符,而“.”是与除换行符之外的每个字符匹配的元字符。因此,此正则式将匹配例如“a”或“ax”或“a0”。解析器208可以一起使用元字符和文字字符来识别给定模式的文本材料,或处理它的多个实例。模式匹配的范围从精确的相等到非常相似(由元字符控制)。
解析器208可以将正则表达式转换成内部表示,解析器208可以运行该内部表示并将其与表示正在搜索的文本的字符串进行匹配。例如,解析器208可以构造非确定性有限自动机(NFA),然后使非确定性有限自动机(NFA)成为确定性的,并且在目标文本字符串(例如,数字内容116的文本字符串)上运行所得的确定性有限自动机(DFA),以识别匹配正则表达式的子字符串。脚本的识别符可以包括例如字母数字字符、字符串或符号。
解析器208可以基于内容项中的标签来提取脚本的识别符。标签可以包括例如<script type>、<script>或<href>。使用标签或正则表达式,解析器208可以识别脚本的名称和脚本的版本。例如,内容项可以包括:<script type=”text/Javascript”src=https://examplesdk.exampleapps.com/somecode.js”>。解析器208可以解析内容项以识别该脚本。解析器208可以基于脚本类型、脚本的名称、脚本的源或脚本的版本来提取脚本的识别符。在此示例中,脚本的类型可以是文本Javascript,并且脚本的源可以是https://examplesdk.exampleapps.com/somecode.js。
在一些情况下,内容项还可以指示脚本的版本。例如,内容项可以包括:<scripttype=”text/Javascript”src=https://examplesdk.exampleapps.com/somecode.js”cache-version-id=”6.21.074”>。在此示例中,版本识别符是6.21.074。可以使用其他识别符,包括字母数字识别符、版本名称(例如,alpha、beta、delta等、或Al、Bob、Charlie等),或任何其他类型和形式的识别符。
一旦识别出脚本的识别符,解析器208就可以将识别符转发到脚本定位器210。标记解释器122可以包括脚本定位器210,其被设计和构造为基于脚本的识别符来识别存储在与沙盒204(例如,沙盒媒体环境)分开的客户端计算设备102上的存储器206(例如,标记解释器122可访问的本地高速缓存或私有高速缓存)中的脚本。脚本定位器210可以在存储器206中执行查找以确定脚本是否存储在存储器中。脚本定位器210可以使用经由解析器208识别的识别符来执行查找。在一些情况下,脚本定位器210可以使用脚本的识别符和版本号之一或二者来执行查找。存储器206可以在数据结构或数据库中存储一个或多个脚本。
在一些情况下,脚本定位器210可以向客户端计算设备102的存储器206或其他数据仓库或数据库查询与解析器208所识别的识别符相对应的脚本。脚本定位器210可以响应于查询接收关于与识别符相对应的脚本在客户端计算设备102的本地高速缓存、存储器或其他数据库中是否可用的指示。脚本定位器210可以确定该脚本在存储器206中可用;该脚本在存储器206中不可用;内容项中引用的脚本的类型和版本在存储器中可用;或脚本的类型在存储器206中可用,但不是内容项中引用的相同版本。
例如,标记解释器122可以解析内容项以识别脚本的版本,然后确定内容项中指示的脚本的版本与存储在本地高速缓存中的脚本的版本匹配。然而,在一些情况下,标记解释器122可以确定所识别的脚本或版本在存储器206中不可用。响应于确定所识别的脚本在存储器206中不可用,标记解释器可以从数据处理系统112(例如,动态内容服务器130)请求脚本。标记解释器122经由脚本定位器210和接口202,可以生成对所识别的脚本版本的请求,并将该请求发送至数据处理系统112。数据处理系统112可以响应于来自标记解释器122的请求来提供脚本。标记解释器122可以从数据处理系统112接收脚本,并且将脚本与脚本的识别符相关联地存储在存储器206中。
标记解释器122可以基于允许存储在客户端设备的本地高速缓存中的脚本类型的预定列表,确定将内容项的脚本存储在存储器206中的本地高速缓存中。例如,标记解释器122可以配置有脚本类型的预定列表以存储在存储器206中,这可以有助于减少多媒体内容传递中的远程过程调用。标记解释器122可以将由解析器208识别的脚本的识别符与用于存储在包括脚本类型的预定列表的数据结构中的脚本的识别符进行比较,以识别匹配。响应于识别出匹配,标记解释器122可以确定将所述脚本存储在存储器206中以用于将来使用,以便减少远程过程调用。然而,如果标记解释器122确定由解析器208识别的脚本的识别符与脚本类型的预定列表的识别符不匹配,则标记解释器122可以确定不将脚本存储在存储器206中供其他会话或应用的实例使用。因此,通过仅本地高速缓存标记用于本地高速缓存的脚本,标记解释器122可以通过不高速缓存不应本地高速缓存的脚本来减少存储器消耗。在其他实现方式中,标记解释器122可以高速缓存未被标记为可高速缓存的、或被显式标记为不可高速缓存的脚本或其他数据。这可以减少网络等待时间,但是以内容新鲜度为潜在代价。在类似的实现方式中,标记解释器122可以改变内容的可高速缓存性标记。例如,标记解释器122可以高速缓存标记为可高速缓存的内容或脚本,并且在将脚本或内容传递到沙盒的进程时,可以修改内容或脚本以将其标记为不可高速缓存。这可以通过防止沙盒的进程将内容或脚本分别高速缓存在沙盒的本地高速缓存中来减少存储器使用,同时仍通过本地高速缓存内容或脚本、因此不需要为每个沙盒的进程单独从远程服务器检索内容来减少等待时间。在其他实现方式中,可以由内容修改器170进行可高速缓存性修改,这将在下面更详细地讨论。
标记解释器122可以包括内容修改器170,其被设计和构造为基于存储在存储器206的本地高速缓存中的脚本修改内容项。内容修改器170可以包括应用、服务、服务器、守护程序、例程、或其他可运行逻辑,用于将内容项修改为引用本地地址而不是远程地址,修改可高速缓存性标记或指示符,或其他方式修改内容以供沙盒的进程或应用使用。数字内容修改器212可以基于存储在存储器206中的脚本和从数据处理系统112接收的内容项来构造修改的内容项。标记解释器122然后可以将修改的内容项转发到沙盒媒体环境(例如,沙盒204)中的客户端计算设备102上运行的应用104(或其部分)以使应用104(或沙盒204)运行修改的内容项。
数字内容修改器212可以使用内嵌脚本修改内容项116。例如,数字内容修改器212可以内嵌Java脚本。通过使用内嵌Javascript修改内容项116,标记解释器122可以减少做出的远程过程调用请求的数量,因为Javascript资源的内容可以被包括或直接嵌入到内容项(例如HTML文档)内。这可以减少向客户端计算设备102的用户显示或提供内容项所花费的时间。
通过将脚本资源的内容直接写到内容项中,应用104可能不必从数据处理系统112请求这些资源。例如,内容项可以包括如下HTML代码:
在此示例中,资源example.js可以是:
/*contents of an example JavaScript file*/
然后,在客户端计算设备102上运行的标记解释器122的数字内容修改器212可以重写内容项的HTML,以构造修改的内容项如下:
通过使用从存储器206中的本地高速缓存检索的内嵌脚本创建修改的内容项,标记解释器122可以消除对于example.js的一个或多个外部请求,从而减少通过网络205的多媒体内容传递中的远程过程调用。
在构造修改的内容项时,标记解释器122可以将修改的内容项转发到应用104,以使应用104运行沙盒204中的内容项。因此,即使在沙盒204中运行的应用104或其部分可能不能访问存储在存储器206中的本地高速缓存的脚本,通过拦截和修改从数据处理系统102接收的内容项,标记解释器122也可以提供修改的内容项以供沙盒的应用104运行。
由于沙盒204提供的安全机制,应用104的分开的实例、或者甚至经由应用104提供的web视图的分开的实例可能不能访问相同的数据,因为与沙盒204相关联的存储器204在会话终止后可被擦除。例如,客户端计算设备102可以建立第一会话,在该第一会话中,应用104的第一实例可以请求内容项并在沙盒204的第一实例中运行该内容项。第一会话可以引用为应用104的第一实例调用的沙盒204中运行的应用(或其部分)的第一实例。第一会话可以响应于对沙盒204的调用而开始、启动或发起。第一会话可以响应于在沙盒204中运行的应用(或其部分)的第一实例关闭而结束、终止或退出,这可以使客户端计算设备102清除或擦除与在沙盒204中运行的应用的第一实例相关联的存储器或其他数据。
客户端计算设备102可以为在沙盒204中运行的应用(或其一部分)的第二实例建立第二会话。在一些情况下,第一会话可以引用沙盒204的第一实例。例如,同一应用104可以为沙盒204的一个或多个实例调用一个或多个会话以运行一个或多个内容项。应用104可以建立第一会话以调用沙盒204的第一实例来运行第一内容项;并建立第二会话以调用沙盒204的第二实例以运行第二内容项。第一和第二内容项可以是相同或不同的内容项。
在从动态内容服务器请求内容项之前,客户端计算设备102可以为沙盒媒体环境中的客户端设备上运行的应用建立第一会话。例如,客户端计算设备102可以建立第一会话以调用沙盒204的第一实例,在沙盒中运行应用104或其部分(例如,应用104的web视图部分)。客户端计算设备102可以在应用104(例如,在沙盒204或web视图中)运行修改的内容项之后终止第一会话。终止第一会话可以包括清除与沙盒媒体环境相对应的高速缓存。例如,沙盒204可以锁定存储器206中的高速缓存的一部分以供沙盒204使用,然后响应于沙盒204的第一实例的终止而清除存储器206中的高速缓存的锁定部分。
标记解释器122可以减少使用存储在存储器206中的相同版本的脚本的第二和后续会话中的远程过程调用。例如,在第一会话中,标记解释器122可以识别内容项中的脚本的识别符,确定脚本未存储在存储器206中,并从数据处理系统112请求并接收该脚本。在相同的脚本用于运行后续的内容项的随后的会话中,标记解释器122可以拦截从数据处理系统112接收的内容项,并将第二内容项中的识别符替换为在第一或先前会话期间先前存储在存储器206中的内嵌Javascript。在一些情况下,可以在第一会话或先前会话终止之后建立第二会话或后续会话。在一些情况下,第二会话或后续会话可以与第一会话或先前会话重叠,但在与第一会话或先前会话分开的进程中运行。
客户端计算设备102可以为在沙盒204(例如,沙盒媒体环境)中的客户端设备上运行的应用104建立第二会话。第二会话可以对应于应用104的第二或后续实例。应用104的第一或先前实例可能已经终止,或者正在单独的进程中运行。应用104的第一或先前实例可以与应用104的第二或后续实例至少部分重叠。在第二会话中运行的应用104的第二实例可以从数据处理系统112请求内容,并从数据处理系统112接收第二内容项。
第二内容项可以包括对第二脚本的第二引用。解析器208可以解析第二内容项以识别与第二脚本的第二引用相对应的第二识别符。脚本定位器210可以用第二识别符在存储器206中执行查找以确定与沙盒204分开的存储器206中的本地高速缓存不具有第二脚本。标记解释器122可以响应于对本地高速缓存不具有第二脚本的确定,从数据处理系统112(例如,静态内容服务器132)请求第二脚本。标记解释器122可以将第二脚本存储在存储器206的本地高速缓存中。
使用存储在存储器206中的第二脚本,标记解释器122可以基于从静态内容服务器132接收并存储在本地高速缓存中的第二脚本、以及从动态内容服务器130接收的第二内容项,构建第二修改的内容项。标记解释器122可以将第二修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使该应用运行第二修改的内容项。
第二脚本可以是与第一脚本不同类型的脚本、不同的脚本或第一脚本的不同版本(例如,更新版本)。标记解释器122可以使用存储在存储器206中的相同脚本来构造多个不同的修改的内容项,并且将多个不同的修改的内容项提供给在不同的沙盒204中运行的应用104的分开的实例。
图3是在通过计算机网络的多媒体内容传递中减少远程过程调用的方法的实现的流程图。方法300可以包括在计算机网络上的多媒体内容传递中减少远程过程调用的计算机实现的方法,该计算机网络包括与至少一个存储器通信的至少一个处理器。可以经由图1A、图1B、图2或图4中所示的一个或多个系统或组件来执行方法300,所述系统或组件包括例如客户端计算设备、接口、标记解释器、存储器或数据处理系统。简要概述,方法300可以包括在步骤305客户端计算设备请求内容。在步骤310,客户端计算设备可以接收内容项。在步骤315,客户端计算设备的标记解释器可以拦截内容项。在步骤320,客户端计算设备的标记解释器可以解析内容项。在步骤325,标记解释器确定是否识别了对用于处理逻辑的脚本的引用。如果没有识别到对用于处理逻辑的脚本的引用,则标记解释器可以前进至步骤330,其可以包括将接收的内容项转发到web视图以供运行、渲染或其他处理。然而,如果识别了对用于处理逻辑的脚本的引用,则标记解释器可以前进到步骤335,在一些实现方式中,其可以包括确定是否在客户端计算设备的本地高速缓存中存储了脚本的正确版本或在一些实现方式中可以包括确定是否在客户端计算设备的本地高速缓存中存储了脚本的任意版本。解释器可以经由比较创建或修改日期、到期日期、版本识别符或任何其他此类识别符来确定正确的版本是否存储在高速缓存中或者脚本是否存储在高速缓存中。如果正确的版本(或在一些实现方式中的任意版本)没有存储在本地高速缓存中,则标记解释器可以前进至步骤340,其可以包括从静态内容服务器请求并接收脚本的正确的版本。然后在步骤345,标记解释器可以继续将接收的脚本版本存储在本地高速缓存中。然后,标记解释器可以继续至步骤350。在判定框335,如果标记解释器在本地高速缓存中成功地识别到脚本的正确版本,则标记解释器可以前进到步骤350,其可以包括从本地高速缓存中检索脚本的正确版本。然后在步骤355,标记解释器可以继续用内嵌脚本来构建修改的内容项。在步骤360,标记解释器可以将修改的内容项转发到web视图以供运行。
仍参考图3,并且更详细地,方法300可以包括在步骤305客户端计算设备请求内容。客户端计算设备可以将对内容的请求发送到数据处理系统、动态内容服务器、内容提供者或其他设备或服务器。客户端计算设备可以经由客户端计算设备上运行的应用来请求数字内容以供呈现。该应用或其一部分可以在孤立的或对客户端计算设备的其他组件或资源的访问受到限制的沙盒媒体环境中运行。客户端计算设备可以响应于来自在客户端计算设备上运行的应用的指令来发送对内容的请求。该应用可以响应于触发、条件、事件或交互来请求数字内容。
在步骤310,客户端计算设备可以接收内容项。客户端计算设备可以从数据处理系统或动态内容服务器接收内容项。在一些实现方式中,内容项可以包括对脚本的引用。对脚本的引用可以包括脚本的源的位置。该位置可以包括脚本的源的位置的识别符、指针、链接、超链接、统一资源定位符或其他指示。脚本的源的位置可以远离客户端计算设备(例如,在远离客户端计算设备并且可以经由网络访问的数据处理系统或其他服务器上)。
在步骤315,客户端计算设备的标记解释器可以拦截内容项。标记解释器可以在请求内容项的沙盒媒体环境中正运行的应用接收该内容项之前拦截该内容项。例如,在客户端计算设备上运行的挂钩组件可以拦截该内容项并将该内容项转发给标记解释器。挂钩组件可以配置为将内容项重新路由或重定向到标记解释器。拦截可以发生在处理的任何方便或适当的部分,诸如在网络堆栈中(例如在应用层或在应用层以下);在将内容项写入沙盒媒体环境的存储器或缓冲器之后,但在沙盒媒体环境的处理线程读取内容项之前;等等。
在步骤320,客户端计算设备的标记解释器可以解析内容项。标记解释器可以解析内容项以提取脚本的识别符。识别符可以包括脚本的名称、脚本的源位置、脚本的版本识别符、脚本的类型或与脚本关联的策略、脚本的创建日期、脚本的修改日期、脚本的到期日期、脚本的生存时间和/或任何其他此类信息。标记解释器可以使用一种或多种模式、正则表达式、规则或模板来提取有关脚本的信息。
在判定框325,标记解释器可以确定内容项是否包括对脚本的引用。标记解释器可以基于解析内容项来确定内容项是否包括对脚本的引用(例如,脚本标签、脚本的地址等)。如果在判定框325处确定内容项不包括对脚本的引用,则在步骤330,标记解释器可以继续将内容项转发到web视图以供运行或渲染。
在一些实现方式中,标记解释器可以进一步确定内容项是否包括对与被批准用于本地高速缓存的脚本的预定列表匹配的脚本的引用。例如,客户端计算设备可以包括被批准用于本地高速缓存的脚本的预定列表。如果内容项确实包括对脚本的引用、但是所识别的脚本不在预定列表中,则内容项可以前进到步骤330以将接收的内容项转发到web视图以供执行。
如果在判定框325标记解释器识别出内容项中的对脚本的引用,则标记解释器可以前进到判定框335。在判定框335,标记解释器可以确定脚本的正确版本是否存储在客户端计算设备上的本地高速缓存中。本地高速缓存可以与web视图运行的或应用或其一部分运行的沙盒媒体环境分开。标记解释器可以在步骤320的解析期间使用从内容项中提取的脚本的识别符来查询本地高速缓存,以检查存储在本地高速缓存中的脚本的版本是否与内容项中指示的脚本的版本匹配。如果标记解释器在判定框335确定本地高速缓存不包括相同的脚本,或者存储在本地高速缓存中的脚本的版本与内容项指示的版本不匹配,则标记解释器可以前进到步骤340。
在步骤340,标记解释器可以经由网络将对脚本的正确版本或脚本的当前版本的请求发送到数据处理系统或静态内容服务器。数据处理系统或静态内容服务器可以响应于请求提供脚本的正确版本。在步骤345,客户端计算设备可以接收脚本的正确或当前版本,并且将脚本的正确或当前版本存储在本地高速缓存中。标记解释器然后可以进行至步骤350。
如果标记解释器在判定框335确定脚本的正确或当前版本已经存储在本地高速缓存中,则标记解释器可以绕过步骤340和345,并前进到步骤350。在步骤350,标记解释器可以从本地高速缓存中检索脚本的正确或当前版本。标记解释器可以使用从内容项中提取的脚本的识别符,同时在步骤320解析内容项以检索脚本的正确或当前版本。
在步骤355,标记解释器可以构造修改的内容项。标记解释器可以使用从本地高速缓存检索的脚本和从动态内容服务器接收的内容项来构造修改的内容项。标记解释器可以通过将脚本内嵌到内容项的HTML中来构造修改的内容项,以便减少到与提供有在步骤310接收的内容项的引用中指示的源位置相对应的静态内容服务器或数据处理系统的RPC。
在步骤360,标记解释器可以转发修改的内容项以供运行。标记解释器可以将修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使应用使用修改的内容项的HTML中内嵌的脚本来运行修改的内容项。例如,标记解释器可以将修改的内容项转发到web视图以供运行。在运行内容项以向用户呈现内容项之后,客户端计算设备可以终止web视图或终止应用。终止web视图可以包括擦除或清除web视图的内容,诸如由web视图或应用使用的沙盒环境或高速缓存。然而,终止web视图可能不会影响与web视图分开并由标记解释器用来存储和检索脚本的本地高速缓存的内容。
因此,诸如视频和音频的媒体内容形成了在网页中且在应用内提供的内容的越来越重要的部分。一些媒体内容可以在其自己的媒体内容环境内显示(例如,在移动操作系统或沙盒的媒体内容环境使用的web视图类的实例内)。一旦沙盒的媒体内容环境播放了媒体内容,该媒体内容环境可能会被破坏,而新的媒体内容环境被创建来播放新的媒体内容。
为了允许用于在媒体内容环境内播放媒体内容的媒体处理逻辑的跨平台开发和常规代码更新(例如,以改善功能性、安全性等),媒体处理逻辑可以存储在远离要播放媒体内容的客户端计算设备的服务器(例如,数据处理系统或动态内容服务器)。因此,可以通过媒体内容环境从远程服务器获取媒体处理逻辑。尽管媒体处理逻辑的一些组件可以存储在属于媒体内容环境的高速缓存中,但是该高速缓存可以随着媒体内容的破坏而被破坏。这样,每次要在媒体内容环境中播放媒体内容时,就获得媒体处理逻辑并将其加载到存储器中。这可能导致多次频繁的往返网络调用,从而增加等待时间、网络业务量、存储器使用和带宽需求。
本解决方案可以提供一种向客户端计算设备提供内容的计算机实现的方法,该方法包括一个或多个处理器运行第一计算机可读指令以使客户端计算设备提供第一内容环境,该第一内容环境具有被配置为存储包括第二计算机可读指令的媒体处理逻辑的私有(例如,本地)高速缓存,该第二计算机可读指令可由一个或多个处理器运行以允许在第一内容环境内提供媒体。客户端计算设备可以通过在一个或多个处理器上运行的内容预处理指令(例如,运行标记解释器)来接收与第一内容环境相关联的内容。客户端计算设备可以通过内容预处理指令确定内容包括标记(例如,对用于处理逻辑的脚本的引用)。该标记可以与存储在远程设备(例如,数据处理系统112)处的媒体处理逻辑的指示相关联。
响应于确定内容包括标记,客户端计算设备可以通过内容预处理指令来确定媒体处理逻辑是否存储在内容预处理指令可访问的本地高速缓存中和/或第一内容环境中。如果标记解释器确定媒体处理逻辑未存储在本地高速缓存中,则标记解释器可从远程设备获得媒体处理逻辑并将媒体处理逻辑存储在本地高速缓存中。标记解释器可以修改接收的内容,以使媒体处理逻辑可被第一内容环境访问。
因此,标记解释器可以通过允许从本地高速缓存向每个内容环境提供媒体处理逻辑,而不是分别并且单独从远程源取得媒体处理逻辑(诸如用于处理视频内容的JavaScript),大幅减少(例如,减少几分之一秒、1秒或更长时间)在于内容环境内显示媒体内容时经历的等待时间。
标记解释器可以通过将存储在远程设备的媒体处理逻辑的指示替换为存储在本地高速缓存中的媒体处理逻辑的指示,来修改接收的内容处理逻辑。标记解释器可以通过将媒体处理逻辑存储在用户设备的RAM中并将存储在远程设备的媒体处理逻辑的指示替换为存储在用户设备的RAM中的媒体处理逻辑的指示,来修改接收的内容处理逻辑。标记解释器可以通过用媒体处理逻辑的一些或全部计算机可读指令替换存储在远程设备的媒体处理逻辑的指示,来修改接收的内容处理逻辑。
标记(或脚本的引用或识别符)可以包括时间指示(例如,版本识别符或日期)。标记解释器可以通过将标记的时间指示与存储在本地高速缓存中的存储的时间指示进行比较来确定媒体处理逻辑是否存储在本地高速缓存中。以此方式,可以以任何期望的频率(例如,每天或每周)更新媒体处理逻辑,同时为每个媒体内容环境提供对所接收的内容的正确的媒体处理逻辑。
图4是示例计算机系统400的框图。计算机系统或计算设备400可以包括或用于实现系统200或其组件,诸如数据处理系统112。计算系统400包括总线405或用于传达信息的其他通信组件、以及耦合到总线405以用于处理信息的处理器410或处理电路。计算系统400还可包括耦合到总线以用于处理信息的一个或多个处理器410或处理电路。计算系统400还包括耦合到总线405以用于存储信息以及将由处理器410运行的指令的主存储器415,诸如随机存取存储器(RAM)或其他动态存储设备。主存储器415可以是或包括数据仓库104。主存储器415也可以用于存储在处理器410运行指令期间的位置信息、临时变量或其他中间信息。计算系统400还可以包括耦合到总线405以用于存储用于处理器410的静态信息和指令的只读存储器(ROM)420或其他静态存储设备。存储设备425(诸如固态设备、磁盘或光盘)可以耦合到总线405,以持久存储信息和指令。存储设备425可以包括数据仓库104或者是数据仓库104的一部分。
计算系统400可以经由总线405耦合到显示器435,诸如液晶显示器或有源矩阵显示器,以用于向用户显示信息。输入设备430,诸如包括字母数字和其他键的键盘,可以耦合到总线405,用于将信息和命令选择传达给处理器410。输入设备430可以包括触摸屏显示器435。输入设备430还可以包括光标控件,诸如鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传达给处理器410,并用于控制显示器435上的光标移动。显示器435可以是例如图1的数据处理系统112、客户端计算设备102或其他组件的一部分。
本文所述的处理、系统和方法可以由计算系统400响应于处理器410运行包含在主存储器415中的指令的布置来实现。这些指令可以从诸如存储设备425的另一计算机可读介质读取到主存储器415中。运行包含在主存储器415中的指令的布置使计算系统400执行本文所述的说明性过程。也可以采用多处理布置中的一个或多个处理器来运行包含在主存储器415中的指令。可以使用硬连线电路代替或组合本文所述的系统和方法结合的软件指令。本文描述的系统和方法不限于硬件电路和软件的任何特定组合。
虽然在图4中描述了示例计算系统,但是包括在本说明书中描述的操作的主题可以在其他类型的数字电子电路中或在计算机软件、固件或硬件中实现,包括在本说明书中公开的结构及其结构等同物,或者在计算机软件、固件或硬件中的一个或多个的组合来实现。
对于此处讨论的系统收集有关用户的个人信息或可以利用个人信息的情况,可以为用户提供控制是否可以收集个人信息(例如,有关用户的社交网络、社交行为或活动、用户的偏好或用户的位置的信息)的程序或特征或控制是否或如何从内容服务器或可与用户更相关的其他数据处理系统接收内容的机会。另外,某些数据可以在其被存储或使用之前以一种或多种方式匿名化,以便在生成参数时删除个人可识别信息。例如,可以对用户的身份进行匿名化,使得无法针对该用户确定任何个人可识别信息,或者可以在获得位置信息的情况下将用户的地理位置概括化(诸如,概括化成城市、邮政编码或州级别),使得无法确定用户的特定位置。因此,用户可以控制关于他或她如何收集信息以及信息如何被内容服务器使用。
本说明书中描述的主题和操作可以在数字电子电路中、或在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实现。本说明书中描述的主题可以实现为在一个或多个计算机存储介质上编码的一个或多个计算机程序,例如一个或多个计算机程序指令,用于供数据处理装置运行或控制数据处理装置的操作。替代地或另外地,程序指令可以在例如机器生成的电、光或电磁信号的人工生成的传播信号上编码,所述信号被生成以编码信息,用于传输到合适的接收器设备以由数据处理装置运行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器阵列或设备、或它们中的一个或多个的组合或包括在其中。尽管计算机存储介质不是传播信号,但是计算机存储介质可以是在人工生成的传播信号中编码的计算机程序指令的源或目的地。计算机存储介质还可以是一个或多个单独的组件或介质(例如,多个CD、盘或其他存储设备)或包括在其中。本说明书中描述的操作可以被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。
术语“数据处理系统”、“计算设备”、“组件”或“数据处理装置”涵盖用于处理数据的各种装置、设备和机器,包括例如可编程处理器、计算机、片上系统、或前述的多个或组合。该装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。装置和运行环境可以实现各种不同的计算模型基础设施,诸如网络服务、分布式计算和网格计算基础设施。内容选择器组件218、动态内容服务器130、静态内容服务器132和其他数据处理系统112组件可以包括或共享一个或多个数据处理装置、系统、计算设备或处理器。此外,接口202、标记解释器122、沙盒204、应用104和存储器206以及其他客户端计算设备102组件可以包括或共享一个或多个数据处理装置、系统、计算设备或处理器。
计算机程序(也被称为程序、软件、软件应用、应用程序、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明或过程性语言;并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适用于计算环境的其他单元。计算机程序可以对应于文件系统中的文件。计算机程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本),专用于所讨论的程序的单个文件,或者存储在多个协调文件(例如存储一个或多个模块、子程序或代码部分的文件)中。可以部署计算机程序以在一个计算机上或在位于一个站点或跨多个站点分布并通过通信网络互连的多个计算机上运行。
本说明书中描述的处理和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行动作。处理和逻辑流程也可以由专用逻辑电路来执行,并且装置可以实现为专用逻辑电路,所述专用逻辑电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。适于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或合并到专用逻辑电路中。
本文描述的主题可以在计算系统中实现,该计算系统包括:后端组件,例如作为数据服务器;或者包括中间件组件,例如应用服务器;或者包括前端组件,例如,具有图形用户界面或网络浏览器的客户端计算机,用户可通过其与本说明书中描述的主题进行交互;或者包括一个或多个这样的后端、中间件或前端组件的组合。系统的组件可以通过例如通信网络的任何形式或介质的数字数据通信互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、跨网(例如因特网)和对等网络(例如ad hoc对等网络)。
诸如系统200或系统400的计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且典型地通过通信网络(例如,网络250)进行交互。客户端和服务器的关系借助于在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。服务器可以将数据(例如,表示内容项的数据分组)发送到客户端设备(例如,用于向与客户端交互的用户显示数据和从用户接收用户输入的目的)。可以在服务器处从客户端设备接收(例如,由数据处理系统112从计算设备102或内容提供者计算设备214或内容发布者设备216接收)在用户设备处生成的数据(例如,用户交互的结果)。
因此,本公开的方面针对减少通过计算机网络的多媒体内容传递中的远程过程调用的系统和方法。例如,该系统可以包括客户端设备,该客户端设备包括一个或多个处理器。客户端设备可以具有接口并运行标记解释器。该接口可以从动态内容服务器请求数字内容,以用于经由沙盒媒体环境中的客户端设备上运行的应用呈现。该接口可以响应于该请求而接收包括对脚本的引用的内容项。标记解释器可以在沙盒媒体环境中运行的应用接收内容项之前对内容项进行拦截。标记解释器可以解析内容项以提取脚本的识别符。标记解释器可以基于脚本的识别符来识别存储在与沙盒媒体环境分开的客户端设备上的本地高速缓存中的脚本。标记解释器可以基于存储在本地高速缓存中的脚本和从动态内容服务器接收的内容项,构造修改的内容项。标记解释器可以将修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使应用运行修改的内容项。
在一些实现方式中,标记解释器可以解析内容项以识别脚本的版本。标记解释器可以确定内容项中指示的脚本的版本与存储在本地高速缓存中的脚本的版本匹配。
在从动态内容服务器请求内容项之前,客户端设备可以为沙盒媒体环境中的客户端设备上运行的应用建立第一会话。客户端设备可以在应用运行修改的内容项之后终止第一会话。终止第一会话可以包括清除与沙盒媒体环境相对应的高速缓存。
客户端设备可以为沙盒媒体环境中的客户端设备上运行的应用建立第二会话。可以在第一会话终止之后建立第二会话。客户端设备可以响应于第二请求而从动态内容服务器接收包括对脚本的引用的第二内容项。标记解释器可以基于本地高速缓存中存储的脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项。标记解释器可以将第二修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使该应用在第二会话中运行第二修改的内容项。
客户端设备可以为沙盒媒体环境中的客户端设备上运行的应用建立第二会话。客户端设备可以接收第二内容项,该第二内容项包括对第二脚本的第二引用。标记解释器可以确定与沙盒媒体环境分开的本地高速缓存不具有第二脚本。标记解释器可以响应于对本地高速缓存不具有第二脚本的确定,从静态内容服务器请求第二脚本。标记解释器可以将第二脚本存储在与沙盒媒体环境分开的本地高速缓存中。在一些情况下,标记解释器可以基于本地高速缓存中存储的第二脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项。标记解释器可以将第二修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使该应用运行第二修改的内容项。在一些情况下,第二脚本可以包括脚本的不同版本。
标记解释器可以通过将内容项中的脚本替换为与存储在本地高速缓存中的脚本相对应的内嵌内容来构造修改的内容项。修改的内容项可以包括超文本标记语言。
客户端设备可以为在第二沙盒媒体环境中的客户端设备上运行的第二应用建立第二会话。客户端设备可以接收包括对脚本的引用的第二内容项。标记解释器可以识别与第二沙盒媒体环境分开的本地高速缓存中的脚本。标记解释器可以响应于对本地高速缓存中的脚本的识别并基于存储在本地高速缓存中的脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项。标记解释器可以将第二修改的内容项转发到第二沙盒媒体环境中的客户端设备上运行的第二应用,以使该应用运行第二修改的内容项。
标记解释器可以基于允许存储在客户端设备的本地高速缓存中的脚本的类型的预定列表,确定将内容项的脚本存储在本地高速缓存中。
因此,本文描述的系统和方法支持减少远程过程调用。在一个方面,本公开针对一种在沙盒媒体环境中运行内容的方法。该方法可以包括由客户端设备向动态内容服务器发送对于内容的请求,以供经由沙盒媒体环境中的客户端设备上运行的应用呈现。该方法可以包括:响应于该请求,由客户端设备从动态内容服务器接收包括对脚本的引用的内容项。该方法可以包括由客户端设备运行的标记解释器来拦截内容项。标记解释器可以在沙盒媒体环境中运行的应用接收内容项之前拦截该内容项。该方法可以包括由标记解释器解析内容项,以提取脚本的识别符。该方法可以包括根据所提取的脚本的识别符,由标记解释器从与沙盒媒体环境分开的客户端设备上的本地高速缓存中检索脚本。该方法可以包括由标记解释器使用从本地高速缓存检索的脚本和从动态内容服务器接收的内容项来构造修改的内容项。该方法可以包括由标记解释器将修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用。应用可以运行修改的内容项。
在一些实现方式中,该方法可以包括由标记解释器解析内容项以识别脚本的版本。标记解释器可以确定内容项中指示的脚本版本与存储在本地高速缓存中的脚本版本匹配。
在一些实现方式中,该方法可以包括在从动态内容服务器请求内容项之前,为在沙盒媒体环境中的客户端设备上运行的应用建立第一会话。该方法可以包括在应用运行修改的内容项之后终止第一会话。终止第一会话可以包括清除与沙盒媒体环境相对应的高速缓存。
在一些实现方式中,该方法可以包括:为沙盒媒体环境中的客户端设备上运行的应用建立第二会话,该第二会话在第一会话终止之后。该方法可以包括:响应于第二请求,由客户端设备从动态内容服务器接收包括对脚本的引用的第二内容项。该方法可以包括由标记解释器使用存储在本地高速缓存中的脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项。该方法可以包括由标记解释器将第二修改的内容项转发给在沙盒媒体环境中的客户端设备上运行的应用,以使该应用在第二会话中运行第二修改的内容项。
在一些实现方式中,该方法可以包括为沙盒媒体环境中的客户端设备上运行的应用建立第二会话。该方法可以包括由客户端设备接收第二内容项,该第二内容项包括对第二脚本的第二引用。该方法可以包括由标记解释器确定与沙盒媒体环境分开的本地高速缓存不具有第二脚本。该方法可以包括:响应于确定本地高速缓存不具有第二脚本,由标记解释器从静态内容服务器请求第二脚本。该方法可以包括由标记解释器将第二脚本存储在与沙盒媒体环境分开的本地高速缓存中。
在一些实现方式中,该方法可以包括:由标记解释器使用存储在本地高速缓存中的第二脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项。该方法可以包括:由标记解释器将第二修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使该应用运行第二修改的内容项。
在一些实现方式中,第二脚本可以包括脚本的不同版本。在一些实现方式中,该方法可以包括通过用与存储在本地高速缓存中的脚本相对应的内嵌内容替换内容项中的脚本来构造修改的内容项。修改的内容项可以包括超文本标记语言。
在一些实现方式中,该方法可以包括为在第二沙盒媒体环境中的客户端设备上运行的第二应用建立第二会话。该方法可以包括由客户端设备接收包括对脚本的引用的第二内容项。该方法可以包括由标记解释器识别与第二沙盒媒体环境分开的本地高速缓存中的脚本。该方法可以包括:响应于识别出本地高速缓存中的脚本,由标记解释器使用存储在本地高速缓存中的脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项。该方法可以包括:由标记解释器将第二修改的内容项转发到第二沙盒媒体环境中的客户端设备上运行的第二应用,以使该应用运行第二修改的内容项。
在一些实现方式中,该方法可以包括基于允许存储在客户端设备的本地高速缓存中的脚本的类型的预定列表,确定将内容项的脚本存储在本地高速缓存中。
在另一方面中,本公开针对一种用于减少通过计算机网络的多媒体内容传递中的远程过程调用的系统。该系统可以包括网络接口。该系统可以包括在沙盒媒体环境中运行应用的处理器和标记解释器。该系统可以包括存储设备,包括存储至少一个脚本的本地高速缓存。网络接口可以向动态内容服务器发送对于内容的请求,以供经由沙盒媒体环境中的客户端设备上运行的应用呈现。响应于该请求,网络接口可以接收包括对脚本的引用的内容项。标记解释器可以在沙盒媒体环境中运行的应用接收内容项之前对内容项进行拦截。标记解释器可以解析内容项以提取脚本的识别符。标记解释器可以基于脚本的识别符来识别存储在与沙盒媒体环境分开的客户端设备上的本地高速缓存中的脚本。标记解释器可以基于存储在本地高速缓存中的脚本和从动态内容服务器接收的内容项,构造修改的内容项。标记解释器可以将修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使应用运行修改的内容项。
在一些实现方式中,标记解释器还被配置为解析内容项以识别脚本的版本。标记解释器可以确定内容项中指示的脚本版本与存储在本地高速缓存中的脚本版本匹配。
在一些实现方式中,处理器被配置为在从动态内容服务器请求内容项之前,为在沙盒媒体环境中运行的应用建立第一会话。处理器可以在应用运行修改的内容项之后终止第一会话。终止第一会话可以包括清除与沙盒媒体环境相对应的高速缓存。
在一些实现方式中,处理器可以为沙盒媒体环境中的客户端设备上运行的应用建立第二会话,该第二会话在第一会话终止之后建立。处理器可以响应于第二请求而从动态内容服务器接收包括对脚本的引用的第二内容项。标记解释器可以基于本地高速缓存中存储的脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项。标记解释器可以将第二修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使该应用在第二会话中运行第二修改的内容项。
在一些实现方式中,处理器可以为沙盒媒体环境中的客户端设备上运行的应用建立第二会话。处理器可以接收第二内容项,该第二内容项包括对第二脚本的第二引用。标记解释器可以进一步配置为确定与沙盒媒体环境分开的本地高速缓存不具有第二脚本。标记解释器可以响应于对本地高速缓存不具有第二脚本的确定,从静态内容服务器请求第二脚本。标记解释器可以将第二脚本存储在与沙盒媒体环境分开的本地高速缓存中。
在一些实现方式中,标记解释器还可以被配置为基于存储在本地高速缓存中的第二脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项。标记解释器可以将第二修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使该应用运行第二修改的内容项。
在一些实现方式中,第二脚本可以包括脚本的不同版本。
在一些实现方式中,标记解释器还被配置为通过用与存储在本地高速缓存中的脚本相对应的内嵌内容替换内容项中的脚本来构造修改的内容项,该修改的内容项包括超文本标记语言。
在一些实现方式中,处理器还可以被配置为为在第二沙盒媒体环境中的客户端设备上运行的第二应用建立第二会话。处理器可以接收包括对脚本的引用的第二内容项。标记解释器还可以被配置为识别与第二沙盒媒体环境分开的本地高速缓存中的脚本。标记解释器可以响应于对本地高速缓存中的脚本的识别,基于存储在本地高速缓存中的脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项。标记解释器可以将第二修改的内容项转发到第二沙盒媒体环境中的客户端设备上运行的第二应用,以使该应用运行第二修改的内容项。
在一些实现方式中,标记解释器还被配置为基于允许存储在客户端设备的本地高速缓存中的脚本的类型的预定列表,确定将内容项的脚本存储在本地高速缓存中。
虽然在附图中以特定顺序描绘了操作,但是不需要以所示的特定顺序或按顺序来执行这样的操作,并且不需要执行所有示出的操作。本文描述的动作可以以不同的顺序执行。
各个系统组件的分离并不需要在所有实现方式中都进行分离,并且所描述的程序组件可以包括在单个硬件或软件产品中。例如,增益调整组件204或内容选择器组件218可以是单个组件、应用或程序,或者是具有一个或多个处理电路的逻辑设备,或者是数据处理系统112的一个或多个服务器的一部分。
现在已经描述了一些说明性的实现方式,很明显,前述内容是说明性的而不是限制性的,已经以示例的方式呈现了。具体地,尽管本文呈现的许多示例涉及方法动作或系统元件的特定组合,但是可以以其他方式组合那些动作和那些元件以实现相同的目标。结合一个实现方式所讨论的动作、元件和特征不旨在被排除在其他实现方式或其他多个实现方式中的类似角色之外。
在此使用的措词和术语是出于描述的目的,而不应被认为是限制性的。本文中“包括”、“包含”、“具有”、“含有”、“涉及”、“特征在于”、“特征在”及其变体的使用意在涵盖其后列出的项目、其等同物和附加项目、以及仅由其后列出的项目组成的替代实现。在一个实现方式中,本文描述的系统和方法由所描述的元件、动作或组件中的一个、或多个的每个组合、或全部组成。
对本文中以单数形式提及的系统和方法的实现方式或元件或动作的任何提及也可以涵盖包括多个这些元件的实现方式,并且在本文中对任何实现方式或元件或动作的复数形式的任何提及也可以涵盖仅包含一个元素的实现方式。单数或复数形式的提及无意将当前公开的系统或方法、它们的组件、动作或元件限制为单个或多个配置。对基于任何信息、动作或元件的任何动作或元件的提及可以包括该动作或元件至少部分地基于任何信息、动作或元件的实现方式。
本文公开的任何实现方式可以与任何其他实现方式或实施例组合,并且对“实现方式”、“一些实现方式”、“一个实现方式”等的提及不一定是互斥的,并且旨在指示联系实现方式描述的特定的特征、结构或特性可以被包括在至少一个实现方式或实施例中。如本文所使用的这样的术语不一定全部指代相同的实现方式。任何实现方式可以以与本文所公开的方面和实现方式一致的任何方式与任何其他实现方式包括性地或排他性地组合。
对“或”的提及可以解释为包括性的,以使得使用“或”描述的任何术语可以指示所描述术语中的单个、一个以上以及所有的任何一个。例如,对“‘A’和‘B’中的至少一个”的提及可以包括仅“A”、仅“B”以及“A”和“B”两者。结合“包含”或其他开放式术语使用的此类提及可包括附加项目。
在附图、详细描述或任何权利要求中的技术特征之后是附图标记时,已经包括了附图标记以增加附图、详细描述和权利要求的可理解性。因此,附图标记存在与否对任何权利要求要素的范围没有任何限制作用。
在不脱离其特性的情况下,本文描述的系统和方法可以以其他特定形式来体现。前述实现方式是说明性的,而不是限制所描述的系统和方法。因此,本文描述的系统和方法的范围由所附权利要求而不是前面的描述指示,并且在权利要求的等同含义和范围内的改变被包含在其中。
Claims (20)
1.一种在沙盒媒体环境中运行内容的方法,包括:
由客户端设备向动态内容服务器发送对于内容的请求,以供经由沙盒媒体环境中的客户端设备上运行的应用呈现;
响应于该请求,由客户端设备从动态内容服务器接收包括对脚本的引用的内容项;
在沙盒媒体环境中运行的应用接收内容项之前,由客户端设备运行的标记解释器拦截该内容项;
由标记解释器解析内容项,以提取脚本的识别符;
根据所提取的脚本的识别符,由标记解释器从与沙盒媒体环境分开的客户端设备上的本地高速缓存中检索脚本;
由标记解释器使用从本地高速缓存检索的脚本和从动态内容服务器接收的内容项来构造修改的内容项;以及
由标记解释器将修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,所述应用运行修改的内容项。
2.如权利要求1所述的方法,包括:
由标记解释器解析内容项以识别脚本的版本;以及
由标记解释器确定内容项中指示的脚本的版本与存储在本地高速缓存中的脚本的版本匹配。
3.如权利要求1所述的方法,包括:
在从动态内容服务器请求内容项之前,为在沙盒媒体环境中的客户端设备上运行的应用建立第一会话;以及
在应用运行修改的内容项之后终止第一会话,其中终止第一会话包括清除与沙盒媒体环境相对应的高速缓存。
4.如权利要求3所述的方法,包括:
为沙盒媒体环境中的客户端设备上运行的应用建立第二会话,该第二会话在第一会话终止之后;
响应于第二请求,由客户端设备从动态内容服务器接收包括对脚本的引用的第二内容项;以及
由标记解释器使用存储在本地高速缓存中的脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项;以及
由标记解释器将第二修改的内容项转发给在沙盒媒体环境中的客户端设备上运行的应用,以使该应用在第二会话中运行第二修改的内容项。
5.如权利要求1所述的方法,包括:
为沙盒媒体环境中的客户端设备上运行的应用建立第二会话;
由客户端设备接收第二内容项,该第二内容项包括对第二脚本的第二引用;
由标记解释器确定与沙盒媒体环境分开的本地高速缓存不具有第二脚本;
响应于确定本地高速缓存不具有第二脚本,由标记解释器从静态内容服务器请求第二脚本;以及
由标记解释器将第二脚本存储在与沙盒媒体环境分开的本地高速缓存中。
6.如权利要求5所述的方法,包括:
由标记解释器使用存储在本地高速缓存中的第二脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项;以及
由标记解释器将第二修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使该应用运行第二修改的内容项。
7.如权利要求5所述的方法,其中第二脚本包括所述脚本的不同版本。
8.如权利要求1所述的方法,包括:
通过用与存储在本地高速缓存中的脚本相对应的内嵌内容替换内容项中的脚本来构造修改的内容项,所述修改的内容项包括超文本标记语言。
9.如权利要求1所述的方法,包括:
为在第二沙盒媒体环境中的客户端设备上运行的第二应用建立第二会话;
由客户端设备接收包括对脚本的引用的第二内容项;
由标记解释器识别与第二沙盒媒体环境分开的本地高速缓存中的脚本;
响应于识别出本地高速缓存中的脚本,由标记解释器使用存储在本地高速缓存中的脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项;以及
由标记解释器将第二修改的内容项转发到第二沙盒媒体环境中的客户端设备上运行的第二应用,以使该应用运行第二修改的内容项。
10.如权利要求1所述的方法,包括:
基于允许存储在客户端设备的本地高速缓存中的脚本的类型的预定列表,确定将内容项的脚本存储在本地高速缓存中。
11.一种用于在沙盒媒体环境中运行内容的系统,包括:
客户端设备,包括网络接口、在沙盒媒体环境中运行应用的处理器和标记解释器、以及存储设备,所述存储设备包括存储至少一个脚本的本地高速缓存;
其中,所述网络接口被配置为:
向动态内容服务器发送对于内容的请求,以供经由沙盒媒体环境中的客户端设备上运行的应用呈现;
响应于该请求,接收包括对脚本的引用的内容项;并且
其中,标记解释器被配置为:
在沙盒媒体环境中运行的应用接收内容项之前对内容项进行拦截;
解析内容项以提取脚本的识别符;
基于脚本的识别符来识别存储在与沙盒媒体环境分开的客户端设备上的本地高速缓存中的脚本;
基于存储在本地高速缓存中的脚本和从动态内容服务器接收的内容项,构造修改的内容项;以及
将修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使应用运行修改的内容项。
12.如权利要求11所述的系统,其中,标记解释器还被配置为:
解析内容项以识别脚本的版本;以及
确定内容项中指示的脚本的版本与存储在本地高速缓存中的脚本的版本匹配。
13.如权利要求11所述的系统,其中,处理器被配置为:
在从动态内容服务器请求内容项之前,为在沙盒媒体环境中运行的应用建立第一会话;以及
在应用运行修改的内容项之后终止第一会话,其中终止第一会话包括清除与沙盒媒体环境相对应的高速缓存。
14.如权利要求13所述的系统,其中,
处理器还被配置为:
为沙盒媒体环境中的客户端设备上运行的应用建立第二会话,该第二会话在第一会话终止之后建立;
响应于第二请求而从动态内容服务器接收包括对脚本的引用的第二内容项;并且
标记解释器还被配置为:
基于本地高速缓存中存储的脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项;以及
将第二修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使该应用在第二会话中运行第二修改的内容项。
15.如权利要求11所述的系统,其中,
处理器还被配置为:
为沙盒媒体环境中的客户端设备上运行的应用建立第二会话;以及
接收第二内容项,该第二内容项包括对第二脚本的第二引用;并且标记解释器还被配置为:
确定与沙盒媒体环境分开的本地高速缓存不具有第二脚本;
响应于对本地高速缓存不具有第二脚本的确定,从静态内容服务器请求第二脚本;以及
将第二脚本存储在与沙盒媒体环境分开的本地高速缓存中。
16.如权利要求15所述的系统,其中,标记解释器还被配置为:
基于存储在本地高速缓存中的第二脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项;以及
将第二修改的内容项转发到沙盒媒体环境中的客户端设备上运行的应用,以使该应用运行第二修改的内容项。
17.如权利要求15所述的系统,其中,第二脚本包括所述脚本的不同版本。
18.如权利要求11所述的系统,其中,标记解释器还被配置为:
通过用与存储在本地高速缓存中的脚本相对应的内嵌内容替换内容项中的脚本来构造修改的内容项,该修改的内容项包括超文本标记语言。
19.如权利要求11所述的系统,其中,
处理器还被配置为:
为在第二沙盒媒体环境中的客户端设备上运行的第二应用建立第二会话;以及
接收包括对脚本的引用的第二内容项;标记解释器还被配置为:
识别与第二沙盒媒体环境分开的本地高速缓存中的脚本;
响应于对本地高速缓存中的脚本的识别,基于存储在本地高速缓存中的脚本和从动态内容服务器接收的第二内容项来构造第二修改的内容项;以及
将第二修改的内容项转发到第二沙盒媒体环境中的客户端设备上运行的第二应用,以使该应用运行第二修改的内容项。
20.如权利要求11所述的系统,其中,标记解释器还被配置为:
基于允许存储在客户端设备的本地高速缓存中的脚本的类型的预定列表,确定将内容项的脚本存储在本地高速缓存中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2017/047972 WO2019040048A1 (en) | 2017-08-22 | 2017-08-22 | REDUCTION OF REMOTE PROCEDURE CALLS IN MULTIMEDIA CONTENT DISTRIBUTION |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110574033A true CN110574033A (zh) | 2019-12-13 |
CN110574033B CN110574033B (zh) | 2023-07-25 |
Family
ID=59829456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780090054.3A Active CN110574033B (zh) | 2017-08-22 | 2017-08-22 | 减少多媒体内容传递的远程过程调用 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11914700B2 (zh) |
EP (1) | EP3602320B1 (zh) |
CN (1) | CN110574033B (zh) |
ES (1) | ES2906326T3 (zh) |
WO (1) | WO2019040048A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11645425B2 (en) | 2019-07-03 | 2023-05-09 | Beyond Semiconductor, d.o.o. | Systems and methods for data-driven secure and safe computing |
US11755720B2 (en) * | 2020-01-31 | 2023-09-12 | Salesforce, Inc. | Secure membranes and cross namespace communication |
US20220391525A1 (en) * | 2021-05-10 | 2022-12-08 | Beyond Semiconductor, d.o.o. | Inter system policy federation in a data-driven secure and safe computing environment |
US12028319B1 (en) * | 2021-07-06 | 2024-07-02 | Bank Of America Corporation | Image-based firewall for synthetic media prevention |
US11816203B2 (en) * | 2021-11-23 | 2023-11-14 | Malwarebytes Inc. | Stack execution detection in a sandbox environment |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060064467A1 (en) * | 2004-09-17 | 2006-03-23 | Libby Michael L | System and method for partial web page caching and cache versioning |
US20130198459A1 (en) * | 2012-01-27 | 2013-08-01 | Fusion-Io, Inc. | Systems and methods for a de-duplication cache |
US9401949B1 (en) * | 2014-11-21 | 2016-07-26 | Instart Logic, Inc. | Client web content cache purge |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7620719B2 (en) * | 2002-06-06 | 2009-11-17 | Juniper Networks, Inc. | Method and system for providing secure access to private networks |
US10880340B2 (en) * | 2008-11-26 | 2020-12-29 | Free Stream Media Corp. | Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device |
US9519772B2 (en) * | 2008-11-26 | 2016-12-13 | Free Stream Media Corp. | Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device |
US9626343B2 (en) | 2010-04-05 | 2017-04-18 | Facebook, Inc. | Caching pagelets of structured documents |
US8601579B2 (en) * | 2011-06-03 | 2013-12-03 | Apple Inc. | System and method for preserving references in sandboxes |
US20130185623A1 (en) * | 2012-01-12 | 2013-07-18 | International Business Machines Corporation | Instructing web clients to ignore scripts in specified portions of web pages |
US9256733B2 (en) * | 2012-04-27 | 2016-02-09 | Microsoft Technology Licensing, Llc | Retrieving content from website through sandbox |
US9734131B1 (en) * | 2012-06-18 | 2017-08-15 | Bromium, Inc. | Synchronizing history data across a virtualized web browser |
US9075877B2 (en) * | 2012-06-29 | 2015-07-07 | Citrix Systems Inc. | System and method for transparent in-network adaptation of rich internet applications |
US9898445B2 (en) * | 2012-08-16 | 2018-02-20 | Qualcomm Incorporated | Resource prefetching via sandboxed execution |
US9363329B1 (en) * | 2013-03-15 | 2016-06-07 | Instart Logic, Inc. | Identifying correlated components of dynamic content |
US9473562B2 (en) * | 2013-09-12 | 2016-10-18 | Apple Inc. | Mediated data exchange for sandboxed applications |
US9898605B2 (en) * | 2015-12-24 | 2018-02-20 | Mcafee, Llc | Monitoring executed script for zero-day attack of malware |
-
2017
- 2017-08-22 EP EP17764697.3A patent/EP3602320B1/en active Active
- 2017-08-22 ES ES17764697T patent/ES2906326T3/es active Active
- 2017-08-22 US US16/605,157 patent/US11914700B2/en active Active
- 2017-08-22 WO PCT/US2017/047972 patent/WO2019040048A1/en unknown
- 2017-08-22 CN CN201780090054.3A patent/CN110574033B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060064467A1 (en) * | 2004-09-17 | 2006-03-23 | Libby Michael L | System and method for partial web page caching and cache versioning |
US20130198459A1 (en) * | 2012-01-27 | 2013-08-01 | Fusion-Io, Inc. | Systems and methods for a de-duplication cache |
US9401949B1 (en) * | 2014-11-21 | 2016-07-26 | Instart Logic, Inc. | Client web content cache purge |
Also Published As
Publication number | Publication date |
---|---|
EP3602320A1 (en) | 2020-02-05 |
EP3602320B1 (en) | 2021-12-29 |
CN110574033B (zh) | 2023-07-25 |
US11914700B2 (en) | 2024-02-27 |
WO2019040048A1 (en) | 2019-02-28 |
ES2906326T3 (es) | 2022-04-18 |
US20210150020A1 (en) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11799984B2 (en) | Installable web applications | |
US20240281233A1 (en) | System and Methods for Integration of an Application Runtime Environment Into a User Computing Environment | |
US10248401B1 (en) | Multiplatform and multichannel distribution of web applications across devices | |
US11765048B2 (en) | Declarative and reactive data layer for component-based user interfaces | |
CN110574033B (zh) | 减少多媒体内容传递的远程过程调用 | |
US11233841B2 (en) | Systems and methods for configuration-based optimization by an intermediary | |
US10102306B2 (en) | Patching base document object model (DOM) with DOM-differentials to generate high fidelity replay of webpage user interactions | |
KR102111080B1 (ko) | 다수의 애플리케이션 버전의 분배 | |
US10650067B2 (en) | Cloud-enabled architecture for on-demand native application crawling | |
US11010215B2 (en) | Recommending applications based on call requests between applications | |
US8126859B2 (en) | Updating a local version of a file based on a rule | |
US11503070B2 (en) | Techniques for classifying a web page based upon functions used to render the web page | |
US20160162596A1 (en) | System and Method for Real-time Search Engine Optimization Issue Detection and Correction | |
US9977814B2 (en) | Custom metadata in loosely coupled triggers | |
US9071570B2 (en) | Method and apparatus to select and deliver portable portlets | |
US11201948B2 (en) | Runtime localized messages for cloud services | |
US20150205767A1 (en) | Link appearance formatting based on target content | |
CN112783580A (zh) | 基于子应用的路由控制方法、装置和计算机设备 | |
Yberg | Native-like performance and user experience with Progressive Web Apps | |
CN117389762A (zh) | 应用程序的接口调用方法、装置、计算机设备和存储介质 | |
RO135285A2 (ro) | Limitarea furnizării şi afişării de componente digitale redundante pe un dispozitiv client | |
CN116932126A (zh) | 一种应用嵌入方法、装置、终端、介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |