相关申请的交叉引用
本申请要求提交于2015年10月15日的美国临时专利申请62/241,779的权益,其公开内容通过引用并入本文。
发明领域
本发明总体涉及通信网络,并且具体地涉及用于在通信终端的内容的新鲜度感知呈现的方法和系统。
发明背景
各种数据服务和应用向移动电话和其他通信终端的用户呈现内容。例如,一些数据服务和应用使用预取方案来减少延迟并增强用户体验。预取的内容通常被缓存在终端的存储器中,并且在被请求时呈现给用户,具有小的延迟。
发明概述
本文描述的本发明的实施例提供了包括将内容项目缓存在连接到通信网络的通信终端的缓存存储器中的方法。在缓存存储器中缓存的内容项目被呈现给通信终端的用户。呈现给用户的缓存的内容项目的新鲜程度被评估。缓存的内容项目的呈现根据评估出的新鲜程度而有条件地修改。
在一些实施例中,缓存内容项目包括通过通信网络预取内容项目。在一些实施例中,不管缓存的内容项目的新鲜程度如何,都会执行对缓存的内容项目的呈现。在实施例中,评估新鲜程度包括确定对于缓存的内容项目的软的非二元新鲜度度量(soft,non-binaryfreshnessmetric)。
在一些实施例中,有条件地修改呈现包括根据评估出的新鲜程度来决定是否代替缓存的内容项目而呈现通过通信网络可获得的内容项目的更新版本。在实施例中,评估新鲜程度包括检测到比缓存的内容项目更加新的更新版本通过通信网络可获得,并且决定是否呈现更新版本包括即使更新的版本可获得,也选择呈现缓存的内容项目。
在另一个实施例中,评估新鲜程度包括评价在缓存的内容项目和更新版本之间的距离度量,并且有条件地修改呈现包括根据距离度量来决定是否呈现更新版本。在又一个实施例中,评估新鲜程度包括评价在缓存的内容项目和更新版本之间的距离度量,并且有条件地修改呈现包括根据距离度量来决定是否通过通信网络获取更新版本。在再一个实施例中,评估新鲜程度包括识别通过网络检索更新版本的成本计量超过预定阈值,并且有条件地修改呈现包括即使更新的版本可获得,也选择呈现缓存的内容项目。
在一些实施例中,有条件地修改呈现包括:当新鲜程度低于第一阈值时,决定仅呈现内容项目的更新版本,并停止呈现缓存的内容项目;当距离度量高于第二阈值时,即使更新的版本可获得,也决定继续呈现缓存的内容项目;以及当距离度量在第一阈值和第二阈值之间时,决定在获取更新的版本的同时呈现缓存的内容项目,并且一旦更新的版本已被获取,就用更新的版本来替换缓存的内容项目。
在公开的实施例中,评估新鲜程度包括将在缓存存储器中缓存的内容项目上计算出的第一签名与通过通信网络可获得的内容项目的版本上计算出的第二签名进行比较。在实施例中,该方法还包括:在预取内容项目之前接收新鲜程度的指示,以及基于指示来设置预取内容项目的优先级。
在一些实施例中,有条件地修改呈现包括忽略其中缓存的内容项目被提供给通信终端的http响应的头部中的与新鲜度相关的字段。在实施例中,当在确保预取模式(guaranteed-prefetchingmode)下操作时执行忽略与新鲜度相关的字段,并且当在尽力而为预取模式(best-effortprefetcingmode)下操作时不执行忽略与新鲜度相关的字段。
在另一个实施例中,评估新鲜程度包括基于针对内容项目报告的到期时间来设置新鲜程度。在又一个实施例中,评估新鲜程度包括基于内容项目的使用年限(age)度量或者版本号来设置新鲜程度。
在一些实施例中,该方法还包括向用户呈现指示所呈现的内容项目的新鲜程度的指示。呈现该指示可以包括:当内容项目被评估为新鲜时呈现第一视觉指示,以及当内容项目被评估为不新鲜时呈现与第一视觉指示不同的第二视觉指示。可选地,呈现该指示可以包括:在内容项目被评估为不新鲜时呈现该指示,并且在内容项目被评估为新鲜时不呈现该指示。在实施例中,评估新鲜程度包括检测当前不可能验证通过通信网络是否有内容项目的更新版本可获得。
根据本发明的实施例,另外提供了包括缓存存储器和处理器的通信终端。处理器被配置成:将内容项目缓存在缓存存储器中,向通信终端的用户呈现在缓存存储器中缓存的内容项目,评估被呈现给用户的缓存的内容项目的新鲜程度,以及根据评估出的新鲜程度来有条件地修改缓存的内容项目的呈现。
根据本发明的实施例,还提供了计算机软件产品,该产品包括其中存储有程序指令的有形非暂态计算机可读介质,该指令在由通信终端中的处理器读取时使一个或更多个处理器将内容项目缓存在通信终端的缓存存储器中,向通信终端的用户呈现在缓存存储器中缓存的内容项目,评估被呈现给用户的缓存的内容项目的新鲜程度,以及根据评估出的新鲜程度来有条件地修改缓存的内容项目的呈现。
根据结合附图进行的本发明的实施例的以下详细描述,本发明将得到更完全地理解,其中:
附图简述
图1是根据本发明的实施例示意性示出用于向通信终端传送内容的系统的框图;
图2是根据本发明的实施例示意性示出用于内容的新鲜度感知呈现的方法的流程图;以及
图3a、图3b和图4是根据本发明的实施例的在通信终端上显示的内容新鲜度指示的示意性图示。
实施例的详细描述
综述
在许多实际的场景中,通信终端存在向其用户呈现过期内容的风险。例如,考虑通过通信网络从内容源预取内容、缓存预取的内容然后将缓存的内容呈现给用户的通信终端。实际上,很可能当缓存的内容呈现给用户时,通过网络有可获得的内容的更加新的(“更新鲜的”)版本。在这种情况下,呈现给用户的内容的版本不是可获得的最新(mostup-to-date)的版本。
每当内容的更新版本变得可获得时,通过主动通知通信终端,有可能部分地克服上述情况。即使如此,更新通知可能并不总是在终端处被正确地接收,和/或可能经过一段时间直到终端实际上拥有更新的版本为止。这些情况再次导致无法呈现内容的最新的版本。
作为再一个示例,某些类型的内容在某段时间之后会变得过时并且不适合呈现,而不管是否有更加新的版本可获得。限时的商业报价、股票报价和天气预报只是这些内容的一些示例。常规的预取和内容传送方案不考虑这些因素,并因此可能呈现过时的内容。
本发明的实施例提供了用于向通信终端的用户呈现内容的改善的方法和系统。所公开的技术在决定是否呈现内容以及如何呈现内容时考虑了内容的新鲜程度。通常,终端呈现内容项目的缓存版本,并且随后仅评估缓存版本的新鲜程度,并且可能用更新鲜的版本替换当前呈现的版本。在本文中描述了内容新鲜度的各种定义,包括软的非二元新鲜度度量以及用于评估内容项目的新鲜度的各种技术。
在一些实施例中,终端故意决定继续呈现内容项目的缓存版本,即使其发现有通过网络可获得的更加新的版本。例如,如果缓存的版本与更新的版本足够相似,则可以保留缓存的版本。描述了可用于这个目的的各种类似标准。作为另一个示例,终端可考虑获取更新版本的成本,例如,依据货币成本、功耗或其他成本计量。
在一些实施例中,终端向用户呈现指示正在呈现的内容的新鲜程度的视觉指示。使用这种技术,用户可以放心,他或她正在被呈现内容的最新的版本,或者至少被通知内容可能是过时的。一些指示例如通过显示创建或获得内容的实际时间或上次验证其新鲜度的时间来量化。
本文还描述了额外的新鲜度感知内容呈现技术。通过以新鲜度感知的方式来呈现内容,所公开的技术大大增强了用户体验。虽然在本文中描述的实施例主要涉及采用预取的系统,但是所公开的技术不限于预取,并且可以用于其中也可以缓存通过网络可获得的内容的任何环境或应用。
系统描述
图1是根据本发明的实施例示意性示出用于向通信终端传送内容的系统20的框图。在本示例中,系统20预取来自一个或更多个内容源24的内容,以供由用户32操作的一个或更多个无线通信终端28使用。例如,此类系统可由内容提供商或由无线服务提供商操作。
在当前背景下,术语“预取”指内容从内容源到无线终端的传送,这是不响应于用户消费该内容的直接请求就执行的。在某些情况下,用户可能触发预取操作。例如,用户可能意识到网络服务即将丢失,并通过请求“同步内容”或“稍后保存”来触发预取。因此,术语“预取”还指在用户需要的时间之前获取内容,并缓存内容以供用户以后访问。
虽然在本文中描述的实施例主要是指无线通信,但是所公开的技术也可用于各种有线网络。在有线网络中,预取的内容同样可能是或也可能不是新鲜的,因此所公开的技术同样适用。
内容源24可以例如包括网站、门户网站、内容分发网络(cdn)、数据中心或任何其他合适类型的数据源。终端28可以例如包括蜂窝电话、智能电话、平板电脑、膝上型电脑、可穿戴设备、移动汽车设备、智能tv或能够向用户呈现内容并具有无线通信能力的任何其他合适的设备。每个终端28包括用于向用户32呈现内容项目的一个或更多个合适的输出设备,例如,用于显示内容项目的屏幕或显示器、用于发出音频内容的扬声器或其他音频输出设备、或任何其他合适的输出设备。为了清楚起见,该图显示了单个终端28。然而,实际的实施方式通常包括大量的终端28。
系统20的各个元件(例如,内容源24和终端28)通过一个或更多个有线的或无线的通信网络相互通信。在本示例中,通过连接到服务于终端28的无线网络40(例如,蜂窝或wi-fi网络)的有线网络36(例如,互联网)来访问内容源24。因此,从内容源到终端的端到端的内容路径通常横贯有线和无线链路两者。在当前背景下,在其上内容从源24传送到终端28的网络或有线的和/或无线的网络的组合被称为“通信网络”或“网络”。
每个终端28包括用作用于连接到网络40的接口的合适的无线电和基带电路(图中未示出)。每个终端28还包括处理器42,除其他任务外,该处理器42运行预取代理44。每个终端28另外包括各自的内容缓存48,用于临时储存内容项目。被缓存在缓存48中的内容项目(例如,网页)能够以小的延迟供给用户32(例如,在浏览器上显示的或在终端中运行的应用(“app”)上显示的),而不会招致来自内容源24的内容检索的延迟。
另外,处理器42运行新鲜度管理模块46。模块46评估各种内容项目的新鲜度,并且基于所评估的新鲜度来控制向用户32呈现内容项目。下面进一步详细讨论模块46的操作。
在图1的示例中,系统20还包括连接到网络36的预取管理系统56。预取管理系统56包括用于连接到网络36的网络接口60、结合终端28中的代理44和模块46执行所公开的技术的处理器68以及存储内容目录的存储器76。
每个预取代理44通常被配置为管理其相应的内容缓存48,拦截在终端28中生成的内容请求,并适当地从缓存或从内容源供给所请求的内容。在一些实施例中,代理44还被配置为跟踪用户32的使用模式,以帮助指定预取策略。例如,代理44可跟踪随着时间变化的用户的内容消费模式、随着时间变化的终端的地理位置、以及在不同时间处的不同通信能力的可用性(例如,wi-fivs蜂窝接入的可用带宽或可用性)。代理44还可跟踪各种可用的通信信道(例如,wi-fi或蜂窝)的特性,诸如拥堵等级、速度、延迟、接收器的信噪比(snr)、接收器的信道质量指示(cqi)和/或任何其他合适的参数。
代理44通常将所收集的信息提供给处理器68。在一些实施例中,代理44可跟踪、记录和报告额外的信息,诸如终端状态(例如,电池状态、可用的存储器或cpu资源、或错误事件)或网络状态(例如,网络速度和负载、或wi-fi连接性的可用性)。所有这些参数都可以被考虑并且用于指定预取策略。
在一些实施例中,预取代理44可以请求并从处理器68接收更新的预取策略。然后,代理44可以基于策略和其他相关因素(例如,电池电平、网络连接质量、已经存在于缓存48中的内容)来决定是否发出预取请求。内容项目可以经由处理器68被预取,或直接从内容源24被预取。
在各种实施例中,指定预取策略可以涉及针对每个内容项目估计用户32将在特定即将到来的时间段内请求对该内容项目的访问的可能性。这些可能性度量可以被发送到代理44,以便帮助代理44优先预取不同的内容项目。对于内容项目将被访问的可能性的估计可以考虑许多因素,诸如与用户相关的因素(例如,性别、位置、兴趣、最近的和历史上的互联网活动)、与环境有关的因素(例如,一天中的时间、交通状况、天气、当前事件、运动场合)和/或与内容相关的因素(例如,内容主题/类别、内容关键字、内容来源的标识、当前流行度/内容的评分)。
除了用户访问某些内容项目的可能性之外,预取策略还可以考虑诸如功耗的因素(例如,优选在wi-fi连接可用时或者在强蜂窝连接可用时预取)、传输成本(例如,优选在一天中较低成本的时间期间预取)、网络拥塞和服务器负载(例如,优选在非高峰业务时间期间预取)和/或任何其它合适的用户或网络相关的考量。
预取策略的规定还可以涉及将一天中的某些时间与预取操作优先级关联起来。这种关联可以针对不同的应用或内容源单独地建立,或者针对多个应用或内容源共同地建立。确定预取优先级的一个因素是估计出的用户在一天中的不同的时间期间访问不同应用或内容的可能性。
使用这种系统配置来预取内容的某些方面在标题为“efficientcontentdeliveryoverwirelessnetworksusingguaranteedprefetchingatselectedtimes-of-day”的美国专利申请公开2016/0021211中得到解决,该专利申请公开被转让给本专利申请的受让人,并且其公开内容通过引用并入本文。
图1中所示出的系统20及其各个元件的配置是示例配置,选定它们仅出于概念清晰的目的。在替代实施例中,能够使用任何其它合适的配置。例如,预取管理系统56的功能能够使用任意所需数量的处理器或甚至以单一处理器来实现。各个系统功能能够以任何合适的方式在处理器间划分开。预取管理系统56可以例如使用私有的或公共的云资源来实现为云应用。
预取代理44可以以各种方式拦截终端28中的内容请求。在一个实施例中,代理44和/或模块46被实现为在终端28中运行的应用、嵌入在终端28中运行的应用中、或者实现为嵌入在应用中的或作为终端操作系统(os)的一部分的软件开发套件(sdk)。在另一实施例中,终端28可运行代理服务器,该代理服务器由代理44控制并暴露于传入和传出的通信量。另外可替代地,所公开的技术能够在终端侧上没有任何预取代理的情况下完全在网络侧上实现。
系统20的不同元件可使用合适的软件、使用合适的硬件(例如,使用一个或更多个专用集成电路(asic)或现场可编程门阵列(fpga))、或使用硬件和软件元素的组合来实现。内容缓存48和内容目录76可使用任何合适的存储器或储存设备来实现。在一些实施例中,使用一个或更多个通用处理器来实现代理44、模块46和/或处理器68,盖一个或更多个通用处理器用软件来编程以执行本文中所描述的功能。可经由网络以电子形式将软件下载到处理器,例如,或者软件可以可选地或附加地被提供和/或存储在非暂时性有形媒介上,诸如磁存储器、光学存储器或电子存储器。内容的新鲜度感知呈现
在一些实施例中,终端28中的新鲜度管理模块46评估在缓存48中缓存的内容项目的新鲜程度,并且根据评估出的新鲜程度来决定是否以及如何呈现内容项目。内容项目可以包括例如网页、图像、文件、视频剪辑、音频剪辑或任何其他合适类型的内容。
通常,当对某个内容项目的请求进行响应时,如果在缓存48中存在内容项目的缓存版本,则不管缓存的版本是否新鲜,预取代理44都呈现该内容项目的缓存版本。新鲜度管理模块46稍后或并行地评估缓存的内容项目的新鲜程度,并且基于评估出的新鲜程度有条件地修改对于内容项目的呈现。
在一些实施例中,与缓存的内容项目相关联的http响应头部可以包括诸如“最大使用年限”、“到期”、“实体标签”(etag)或“最后修改日期”的字段。在一些实施例中,模块46忽略这些头部,并在不管头部字段值如何的情况下就确定新鲜度。例如,缓存的内容项目的http响应头部可以指示它被指定在某个时间间隔之后到期。模块46可以忽略这个规定,并以不同的独立的方式来评估新鲜程度。在其他实施例中,模块46可以将http响应头部视为新鲜度评估的一部分。在一个示例实施例中,当以如上面引用的美国专利申请公开2016/0021211中定义的“确保预取模式”操作时,http头部被忽略。当以“尽力而为预取模式”操作时,http头部被考虑。
在各种实施例中,模块46可以以各种方式评估缓存的内容项目的新鲜程度。在一些实施例中,缓存的内容项目的新鲜程度涉及内容项目的更加新的版本是否通过通信网络(例如,在内容源24中)可获得。在示例实施例中,如果在缓存48中缓存的内容项目的版本是可获得的最新的版本,则模块46将缓存的内容项视为新鲜的。如果内容项目的更加新的版本通过网络可获得,则模块46认为缓存的内容项目是不新鲜的。下面进一步描述其中即使稍微不同的版本可获得也可以认为缓存的内容项目是新鲜的可选实施例。
在一些实施例中,新鲜程度涉及内容项目的实际使用年限,例如,自从内容项目被获得(例如,预取)并且被保存在缓存48中以来所经过的时间、自从内容项目被创建以来所经过的时间或者自从内容项目的新鲜度最近被评估以来所经过的时间。在这个示例中,新鲜程度可以独立于是否有更加新的版本可获得。通常,内容项目越新(例如,自从其创建以来或自从其被预取以来),则内容项目被认为是越新鲜的。
在一些实施例中,缓存的内容项目具有某个版本号,并且模块46根据该版本号来评估新鲜程度。例如,可以使用在内容的http头部中的“实体标签”(etag)或“最后修改日期”值来指定版本号。也可以使用任何其他形式的指定版本号。例如,模块46可以基于在缓存的内容项目与通过网络可获得的内容项目的最新的版本之间的版本号码的差异,将版本号码转化成新鲜程度。如果缓存的内容项目包括指示其创建时间的时间戳,则模块46可以基于创建时间(可能在补偿在终端和创建的内容项目的实体之间的时钟差之后)来评估新鲜程度。
在一些实施例中,模块46接收为内容项目指定的到期时间的列表。该列表可以例如由预取管理系统56或由内容源24提供。超过在列表上定义的相应到期时间的内容项目由模块46视为不新鲜的,反之亦然。
在一些实施例中,该列表为单独的内容项目指定单独的到期时间。在其他实施例中,该列表为内容项目组指定到期时间,例如,针对给定类型的内容项目共同地指定。例如,缓存的图像可以被指定为距最近的预取操作两个小时的到期时间,而html文件可以被指定为距最近的预取操作仅两分钟的到期时间。可以指定任何其他合适的到期时间。
在一些实施例中,模块46预取该到期时间列表,作为每个预取会话的一部分。在其他实施例中,模块46周期性地(例如,每天一次地)获得列表。后者的可能性是有用的,例如,当每组的(例如,每种类型的)内容项目指定了到期时间时。在其他实施例中,可以先验地预先配置到期时间。在示例实施例中,到期时间被预先配置为某个短值。例如,如果内容项目被放置在缓存48中之后被请求少于x秒,则模块46可以将内容项目视为新鲜的,否则是不新鲜的。
在实施例中,可以使用绝对时间来指定列表中的一个或更多个到期时间(例如,内容项目被设定为在指定日期和时间到期)。在该实施例中,在终端28中和在生成列表的实体(例如,处理器68)中的一天中时间的时钟应当至少近似同步。
在实施例中,在列表上的到期时间中的一个或更多个到期时间可以使用相对时间或差异时间来指定(例如,内容项目被设定为在其被预取之后的某个时间段到期,或者至少被设定为对于更新版本的存在进行测试)。后面的实施例消除了对时间同步的需要,但是可能会增加关于预取的内容项目所需要的实际时间的某个时间不确定性。这种不确定性通常很小,但如果需要的话,可以通过模块46进行估计。在一些实施例中,使用在http响应头部中的可选的“expires”和“max_age”字段报告对于内容项目的到期时间。
在一些实施例中,模块46计算内容项目的缓存版本上的签名,并将该签名与通过网络可获得的内容项目的全新(up-to-date)版本的签名进行比较。如果签名相同(即,匹配),则模块46推论出缓存的版本是新鲜的,反之亦然。签名可以包括例如循环冗余校验(crc)值、消息摘要5(md5)散列值、合适的错误检测码或任何其他合适的签名。
在一些实施例中,模块46偶尔(例如,周期性地)从预取管理系统56接收通过网络可获得的全新内容项目的列表以及这些内容项目的相应签名值。然后,签名值可以与对应的缓存的内容项目的签名值进行比较。签名的使用使得模块46能够评估内容项目的新鲜度,而无需通过网络获得实际更新的内容项目。
上述新鲜度度量和准则纯粹是通过示例的方式描绘的。在可选的实施例中,模块46和系统20作为整体可以以任何其他合适的方式并使用任何其他合适的新鲜度度量或标准来定义和评估内容项目的新鲜程度。在一些实施例中,模块46可以针对给定内容项目组合多种类型的新鲜度度量。在一些实施例中,模块46可以针对不同的内容项目(例如,针对不同类型的内容)使用不同的新鲜度度量。例如,对于一些缓存的内容项目,模块46可以通过检查通过网络是否有更新的版本可获得来评估新鲜程度,而对于其他缓存的内容项目,模块46可以基于使用年限来评估新鲜程度。
图2是根据本发明的实施例示意性示出用于内容的新鲜度感知呈现的方法的流程图。该方法开始于在内容请求步骤80处预取代理44接收来自在处理器42上运行的应用的请求以检索内容项目。在缓存检查步骤84处,代理44首先检查在缓存48中所请求的内容项目的版本是否可获得。
如果在缓存48中所请求的内容项目的版本不可获得,则代理44在检索步骤88处通过网络检索内容项目,并且在检索的呈现步骤92处将检索到的内容项目呈现给用户32。
否则(即,如果所请求的内容项目的版本在缓存48中可获得),则代理44在缓存的呈现步骤96处将缓存的内容项目呈现给用户32。另外,新鲜度管理模块46在新鲜度估计步骤100处评估缓存的内容项目的新鲜程度。任何合适的方法(诸如,上述的示例方法)可以用来评估新鲜程度。
在新鲜度检查步骤104处,模块46随后基于步骤100的结果来检查内容项目是否足够新鲜。如上所述,在一些实施例中,新鲜程度是二元的,即,内容项目可被视为新鲜的或不新鲜的。在其它实施例中,新鲜程度较软,并允许对新鲜度进行更定量的评估。下面进一步给出对于新鲜度的软评估的示例和对于将内容项目视作“足够新鲜”的标准。
如果发现内容项目足够新鲜,则不需要动作,并且终端28继续呈现内容项目的缓存版本。如果发现内容项目不够新鲜,则该方法进行到检索步骤88,其中代理44通过网络检索内容项目的更新版本。代理44然后在检索的呈现步骤92处呈现内容项目的检索版本。
以上的方法流程是仅出于概念清晰的目的而被描绘的示例流程。在可替代的实施例中,可以使用任何其它合适的流程。例如,以上的描述给出了在代理44和模块46之间的一个可能的任务划分。在可选的实施例中,可以使用任何其它合适的“劳动力的划分”。一般来说,上述的所有任务可以由在终端28的处理器42上运行的任何合适的模块来执行。
在一些实施例中,模块46在决定是否在验证其新鲜度之前呈现缓存的内容时考虑了内容项目的类型。例如,在较旧的版本已经开始播放之后,通常难以重新开始视频剪辑的更新鲜的版本。作为另一个示例,如果内容项目的缓存版本包括已经开始执行的可执行脚本(例如,java脚本),则在接收到更新的内容项目之后再次执行这些脚本的较新的版本可能是有害的。由于java脚本经常被异步地包括,因此在一个实施例中,模块46可以区分内容项目的同步的和异步的组成部分,并且一旦其所有同步的组成部分都可获得,就呈现该内容项目。在该实施例中,模块46呈现内容项目的缓存版本的同步的组成部分,并且在呈现异步的组成部分之前并行验证内容项目新鲜度。这个解决方案防止了例如java脚本的过早执行。
作为另一示例,在图2的流程中,模块46响应于来自应用的请求(在步骤80处)而评估内容项目的新鲜程度。在可选的实施例中,模块46评估新鲜程度,而不管这种请求。例如,模块46可以偶尔(例如,周期性地)扫描缓存48中的内容项目,评估它们的新鲜度并丢弃(或至少标记为无效的)不足够新鲜的内容项目。当应用启动时,模块46还可以评估由某个应用使用的内容项目的新鲜度。
在实施例中,预取代理44通过使用“if-modified-since”http头部(有条件的http请求,其中服务器仅在内容在请求中所指示的时间开始被修改的情况下返回所请求的内容的更新版本,否则为“未修改”指示)来通过网络检索内容项目的最近版本。在另一个实施例中,预取代理44通过使用在http头部中的具有etag值的“if-none-match”来通过网络检索内容项目的更加新的版本。这些实施方式快速而高效,但需要在服务器(例如,内容源)侧得到支持。
在一些实施例中,模块46计算在内容项目的缓存版本(在缓存48中本地可获得)和内容项目的全新版本(通过网络可获得)之间的某个软距离度量。这个新鲜度度量由模块46用来决定缓存的版本是否足够新鲜。例如,模块46可以将距离度量与预定义的阈值进行比较。如果距离度量下降到阈值以下,则模块46继续呈现缓存的版本。如果距离度量高于阈值,则模块46避免呈现缓存的版本,或者如果已经呈现则停止呈现缓存的版本。以下在下一个的章节中进一步提出软的新鲜度度量的各种示例。这些度量中的任何度量或任何其他合适的度量都可以用于此目的。
如上所述,在一些实施例中,模块46通过网络从预取管理系统56接收可获得的全新内容项目的列表。该列表通常是用户特定的。在一些实施例中,由预取管理系统56提供的列表针对每个内容项目来指定通过网络可获得的全新版本与终端已经具有的缓存的版本之间的距离度量。在这些实施例中,模块46可以使用在列表中所报告的距离度量,以决定是否预取内容项目。在一些实施例中,内容项目的新鲜度距离度量可以与相应的访问可能性度量(指示用户访问该内容项目的可能性有多大)一起在列表中被报告。在一些实施例中,预取管理系统将两个度量(新鲜度距离度量和访问可能性度量)组合成复合预取优先级度量。该复合度量被记录在目录76中,并作为可获得的内容项目列表的一部分被报告给终端。
在一些实施例中,可以在差异预取更新的情况下使用新鲜度距离度量,以指示对应的差异更新的相对重要性。该度量可以被记录在目录76中,并且用于确定是否预取差异更新。
非新鲜内容的故意呈现
在一些实施例中,即便模块46感知到内容项目的更加新的版本通过网络可获得,但新鲜度管理模块46还是呈现内容项目的缓存版本(或允许代理44呈现内容项目的缓存版本)。
例如,在一些实施例中,模块46计算在内容项目的缓存版本(在缓存48中本地可获得)与内容项目的全新版本(通过网络可获得)之间的某个距离度量。如果距离度量小于预定义的阈值,则模块46决定呈现缓存的版本,而不是全新的版本。这个决定可以用于例如执行图2的方法的新鲜度检查步骤104。在实施例中,模块46使用预定义的一组规则来决定距离度量是否足够小到证明呈现缓存的版本是合理的。
模块46可以使用任何合适的距离度量和任何合适的阈值来做出上述决定。不同的距离度量和/或不同的阈值可以适用于不同类型的内容项目。例如,模块46可以在下列情况下决定呈现缓存的版本,而不是检索并呈现全新版本:
■对于应用的订阅源,在两个版本中参考的文章的描述是相同的,并且在缓存的订阅源版本中的每个标题与全新版本中的对应标题相差不到预定义的字符数。
■对于应用的订阅源,在两个版本中参考的文章的标题是相同的,并且在缓存的订阅源版本中的每个文章说明与全新订阅源版本中对应的文章说明相差不到预定义的字符数。
■文章说明和标题是相同的,但在缓存的订阅源版本和全新的订阅源版本中以不同的顺序显示。
■在应用的订阅源中参考的前k个文章在标题和说明方面是相同的(但后续文章中可能存在重大差异)。k是预定义的整数。可以将k选择为例如在用户滚动或以其他方式请求查看后续文章之前,跨过用户一开始可见的文章。
■在缓存的版本和全新版本之间的时间戳差异(或其他使用年限度量)小于预定义的持续时间(例如,300秒)。
■对于图像内容项目,缓存版本与全新版本相差小于预定义数量的像素。
在一些实施例中,模块46可以使用理解文本含义的算法来比较缓存的版本的文本和全新版本的文本,而不是执行字符级甚至字级或短语级的比较。在一些情况下,文本中的细微差别意味着意义上的重大差别(例如,当通过将单个字“不”添加到文本中而否定整体意思时)。
作为另一示例,如果缓存的版本仅在绝对亮度、绝对对比度或应用于作为整体的图像而非应用于其细节的其他绝对度量方面与全新版本不同,则模块46可以决定呈现图像的缓存版本。换句话说,当将图像的缓存的版本和全新版本进行比较时,模块46可以在比较之前去除诸如颜色偏差之类的效果并且将两个版本的动态范围归一化。作为另一个示例,如果两个版本在大小、分辨率或颜色直方图方面不同,但在本质上显示了相同的信息,则模块46可以决定呈现缓存的版本。在一个示例中,如果模块46的颜色直方图与全新版本的颜色直方图相差小于预定的差值,则模块46决定呈现缓存的版本。
对于视频内容项目,可以将上述距离度量中的任意距离度量用来比较在缓存的版本和全新版本中的对应帧。另外地或可选地,如果两个版本具有足够相似的运动预测向量或足够类似的mpeg锚帧,则模块46可以决定呈现缓存的版本。作为另一个示例,如果两个版本在预定数量的最强dct系数方面是相同的,则模块46可以决定呈现缓存的版本。可以在所有帧上执行对于支配的dct系数的比较,或者仅在诸如锚帧的选定帧上执行对于支配的dct系数的比较。
至于静止图像,如果缓存的版本和全新版本本质上相同但是在视频质量(例如,分辨率)方面相差小于预定义的阈值,则模块46可以决定呈现视频内容项目的缓存版本。
在一些实施例中,模块46使用多个新鲜度阈值。如果新鲜程度大于表示为t1的上限阈值,则模块46呈现缓存版本并且即使可获得较新的版本也不替换它。如果新鲜程度低于表示为t2的较低阈值(例如,基于目录76),则模块46根本不呈现缓存的版本(或者,如果缓存的版本已经呈现,则停止呈现它),并且获取和呈现全新版本。如果新鲜程度落在t1与t2之间,则模块46继续提取全新版本,但是同时保持呈现缓存的版本。
在各种实施例中,模块46可以使用本文描述的新鲜度距离度量中的任何新鲜度距离度量和/或本文描述的新鲜程度中的任何新鲜程度,以用于(i)决定是否呈现缓存版本,(ii)决定在获得全新版本的同时是否呈现缓存版本,或以上两者。在本文描述的新鲜度距离度量和/或新鲜程度中的任一项可以由系统56记录在目录中并且被报告给终端28。在一些实施例中,目录记录了全新版本的特性(例如,颜色直方图),并且模块46将目录中的特性与缓存的版本的对应特性(例如,颜色直方图)进行比较。
在一些实施例中,如果距离度量过高(例如,高于预定义的阈值),则模块46根本不呈现缓存的版本。否则,模块46呈现缓存的版本,并且在呈现缓存的版本的同时通过网络检查最新版本。
在一些实施例中,内容提供商或系统56提供最新版本的度量或特性,并且模块46通过网络访问新鲜度度量或特性。在其他实施例中,模块46或代理44通过网络将最新版本下载到终端,然后模块46计算并且验证新鲜度度量。如果在新鲜度方面的差异足够小(例如,低于某个阈值),则代理46避免用更加新的内容替换当前呈现的内容。如果差异较大,则模块46用更加新的内容替换当前呈现的内容。
另外地或可选地,如果估计通过网络检索全新版本的成本高于某个预定义的成本阈值,则模块46可以决定呈现缓存的版本而不是全新版本。在这种背景下的成本可以涉及用户32的货币成本、来自终端28的电池的能耗或者任何其他合适的成本计量。
给用户的视觉新鲜度指示
在一些实施例中,终端28中的新鲜度管理模块46向用户32呈现指示正在呈现的内容的新鲜程度的视觉指示。视觉指示对于例如警告用户所显示内容的版本不是(或不一定是)最新的版本或者对于使用户确信所显示的版本是全新的版本来说是有用的。
当模块46如上所述地故意决定不呈现内容的最新版本时,这种视觉指示尤其重要。然而,模块46还可以在呈现内容的最新版本时呈现视觉新鲜度指示。
模块46可以显示任何合适类型的视觉指示。一些示例指示仅在内容项目被认为不新鲜时才呈现,并且在内容项目被认为新鲜时被省略。一些示例指示是二元的(即,新鲜的vs不新鲜的)。其他可能的指示例如通过显示内容项目的使用年限(例如,自从内容项目被创建以来经过的时间、自从内容项目被预取以来的时间、或者自从内容项目新鲜度被最后验证以来的时间)而量化了新鲜程度。
图3a和图3b是根据本发明的实施例的由模块46在终端28的显示器上显示的内容新鲜度指示的示意性图示。在该示例中,内容项目110在给定的时间点处正被显示给用户。
图3a显示了当模块46认为内容项目不新鲜时显示的视觉指示。在这种情况下,模块46显示了指示内容项目的新鲜程度的时间戳114。如以上所解释的,时间戳可以指示例如内容项目被创建时的时间、内容项目通过网络被检索(例如,预取)时的时间、或者内容项目的新鲜度最近被验证时的时间。可选地,可以显示任何其他合适的使用年限度量而不是时间戳。
图3b显示了当模块46认为内容项目新鲜时显示的视觉指示。在这种情况下,模块46显示图标,在本示例中是绿色核对标记。在可选的实施例中,当内容项目被视为新鲜时,模块46可以不显示任何新鲜度指示。
图4是根据本发明的另一实施例的由模块46在终端28的显示器上显示的内容新鲜度指示的示意性图示。在该实施例中,在给定的时间点处显示图像内容项目122。当内容被认为不新鲜时,模块46显示作为在图像122的背景中的水印的时间戳126。在一些实施例中,当同时显示多个图像时,模块46可以仅针对最旧的(最不新鲜的)图像显示水印时间戳(或其他新鲜度指示)。可选地,模块46可以针对被认为不新鲜的每个图像显示相应的水印时间戳(或其他新鲜度指示)。
以上所述的新鲜度指示纯粹是通过示例的方式来描绘的。在可选的实施例中,模块46可以呈现指示正在呈现的内容的新鲜程度的任何其他合适类型的指示。
无法验证的新鲜度场景
在一些实际的场景中,模块46有时可能不能验证内容项目的缓存版本是否新鲜或者通常评估缓存的内容项目的新鲜程度。例如,当终端28暂时失去与网络的通信时(例如,在用户32移出网络的覆盖区域之后或出于任何其它原因),可能出现这种场景。
模块46可以应用各种类型的逻辑来决定是否以及如何呈现其新鲜度无法验证的缓存的内容项目。在一个实施例中,模块46可能决定即便如此也要呈现缓存的版本。在实施例中,在这种情况下,模块46将缓存的版本与合适的视觉指示一起呈现。视觉指示可以指示内容项目不比获得(例如,预取)它的时间更新鲜,或者不比其时间戳更新鲜。
另外地或可选地,模块46可以显示网络连接当前不可用的指示,以帮助向用户32传达所显示的内容不一定是全新的。在实施例中,模块46可以决定内容项目太旧,并且避免呈现它。这个决定可能伴随着网络连接当前不可用的指示。
虽然本文中所描述的实施例主要讨论内容预取,但本文中所描述的方法和系统也可用于其中内容项目的缓存版本可能具有不同新鲜程度的其他应用。例如,内容项目可能被实时提取并呈现给用户,但是随后在用户再次请求内容的情况下被保留在缓存中。作为另一个示例,文档可以通过网络由多个用户协同修改。当一个用户打开文档进行查看或编辑时,终端通常会呈现本地缓存的最近的版本,并且并行地通过网络获取最新版本。作为又一个示例,在在线游戏中,多个用户可以一起玩在线游戏。当一个用户访问游戏时,终端可以其在本地缓存时最初呈现游戏的最近的状态。并行地,终端通常会通过网络检查更加新的版本。因此,所公开的技术决不限于预取,并且可以在涉及数据新鲜度的任何应用中以类似的方式使用。
因此,将认识到的是,以上描述的实施例是通过示例引用的,并且本发明并不限于上文已具体示出和描述的内容。相反,本发明的范围包括上文所描述的各种特征的组合及子组合以及本发明的变型和修改,该变型和修改将在本领域的技术人员阅读上述描述之后想到且在现有技术中未被公开。通过引用并入本专利申请中的文件被视为本申请的组成部分,除了任何术语在这些并入的文件中在某种程度上以与本说明书中明确地或隐含地作出的定义冲突的方式被定义之外,应该仅考虑本说明书中的定义。