提高在嵌入式系统上检索数据的速度的方法和嵌入式系统 技术领域 本申请涉及用于提高由客户端在嵌入式系统上检索数据的速度的计算机实现的 方法、 计算机程序产品和嵌入式系统。
发明内容 根据一个方面, 提供了用于提高由客户端在嵌入式系统上检索数据的速度的计算 机实现的方法。该嵌入式系统可以包括存储组件。该方法可以包括在嵌入式系统上执行客 户端。该方法还可以包括在嵌入式系统上执行媒介物 (intermediary), 其中分别执行客户 端和媒介物, 并且其中媒介物管理存储组件。该方法还可以包括从媒介物处的客户端接收 针对文档的第一内容元素的请求。此外, 该方法可以包括由媒介物确定第一内容元素是否 存储在存储组件中。当第一内容元素存储在存储组件中时, 该方法还可以包括从存储组件 检索第一内容元素, 并且从媒介物向客户端发送该第一内容元素。
在某些情况下, 当第一内容元素没有存储在存储组件中时, 该方法还包括从服务 器检索第一内容元素, 并且由媒介物基于存储规则确定是否将第一内容元素存储在存储组 件中。
此外, 存储规则可以包括以下中的至少一个 : 期满、 统一资源定位符的字符串以及 内容类型。
另外, 该嵌入式系统可以包括非易失性存储器。固件可以以二值映像存储在非易 失性存储器中。
此外, 存储组件可以与固件分开进行存储。
在某些实施方式中, 在嵌入式系统上执行客户端还可以包括从非易失性存储器向 易失性存储器复制固件。向易失性存储器复制固件可 以包括将非易失性存储器的全部内 容复制到易失性存储器中。
此外, 客户端和媒介物可以作为单独的进程来执行。
此外, 该文档可以包括第二内容元素。第一内容元素可能很少被修改。此外, 第二 内容元素可能频繁被修改。 因此, 该方法还可以包括将第一内容元素存储在存储组件中。 另 外, 该方法还可以包括确定不在存储组件中存储第二内容元素。
在某些情况下, 该嵌入式系统是机顶盒。 另外, 该服务器可以包括用于递送因特网 协议电视的软件。该软件可以被称为 IPTV 中间件。
该客户端可以包括 web 浏览器。
此外, 可以将媒介物实现为客户端的外部组件。 更具体地, 可以将媒介物实现为客 户端的插件。
根据另一方面, 提供了包括计算机可读指令的计算机程序产品。该计算机可读执 行当被加载到嵌入式系统上并在其上执行时, 使得该系统执行根据上述方法的操作。
根据又一方面, 提供了嵌入式系统。该嵌入式系统可以包括客户端。该嵌入式系 统还可以包括可操作用于存储数据的存储组件。该嵌入式系统还可以包括媒介物。该媒介
物可以操作用于管理存储组件。 该媒介物还可以操作用于从客户端接收针对文档的第一内 容元素的请求。该媒介物还可以操作用于确定第一内容元素是否在存储组件中。当第一内 容元素在存储组件中时, 该媒介物还可以操作用于从存储组件检索第一内容元素, 并且向 客户端发送第一内容元素。客户端和媒介物可以操作用于单独执行。
技术性定义
“嵌入式系统” 可以被理解为设计用于执行一个或若干专用功能的计算机系统或 设备。嵌入式系统可以与通用计算机系统 ( 例如台式 PC) 形成对比。
“机顶盒” (STB) 也被称为数据盒、 机顶单元或集成接收器 / 解码器 (IRD), 这是嵌 入式系统的示例。 STB 可以操作用于连接至 显示设备 ( 例如电视或者计算机 ) 以及外部信 号源 ( 例如内容服务器 )。STB 可以操作用于将从外部信号源接收的信号转换成继而在显 示设备上显示的内容。
“集成电路” ( 也被称为微电路、 微芯片或者芯片 ) 可以指代已经在半导体材料的 薄衬底的表面中制造的小型电子电路。
“数字信号处理器” (DSP) 可以被理解为被优化用于特定操作 ( 可能包括信号处理 ( 转换 )) 的专用微处理器。与通用微处理器相比, DSP 可以具有减少的硬件复杂性、 减少的 功能性、 更低的成本、 更好的性能以及减少的功耗。
“片上系统” (SoC) 可以指代在单个集成电路上对计算机系统的存储组件的集成。 可能需要额外的存储器和 / 或外围设备, 以供 SoC 实现完整的功能性。SoC 可以包括 DSP。
“数字媒体处理器” (DMP), 也被称为媒体处理器, 可以被理解为被设计用于实时 ( 或者接近实时 ) 处理数据流 ( 例如, 诸如视频或者音频之类的媒体 ) 的 SoC。DMP 可以包 括以下中的一个或多个 : DSP、 存储器接口、 媒体接口和音频 / 视频加速器。DMP 可以能够对 各种类型的媒体 ( 例如图像 ) 和媒体流进行解码、 转码 ( 从一种格式转换成另一种格式 )、 编码以及码率转换 (transrate, 从较高比特率缩放到较低比特率 )。
“字符串” 可以被理解为字符的有限序列, 其中每个字符是诸如符号之类的信息单 元。 “文本” 可以包括一个或多个字符串。
“高速缓存” 可以指代存储数据从而使得针对该数据的未来请求可以被更快服务 的存储组件。
“移动代码” 可以指代在系统之间传送的软件, 该软件可能在本地系统上执行而无 需针对安装显式触发, 或者由接收者执行。移动代码的示例包括 JavaScript、 VBScript、 Java 小应用程序以及 ActiveX 控件。
“因特网协议电视” (IPTV) 可以被理解为一种系统, 通过该系统数字电视服务使用 分组交换网络基础设施上的因特网协议 (IP) 套 件的架构和网络方法来进行递送。 IPTV 可 以使用 STB 来进行递送。
“代理” 可以指代充当针对来自寻求资源 ( 例如文件或网页 ) 的客户端的请求的媒 介物的软件。
“静态” 内容元素 ( 也被称为静态内容 ) 可以指代很少被修改的内容元素。例如, 静态内容元素可以被少于每月一次地、 少于每两个月一次地、 少于每年一次地乃至更不频 繁地被修改。
“动态” 内容元素 ( 也被称为动态内容 ) 可以指代被频繁修改的内容元素。例如,动态内容元素可以被多于每月一次地、 多于每月两次地、 多于每周一次地乃至更频繁地被 修改。一般而言, 动态内容元素比静态内容元素被更频繁地修改。可以使用服务器逻辑生 成动态内容元素。 可以用于生成动态内容元素的服务器逻辑的示例是公共网关接口 (CGI)、 PHP : 超文本预处理器 (PHP)、 Java 服务器页面 (JSP) 以及活动服务器页面 (ASP)。
“进程” 可以被理解为执行程序的实例。进程可以包括程序计数器 ( 包含将被提取 的下一指令的存储器地址 ) 的当前值、 寄存器值以及变量。进程可以管理一组资源并且具 有其自己的地址空间, 以及信号句柄和记账信息。
“线程” 也被称为控制线程、 执行线程、 迷你 (mini) 进程或者轻量进程。多个线程 可以存在于一个进程内。线程可以与其他线程共享地址空间以及进程的其他资源。每个线 程通常具有其自己的程序计数器、 寄存器值、 堆栈 ( 包括输入参数、 本地变量和临时变量 ) 以及状态。
“纤程 (fiber)” 可以通过分配用于存储与该纤程相关联的数据和寄存器值的数据 结构和堆栈而创建。纤程可以被理解为与线程类似。在线程之间切换可能要求进入和退出 操作系统 (OS) 内核。然而, 纤程可以被协同调度, 并且操作系统内核不了解纤程。
“插件” 可以被理解为用于实现特定功能或用于提高现存功能的性能的模块或者 应用。这可以通过用诸如 C 之类的低级程序设计语言 ( 即, 相对接近机器级 ) 来实现插件 而完成。 可以通过参照 Andrew S.Tanenbaum 的 Operating Systems 第 3 版, 2009 来进一步 理解进程、 线程和纤程。
附图说明 图 1 示出了嵌入式系统的框图。
图 2 示出了嵌入式系统和服务器的示图。
图 3 示出了用户接口的框图。
图 4 示出了用于提高由客户端在嵌入式系统上检索数据的速度的示例性方法的 流程图。
具体实施方式
在下文, 将参照附图给出对示例的详细描述。应当理解, 可以对示例进行各种修 改。具体地, 一个示例的元件可以被组合并且在其他示例中使用以形成新的示例。
在本说明书中描述的主题可以被实现为方法或在设备上实现, 可能采取一个或多 个计算机程序产品的形式。 在本说明书中描述的主题可以在数据信号中或者在机器可读的 介质上实现, 其中该介质体现在一个或多个信息载体中, 诸如半导体存储器或者硬盘。 此类 计算机程序产品可以使数据处理装置执行在说明书中描述的一个或多个操作。
此外, 在本说明书中描述的主题还可以被实现为系统, 该系统包括处理器以及耦 合到处理器的存储器。该存储器可以对一个或多个程序编码, 以使得该处理器执行在说明 书中描述的一个或多个方法。在本说明书中描述的其他主题可以使用各种机器实现。
在以下示例性附图和描述中阐明了一个或多个实现的细节。通过描述、 附图以及 通过权利要求书, 其他特征将会变得易于理解。图 1 示出了包括芯片集 102 的嵌入式系统 100 的框图。在具体示例中, 芯片集 102 可以是 SoC, 诸如包括音频 / 视频硬件加速器的 32 位 MIPS 4KeC。 在另一示例中, 芯片集 102 可以是 DMP, 诸如包括高级 RISC 架构机 (ARM)ARM926EJ-S CPU(RISC 指代精简指令集 计算 机 ) 的德克萨斯仪器 TMS320DM6446。芯片集 102 可以是微处理器或者微控制器。还有可能 是其他实现。
嵌入式系统 100 的某些实施方式包括第一非易失性存储器, 诸如闪存 104。备选 地, 嵌入式系统 100 可以包括另一种形式的非易失性存储器。嵌入式系统 100 的第一非易 失性存储器可以是电子可寻址的。在某些情况下, 嵌入式系统 100 的第一非易失性存储器 可以是另一种形式的固态存储器, 诸如硅 - 氧化物 - 氮化物 - 氧化物 - 硅 (SONOS) 存储器 或者非易失性随机存取存储器。还有可能是其他类型的非易失性存储器。
闪存 104 可以固定到嵌入式系统 100。具体地, 闪存 104 可以被构建到芯片中, 并 且该芯片可以被有线连接到嵌入式系统 100。闪存 104 的内容可以被称为固件。
在某些情况下, 由闪存 104 存储的固件可以包括用于嵌入式系统 100 的操作系统, 例如具有内核版本 2.6 的 Linux。固件还可以包括客户端 ( 例如, 如图 2 中所描绘的 ) 以 及即使在客户端未连接到服务器 ( 例如, 如图 2 中所描绘的 ) 时也可以用来构建用户接口 ( 参见图 3) 的基本用户接口组件。 根据一个示例, 嵌入式系统 100 可以包括第二非易失性存储器 ( 未示出 )。 第二非 易失性存储器可以被实现为硬盘驱动器, 例如通用串行总线 (USB) 硬盘驱动器。
嵌入式系统 100 可以包括最低限度的硬件, 例如为了执行基本联网任务而需要的 硬件而没有其他硬件, 以便降低成本。因此, 嵌入式系统 100 上的程序, 例如图 2 中描绘的 客户端和代理, 可以出于性能原因而采用诸如 C 之类的低级程序设计语言来实现。在该上 下文中, “低级” 可以被理解为指代需要更多基础硬件知识, 并且 ( 通常 ) 比更高级的程序设 计语言 ( 例如 Java) 需要更多的编码时间的程序设计语言。此外, 可能难于从在嵌入式系 统 100 上的特定程序中的错误中恢复。例如, 由于 RAM 106 的有限容量, 内存泄漏可能对嵌 入式系统 100 具有特别严重的影响。因此, 对在嵌入式系统 100 上部署的程 序进行充分调 试和测试可能是必要的。因此, 可能难于针对嵌入式系统 100 开发可以相对容易地在通用 计算机上开发的程序。
嵌入式系统 100 可以被实现为 STB 或者实现为移动设备。 例如, 可以在具有 Linux OS 或者 Android OS 的移动计算机或者智能手机上实现嵌入式系统 100。具体而言, 嵌入式 系统 100 可以被实现为 Nokia N900、 OpenMoko Neo Free Runner、 HTC Hero 或者 Motorola Droid。还有可能是其他实现。
此外, 闪存 104 的内容 ( 例如操作系统和应用 ) 可以按照单片方式 ( 即, 作为单个 封闭块 ) 存储在嵌入式系统 100 上。例如, 闪存 104 的内容可以被存储为二值映像或者存 储为压缩的二值映像。换言之, 闪存 104 可以包含二值固件映像或者压缩的二值固件映像。 这可以减小在嵌入式系统 100 上需要的闪存量, 并且因而减小生产嵌入式系统 100 的成本。
此外, 在嵌入式系统 100 上使用二值映像可以有利于嵌入式系统 100 的制造者或 者维护者。例如, 使用二值映像可以使用户更简单地更新嵌入式系统 100。
二值固件映像可以包含代表存储介质 ( 例如闪存 104) 的完整的内容和结构。二 值映像可以被存储在单个文件中。根据传统技术, 固件的内容可以包括静态内容元素。固
件中静态内容元素的存储可以简单和容易地实现。此外, 该技术可以允许对静态内容元素 进行更新和操作而不需要请求软件组件 ( 例如图 2 中描绘的代理 ) 来管理静态内容元素。
静态内容元素的示例包括嵌入式系统 100 的本地 GUI 的元素。换言之, 静态内容 元素可能不与特定应用相关联。
然而, 将静态内容元素存储在闪存 104 中作为二值固件映像的一部分可能具有以 下效果 : 更新静态内容元素的唯一方式是执行完整的固件升级。
可能难于或者不期望执行完整的固件升级以便替换存储在嵌入式系统 100 的固 件中的内容元素, 例如静态内容元素。完整的固件升 级可能导致使用更多的带宽、 潜在的 错误可能具有更严重的后果, 并且完整的固件升级可能干扰嵌入式系统 100 的操作。例如, 下载完整的固件以便更新一个或多个静态内容元素可能要求比仅仅下载待更新的静态内 容元素更多的带宽。此外, 完整的固件更新可能会失败, 从而导致嵌入式系统 100 变得不可 用。另外, 完整的固件更新经常引起嵌入式系统 100 的操作的中断, 这是由于通常需要对嵌 入式系统 100 进行重新引导。
嵌入式系统 100 还可以包括易失性存储器, 诸如随机存取存储器 (RAM)106。 此外, 嵌入式系统 100 可以包括地面数字视频广播 (DVB-T) 接口 108。 另外, 嵌入式系统 100 可以包括接口, 诸如 USB 端口 110。USB 端口 110 可以操作 用于将 USB 设备连接到嵌入式系统 100。
嵌入式系统 100 还可以包括可连接到外部网络 ( 诸如以太网端口 112) 的访问装 置。嵌入式系统 100 还可以支持无线访问, 例如通过无线保真 (WiFi) 装置。外部网络可以 提供对外部信号源的访问。
此外, 嵌入式系统 100 可以包括重置按钮 114, 其可以被用于将嵌入式系统 100 返 回到标准或者默认配置。 嵌入式系统 100 还可以包括电源连接器 116, 其可以用于将嵌入式 系统 100 连接到电源。
图 2 示出了与某些实施方式一致的嵌入式系统 100 的第二框图。第二框图还示出 了服务器 202。
服务器 202 可以能够向客户端 204 发送信号, 诸如 IPTV 信号。服务器 202 可以包 括 IPTV 中间件, 即, 与递送 IPTV 服务相关联的软件包。
可以在嵌入式系统 100 上执行客户端 204。客户端 204 可以被实现为 web 浏览器 ( 例如, Microsoft Internet Explorer、 Mozilla Firefox、 Opera、 Fresco)、 定制图形用户 接口或者某些其他形式的用户接口。客户端 204 可以存储在闪存 104 的固件中。客户端 204 可以能够显示文档, 例如网页。文档可以由内容元素组成。内容元素的示例是各种格 式 ( 例如, 联合图像专家组 (JPG)、 图形交换格式 (GIF)、 便携 式网络图形 (PNG)) 的图像, 以及标记语言文本, 例如, 超文本标记语言 (HTML)、 可扩展标记语言 (XML)。内容元素还可 以包括表现语义, 诸如层叠样式表 (CSS), 以及移动代码, 例如 JavaScript。
客户端 204 可以操作用于根据表现语义显示图像和标记语言文本。客户端 204 还 可以能够执行移动代码。
此外, 客户端 204 可以被配置用于运行各种应用。例如, 客户端 204 可以被配置用 于执行视频点播目录, 其使用户能够浏览视频的种类、 选择用于观看的视频以及检索关于 视频的信息。客户端 204 还可以执行电子节目指南。电子节目指南使用户能够浏览电视
频道、 查看每个频道的节目表以及检索关于 TV 节目的信息 ( 例如, 开始时间、 结束时间、 描 述 )。
在某些情况下, 为了使成本最小化而用有限的资源来制造嵌入式系统 100。例如, 嵌入式系统 100 可以包括 300MHz CPU、 128MBRAM 以及 32MB 闪存。此外, 使用现代软件以在 嵌入式系统上提供用户接口可能不是切实可行。因此, 可以使用 4 至 10 年前的并且不包括 某些功能的 web 浏览器实现嵌入式系统的客户端 204。 例如, 嵌入式系统的客户端 204 可能 不支持 Java 小应用程序或者 ActiveX 控件。
此外, 可以在嵌入式系统 100 上执行媒介物。媒介物可以被实现为代理 206。代理 206 可以与客户端 204 分开执行。将代理 206 实现为外部组件可能具有的优点在于并不必 须将代理 206 集成到客户端 204。
在某些实施方式中, 代理 206 可以被实现为客户端 204 的外部组件。例如, 客户端 204 可以被实现为浏览器, 而代理 206 可以被实现为浏览器插件。在这种情况下, 代理 206 在客户端 204 的存储器空间内操作。因此, 代理 206 可以使用函数调用而不是 HTTP 来与客 户端 204 通信。使用函数调用的通信可以具有改进性能的效果。
备选地, 客户端 204 和代理 206 作为单独的进程来执行。在该上下文中, 进程可以 被理解为执行程序的实例。例如, 客户端 204 是第 一执行程序, 而代理 206 是第二执行程 序。客户端 204 和代理 206 还可以被执行为迷你进程, 例如线程或者纤程。
因此, 同客户端 204 分开执行媒介物可以通过将代理 206 实现为客户端 204 的外 部组件来实现, 或者通过将代理 206 实现为单独的进程来实现。还有可能是其他实现。
代理 206 可以包括管理组件。管理组件可以能够管理存储组件。在某些情况下, 管理组件被实现为高速缓存管理器 208。存储组件可以被实现为高速缓存 209。由于嵌入 式系统 100 的有限资源, 高速缓存 209 的大小可能是受限的。客户端 204 可以与代理 206 交互, 以便访问高速缓存 209 中的数据。虽然高速缓存 209 被描绘为与代理 206 分离, 但是 可以包括高速缓存 209 作为代理 206 的一部分。
代理 206 还可以包括接口, 诸如超文本传输协议 (HTTP) 接口 210。客户端 204 可 以使用 HTTP 接口 210 与代理 206 通信。向嵌入式系统 100 添加代理 206 可以具有增强嵌 入式系统 100 的性能的效果。例如, 嵌入式系统 100 和服务器 202 之间的带宽需求可以被 减小。
代理 206 可以使用信令机制以便管理和生成事件。事件可以由其他应用使用。例 如, 代理 206 可以在达到预置最大高速缓存大小时 ( 即, 当已经达到文件系统使用限度时 ) 生成事件。 代理 206 还可以在 CPU 利用达到预置阈值时 ( 例如, 由于执行操作 ) 生成事件。
嵌入式系统 100 还可以包括 HTTP 内核应用程序设计接口 (API)212。客户端 204 和代理 206 可以使用 HTTP 内核 API 212 与服务器 202 通信。例如, 客户端 204 可以与服务 器 202 通信以便选择 IPTV 节目进行观看。
在某些情况下, 客户端 204 可以与代理 206 通信, 而代理 206 使用 HTTP 内核 API 212 与服务器通信。在其他情况下, 客户端 204 可以与 HTTP 内核 API 212 交互以便直接与 服务器通信。
图 3 示出了与本发明的某些实施方式一致的用户接口 300 的框图。
客户端 204 可以能够显示用户接口 300。用户接口 300 可以包括 静态图像 302,例如按照 JPG 格式的背景图像。另外, 用户接口 300 可以包括按照表现语义形式的静态布 局 304。 具体地, 静态布局 304 可以确定用户接口 300 中的静态和动态内容元素的风格和位 置。
此外, 用户接口 300 可以包括移动代码 306。例如, 移动代码 306 可以体现在从服 务器 202 下载到客户端 204 的文档中, 并且可以由客户端 204 执行。
静态图像 302、 静态布局 304 以及移动代码 306 可以被理解为很少被修改的静态内 容元素。根据传统技术, 静态内容元素可以与客户端 204 一起存储在固件中。在固件中存 储静态内容元素可以简单并容易地实现。此外, 根据传统技术, 并不要求在嵌入式系统 100 上执行代理 206。由于嵌入式系统 100 可能要求程序特别稳定和高效 ( 特别是在与通用计 算机上的程序比较中 ), 因此为嵌入式系统 100 编写程序 ( 例如代理 206) 可能特别困难和 费时。因此, 用于嵌入式系统 100 的程序可能要求充分测试和调试, 以及使用诸如 C 或者汇 编语言之类的低级程序设计语言。
然而, 根据本发明的某些实施方式, 高速缓存 209 可以同固件分开存储 ( 即, 不在 闪存 104 中 )。例如, 高速缓存 209 可以存储在与闪存 104 分离的第二非易失性存储器中。 由于高速缓存 209 的内容在将电源连接器 116 从电源断开后仍将可用, 因此在非易失性存 储器中存储高速缓存 209 将是有利的。 内容元素 ( 例如静态内容元素 ) 可以存储在高速缓存 209 中。在高速缓存 209 中 存储内容元素 ( 即, 与固件分离 ) 产生以下技术效果 : 可以对内容元素进行更新而不需要执 行完整的固件升级。
传统的嵌入式系统与传统的服务器交互以便下载内容元素 ( 例如静态内容元 素 ), 并且在易失性存储器中存储所下载的内容元素。 然而, 这可能在特定情况下 ( 例如, 当 多个嵌入式系统同时启动并且试图下载内容元素时 ) 引起传统服务器的故障。例如, 此类 故障 ( 也被称为连锁反应故障 ) 可能发生在多个嵌入式系统升级的情况中, 或者影响多个 嵌入式系统的停电情况中。
在高速缓存 209 中存储内容元素 ( 其中高速缓存 209 存储在嵌入式系统 100 的非 易失性存储器 ( 例如第二非易失性存储器 ) 中 ) 产生以下技术效果 : 可以避免某些或所有 由于多个嵌入式系统同时启动而造成的故障 ( 即, 连锁反应故障 )。例如, 如果存在引起嵌 入式系统 100 重新启动的停电, 则客户端 204 可以能够凭借代理 206 检索用户接口 300 的 大部分。类似地, 根据本申请配置的其他嵌入式系统可以能够从相应的代理检索静态内容 元素。由于从代理检索静态内容元素而产生的、 对服务器 202 的 HTTP 请求的减少可以预防 服务器 202 发生故障。
另外, 使用代理 206 可以减少要求服务器 202 传输的数据, 从而减小服务器 202 上 的负荷。此外, 使用代理 206 可以产生针对嵌入式系统 100 的减少的引导时间以及用户接 口 300 的更快的显示。
动态图像 308 也可以是用户接口 300 的一部分。此外, 用户接口 300 可以包括动 态文本 310。动态图像 308 和动态文本 310 可以被理解为动态内容元素。视频点播目录应 用上下文中的动态图像的示例是电影片名和电影海报, 其中电影海报是可以示出电影场景 的该电影的可视广告。同样在视频点播目录应用上下文中, 动态文本的示例是电影的描述 和电影的演员表。
确定特定内容元素是动态内容元素还是静态内容元素可以基于对在一时间间隔 上特定内容元素被修改的频繁程度的分析。如果特定内容元素被确定为静态内容元素, 则 可以创建存储规则 ( 例如过滤器 )。存储规则可以基于特定内容元素的类型和 / 或 HTTP 请 求的 URL。内容类型可以指代嵌入式系统 100 上的用户接口的构成。示例性内容类型包括 JPEG 图像 ( 图像 /jpeg)、 gif 图像 ( 图像 /gif)、 html 页面 ( 文本 /html)、 层叠样式表 ( 文 本 /css) 以及 javascript 代码 ( 应用 /javascript)。
存储规则还可以包括期满, 即, 关于特定内容元素将被存储多长时间的指示。 存储 规则可以由高速缓存管理器 208 维护和实现。
图 4 示出了用于提高由客户端 204 在嵌入式系统 100 上检索数据 的速度的示例 性方法的流程图。
根据所描绘的方法, 在步骤 S402, 在嵌入式系统 100 上执行客户端 204 和代理 206。例如, 可以自动执行客户端 204 和代理 206。此外, 可以分别执行客户端 204 和代理 206, 例如, 作为单独的进程。
虽然步骤 S404 至步骤 S422 涉及 HTTP 请求, 但还有可能使用其他协议, 例如文件 传输协议或者实时流协议。 为了使用其他协议, 对所描述的方法的轻微改变可能是必要的。 在步骤 S404, 客户端 204 可以请求文档的第一内容元素 ( 也被称为页面的组件 )。 例如, 可以响应于用户输入来请求文档并且可以从文档的第一内容元素开始处理请求。第 一内容元素可以是文档中多个内容元素中的一个元素。备选地, 第一内容元素可以是文档 中的唯一内容元素。根据本发明的某些实施方式, 文档包含多个内容元素并且客户端 204 针对每个内容元素执行 HTTP 请求。HTTP 请求可以串行发生或者并行发生。
此外, 在步骤 S406, 客户端 204 向代理 206 发送针对文档的第一内容元素的请求。 例如, 客户端 204 向 HTTP 接口 210 发送在步骤 S404 中描述的每个 HTTP 请求。代理 206 可 以分析 ( 例如解析 ) 每个 HTTP 请求。
在步骤 S408, 代理 206 可以确定在步骤 S406 中发送的 HTTP 请求中所标识的内容 元素是否存储在高速缓存 209 中。例如, HTTP 请求可以标识第一内容元素。在某些情况下, 当收到内容元素时将其存储在高速缓存 209 中。
步骤 S410 和步骤 S414 是可以取决于步骤 S408 的结果而采用的两个备选。当第 一内容元素存储在高速缓存 209 中时, 可以执行步骤 S410。当第一内容元素没有存储在高 速缓存 209 中时, 则可以执行步骤 S414。当执行步骤 S414 时, 还可以执行步骤 S416、 步骤 S418 以及可选择地步骤 S420。
因此, 当第一内容元素存储在高速缓存 209 中时, 代理 206 可以在步骤 S410 从高 速缓存 209 检索第一内容元素。随后, 代理 206 可 以在步骤 S412 向客户端 204 发送第一 内容元素。
备选地, 当第一内容元素没有存储在高速缓存 209 中时, 代理 206 可以在步骤 S414 向服务器 202 请求第一内容元素。例如, 代理 206 可以向服务器 202 提出 HTTP 请求。服务 器 202 可以在步骤 S416 响应代理 206。在步骤 S418, 进行关于第一内容元素是否与至少一 个存储规则相匹配的确定。换言之, 步骤 S418 涉及确定是否基于存储规则存储第一内容元 素。高速缓存规则是存储规则的示例。
取决于步骤 S418 的结果, 可以在步骤 S418 之后执行步骤 S420 或者步骤 S412。例
如, 当第一内容元素与存储规则匹配时, 可以在步骤 S420 将第一内容元素存储在高速缓存 209 中。当第一内容与存储规则未匹配时, 在步骤 S418 之后可以执行步骤 S412。
根据具体示例, 在步骤 S406 提出的示例性 HTTP 请求可以包括以下统一资源定位 符 (URL) : “http://iptv-provider/GUI/images/background.png” 。
例如, 存储规则 A 如下 :
根据存储规则 A, 如果 HTTP 请求包括具有字符串 “/GUI/images” 的 URL( 诸如以上 示例性 HTTP 请求的 URL), 则代理 206 可以进行以下操作 :
- 将 URL 包括到对服务器 202 的请求中 ;
- 从服务器 202 接收响应 ; 以及
- 在高速缓存 209 中存储服务器的响应的内容元素。
另外, 根据存储规则 A, 内容元素 ( 例如由 URL 指代的 background.png 图像 ) 可以 在高速缓存 209 中存储 43,200 分钟 (30 天 )。换言之, 内容元素具有 43,200 分钟的期满时 间。如果客户端 204 在将来请求相同的 URL, 则代理 206 从高速缓存 209 检索 background. png 图像。
在进一步的示例中, 存储规则 B 如下 :
类似于存储规则 A, 根据存储规则 B, 如果 HTTP 请求包括指定 “image/jpeg” 的内 容类型字段, 则代理 206 可以进行以下操作 :
- 将 HTTP 请求的 URL 包括到对服务器 202 的请求中 ;
- 从服务器 202 接收响应 ; 以及
- 在高速缓存 209 中存储服务器的响应的内容元素。
在另一示例中, 存储规则 C 如下 :
存储规则 C 包括 “或” (OR) 表达式, 从而使得如果内容元素是 JPEG 图像或者 GIF 图像则规则匹配。
在使用 “或” 表达式限定的规则中, 如果 “或” 规则内的至少一个子规则匹配则整 个规则匹配。此外, 如果使用 “与” (AND) 表达式限定规则, 那么如果 “与” 表达式内的所有 子规则匹配则整个规则匹配。在某些情况下 ( 例如存储规则 C), 使用
标记 限定每个子规则。还有可能是其他逻辑表达式 ( 例如异或 (XOR))。
因此, 在某些情况下, 当存储规则的一个或多个过滤器表达式与 HTTP 请求匹配 时, 根据期满时间存储 HTTP 请求的一个或多个内容元素。
取决于与内容元素相关联的期满政策, 针对不同内容元素可以实现不同的存储规 则。在某些情况下, 针对静态内容元素而不针对动态内容元素实现存储规则。换言之, 存 储规则可以适用于很少被修改的内容元素, 而存储规则可能不适用于频繁被修改的内容元 素。例如, 在上述示例性 HTTP 请求的 URL 中指代的 background.png 图像可以是很少被修 改的内容元素。文档也可以包含频繁被修改的第二内容元素。可能不存在对应于第二内容 元素的存储规则。 因此, 在步骤 S418, 做出不在高速缓存 209 中存储第二内容元素的确定。
有利地, 由于不需要从服务器 202 下载存储在高速缓存 209 中的内容元素, 因此在 高速缓存 209 中存储内容元素可以显著地改进客户端 204 的性能。
在步骤 S422, 可以由客户端 204 收集对在步骤 S404 中指代的 HTTP 请求的响应。 可以将响应进行汇编并且呈现为连贯的用户接口文档, 即用户接口 300。
实现图 4 的方法可以使用户接口 300 的所有静态内容被存储在高速缓存 209 中。 备选地, 由于高速缓存 209 存储容量的限制, 可能在高速缓存 209 中存储静态内容的一部 分。
凭借高速缓存 209 中的代理 206, 可以加速嵌入式系统 100 上的内容元素的处理。 与服务器 202 相比, 可以更快地从高速缓存 209 检索内容元素, 例如静态内容元素。此外, 由于同客户端 204 分开执行代理 206, 因此不存在将客户端 204 与代理 206 集成的需要。另 外, 通过区分静态内容元素 ( 即, 很少被修改的内容元素 ) 和动态内容元素 ( 即, 频繁被修 改的内容元素 ), 可以按照有利的方式使用高速缓存 209 的有限容量。此外, 通过将高速缓
存 209 从嵌入式系统 100 的固件分离, 可以更新存储在高速缓存 209 中的内容元素而不需 要升级固件。