用于寄存和检索可以用来使缓存记录无效的数据库表格变化信息的制作方法

文档序号:6468946阅读:141来源:国知局
专利名称:用于寄存和检索可以用来使缓存记录无效的数据库表格变化信息的制作方法
技术领域
本发明涉及管理缓存内容。尤其是,本发明涉及用于寄存和检索可以用于 无效缓存记录的,牟表格变化信息。
背景技术
计算机系统和相关技术影响社会的许多方面。确实,处理信息的计算机系 统性能已经改变了我们生活和工作的方式。计算机系统现在通常执行一系列优 先于手动执行的计算机系统出现的主要的任务(例如,文字处理,制表,和数 据库管理)。近来,通过计箅机系统可以电子通信并共享数据的有线或无线计 算机网络计算机系统已经被彼此耦合了。结果,在计t^几中处理的许多任务(
例如,语音通信,访问电子邮件,电子会议,网络浏览)包JSM:有线和/^E
线计鋭几网络与一个或多个其它计算机系统电子通信。
特别地,万维网("www")成为交流信息的重要机制。 一般来说,在 www上的内容是在一客户端/服务器模式中被访问。在一个客户^i十^l几系统
上的一个"网络浏览器"发送一个访问通过在服务器计算机系统上的"网络月艮 务器"被维持的内容的请求。到适当的时候,网络服务器辦卖地掛共附青求的 内容给该网络浏览器。
一种使内容对于网络浏览器来说是可用的方式是为了给网络开发商创建一 个包括轩个硬盘-编码的计嶽几可读指令的静态网页,例如,举例来说,細
文本标记语言中("HTML")。然后该静态网页被存储在一个对网络服务器 可访问的位置(例如,在服务器的计算机系统,在一网络可连接的数据库中, 等等)。响应于来自网络浏览器的一个请求,网络服务器可以将该静态网页传送至网络浏览器(例如,作为用户输入的结果导致网络浏览器访问一个相应于
该静态网页的统一资源定位器("URL"))。由于静态网页的接收,网络浏 览器可以在客户端计算机系统上表示该静态网页的内容(例如,文本,图形, 等等)。
为了保存网络资源,网络浏览器也可以在客户端计算机系统(例如,在系 统存储器或在一大容量存储设备中)上缓存一个静态网页的副本。当静态网页 被不断地请求时,该网络浏览器会在初始化一个新网络请求到网络服务器之前 尝试从缓存中定位该静态网页。如果该静态网页被定位在缓存中,网络浏览器 会检索被缓存的静态网页而不是初始化一个网络请求。由于本地存储的数据可 以被更有效地访问,因此在客户端计算机系统上缓存静态网页会减少与静态网 页显示的内容相关的潜伏性。
对静态网页的频繁的请求也可能也会被缓存在一个服务器计^m系统中( 一般涉及诸如输出缓存)以减少潜伏性。例如, 一个频繁请求的静态网页可以 被缓存在服务器计算机系统的系统存储器中以至于不必每次当该静态网页被请 求时都必须从大容量的存储设备中检索该静态网页。因为它们的静态本质,静 态网页可以被缓存(在一客户端或服务器计算机系统中)很长的时间周期,潜 在性不确定。
然而,静态网页的使用主要是ffiih实时或自定义数据在网络浏览器的存在。 一麟说,在网络浏览器中需要存在的是动 ^ (例如,日常比例图片,股 票现价,等等)。因此,在动态网页中的包括动态数据的要在一网络浏览器中 显示的机构已经被开发出来了 。 一个用于包含在动态网页中动态数据的机构是 作为计嶽几可执行指令(一般称为"脚本")的模i^f牛使用的。
脚本可以使用脚本语言来开发,例如,像这样的,JavaScript和VBScript,
和在一页面文件(例如, 一活动服务器页面("ASP")文件)中嵌AHTML 和扩展^H己语言("XML")指令。当接收到一个动态网页的请求时,服务器 计算机系统将请求重发到一个处理相应页面文件的处理模块中(例如,一ASP 模块)。处理模±,行包括在页面文件的任何脚本,并且生成适当的mML指 令返回给相应的请求。脚本可以包括用于从动态位置访问 的计飾可执行 指令,例如,像这样的,从一伟括当前比例图片劍殳票报价的数据库。由于 脚本主要在接收请求时被执行,因此脚本可以被用来生成包含实时数据的动态网页。
类似于静态网页,动态网页也可以被缓存以提供对动态网页的更为有效的 访问。然而,包括在动态网页中的动态内容(例如,价粉艮价)对时间限制是 特别有效的(例如,直至赃动态内容位置处被检索到的值已经被改变)。 一般 来说,动态内容(例如,价粉艮价)只会在一个很短的时间内有效,例如,只 有几秒钟。当动态网页内容的值改变时,缓存的动态内容就变得无效了。例如,
当股票价格从$20.00变为$21.00,缓存的$20.00的值就是无效的(或者甚至是正 确的)。当无效的动态内容仍然在缓存中,对于网络服务器来说就有给网络浏 览器提供错误的动态内容的潜在性。例如,当一个无效的股票价格仍然保存在 缓存中时,网络服务器可以从缓存中检索到该无效的股票价格而不是重新执行 一个脚本以从数据库中检索一更新过的股票价格。因此,已经开发出了尝试确 保缓存动态内容有效性的缓存管理机制。
一些缓存管理机制在指定的时间间隔中会自动从缓存中移除动态内容,例 如,每十倂中。然而,如果动态内容的值在指定的时间间隔中改刻卩么缓存中 仍然存在一种无效的动态内容存在于缓存中的潜在性。例如,如果指定时间间 隔是五分钟并且动态内容值在被缓存后一全H中更新,动态内容值是无效的但依
然会缓存至少四5H中。在这四辦中里,网络服务器可能会不正确地检索缓存的
动态内容值而不是执行一个脚本去检索该已经更新的动态内容值。 而且,在指定时间间隔移除内容会导致^^有效的tt^人缓存中移除。例如,
如果指定的时间间隔是十^H中并且动态内容值在被缓存后在十併中内〗臓有效,
那么该动态内容值依然被从缓存中移除。因此,更有效检索相应后续请求的动
态内容值的潜在性被卩Iih。
其他缓存管理机制监视存储在服务器计^m系统中的文件(例如,XML文
件)并且当被监视的文件改变时使从监视的文件得到的缓存动态内容值无效。 而其他缓存管理机制监视缓存中的记录并在其他缓存记录无效时使一个缓存记 录无效。因此, 一些缓存管理机制导致缓存记录的有效性依赖于时间, 一个相 应的文件,或其他相应的缓存记录。
然而,J赌的缓存管理机制(包括那對顿的时间,文件,和缓存^IM生)
对于使从计算机系统外部的地址中检索到的缓存的动态数据1K效还不是很合 适。例如,网络浏览器可以请求一个包括来自数据库中若干个不同的表格的动态内容值的网页。因此, 一个具有合适脚本的页面文件可以在服务器计^m系
统上被处理从而检索动态内容值并且生成适当的HTML指令。
然而,从数据库中检索数据要消耗网络和数据库资源。如果在检索的数据 上还要执行计算,那么还要额外消耗服务器计算机系统资源。而且,可能会这 样,服务器计算机系统同时询问数据库要求被包括在动态网页内的动态内容的 大量不同部分。也有可能大量服务器计算机系统每个都从相同的数据库中访问 动态内容。
因此, 一个单个的M库可能会同时给大量的服务器计穀几系统提供动态 内容,其中每个服务器计算机系统同时询问数据库要求动态内容的不同部分。 结果,单个服务器成为在大量服务器计算机系统中的共享资源并且因此潜在限 制也縮小了。也就是,更多服务器计算机系统的额外增加会不必要地引起运行 的增加,由于每个服务器计算机系统至少受从单个数据库中检索内容所需时间 的限制。而且,当从缓存(例如在一指定间隔)中预先完全移除了内容时服务 器计算机系统会被要求再次询问数据库,甚至在缓存中的动态内容依然有效。 在多服务器环境中,缓存中内容的预先完全移除会导致共享数据库中的资源的 不必要的负担,因此,而且是很重要的,要限制可量测性。因此,依赖于配制 缓存中记录的机制和使基于 库中表格的变化的缓存记录无效是有好处的。
发明
背景技术
中的前述问题已经被本发明的原理所克服,其中导出了系统,方 法,计算机程序产品,和用于注册合检索可以用来使缓存记录无效的数据库表 格变化信息的数据结构。具有浏览器的客户端计算机系统对可生成并提供网络
响应的(例如,网页和/或网络服务结果)服务器计^m系统是网络可连接的。 服务器计^m系统至少访问从数据库中数据表格响应的部分内容。服务器计算 机系统保存可以存储已提供内容的缓存以提高后面提供相同内容至安全客户端 网络请求的效率。
服务器计算机系统选择一个包含在用来监视数据变化的数据库中(例如
SQL数据库)的 表格(例如,响应于用户输入)。相应于选定数据表格的
一条记录被插入到一变化通知表中(也包含在数据库中)。相应的记录包括版
本信息,例如,像这样的, 一个对于被选定数据表的,变itlD。 一W虫发器, 其导 定数据表的版本信息当在选定数据表中的内容被替换时在变化通知表中被更新。
口I^S于ffi^^中6^E内容"歹咖,fiA,册赊,^Mii^ri碌),在变
化通知表中的相应版本信息被更新。有时或者响应于检索缓存内容的请求,服 务器计算机系统查询变化通知表相应于数据库中一或多个表的版本信息。 一个 查询可以被配置为请求所有显示在变化信息表中的监视数据表的版本信息,请 求具有突出缓存臓性附tt视的l^的版本信息,^#1青求已变化(例如,通
过包括在Si旬中当前版本信息)的^mii^表的版本信息。口向应^"个査i旬,
更新的版本信息从数据库中返回至鹏务器计算机系统。基于査询的结构, 库可以返回,例如用于所有被监视的数据表的版本信息,具有突出缓存f繊性
的!鹏视的数据表的版本信息,或新青求已z变化的lttMf^表的版本信息。
可替代地,服务器计算机系统可以发布一个查询到变化表并请求将所发布 的查询卩腺在劍艮务器计算机系统直到附青求的表的版本信息被更新。例如, 服务器计算机系统可以发布阻塞在服务器计算机系统上的査询直到被当前的版 本信息比一指定值大。发布的阻塞查询可以被同步执行,以至于在服务器计算 机系统上的一个相应的线程不被卩腺并且当结果可用时调用一个复查信号。
服务器计算机系统决定了缓存的内容是依赖于一个数据表的(例如,作为 一个前面指定的数据库缓存依赖性的一个结果)。服务器计^fl系统比较当前 的版本信息(在接收表中的)和所缓存的版本信息(例如,与一部分缓存内容 缓存在一起的版本信息)。这可以包括比较一接收的变4to和一缓存的变4to。 当适当时,例如,当在数据表中的内容在基于数据表的一部分内容被缓存后改 变时,部分缓存的内容就被从缓存中移除。因此,依赖于一 视的数据表的 缓存的内容可以被适当地无效并从缓存中被移除。适当的无效和移除缓存中的 内容在一网络响应中会减少包括无效缓存内容的服务器计算机系统的可能性。 而且,移除有效数据(例如,可以表示为与时间相依赖的数据)的机会也因此 而减少了因此潜在地提高了网络响应发生的效率。
在一些实施例中,缓存的内容就是以用于生成网络响应的)^和结果的形 式,例如表格式数据,赠, 采集,或局部响应。当这些结果可以l細在 超过一个的网络响应的发生中时缓存这些中间结果是合适的,其中每个网络响 应包含额外的差异信息(例如,其他相关信息的定制或包含)。在其他一些实 施例中, 一个完整的网络响应被缓存。当该完整的网络响应可以通过多个网络
9请求共享时缓存该完整的网络响应是合适的。当缓存一个完整的网络响应时, 该网络响应可以在服务器计算机系统中被推迟并以低级别缓存,例如, 一个内 核禾試的响i^爰存。因此,当该网络响应无效时,它就l鈔人低级别缓存中移除。
可以是这样的,服务器计算机系统接收一个客户端关于一网络响应的包括 被包含在数据库中的ff请求内容的网络请求。数据表可以是一种对于其他可以
在数据表中替代内容的应用来说是可访问的数据表,包括戶;H青求的内容。月艮务 器计算机系统决定该被包含在网络响应中的至少一部分内容当前并未缓存在服 务器计算机系统中。服务器计算机系统从数据表中访问这些戶斥请求的内容并且 构建该包括戶;fi青求内容的网络响应。
月艮务器计算机系统为至少一部分所构建的基于在网络响应构建期间执行的 命令的网络响应分配数据库缓存的依赖性。分配一个数据库缓存的依赖性可以 包括分配依赖于数据表的网络响应或分配基于从依赖于数据表的数据表中接收 的内容。M库缓存的依赖性可以通过指示的^顿或包含页面文件(例如,在 活动服务器页面中("asp"))的程序代码来分配,该页面文件是在服务器 计算机系统被处理以构建的该网络响应。至少一部分被构建的网络响应被缓存 在服务器计算机系统上。因此,响应于后续的被构建的网络响应的网络请求, 服务器计tm系统可以检索该已缓存的被构建的网络响应的至少一部分。检索 缓存内容(潜在地为一完整的网络响应)不仅保存了服务器计算机系统上的资 源(因为部分页面文件未被执行)以及网络和数据库资源(因为数据库没有被 查询从而数据未被在网络中传送)。因此,通过减少处理过程和响应于网络请 求的资源要求减少了潜伏性的存在,而m减少同时访问共享资源例如数据库 量测性则提高了。
本发明的更多的特性和优点将在下述说明书中披露,并且可从说明书中部 分通晓,或者可通过本发明的实例中出导出。本发明的的特性和优点可以通过 仪器的方式或者所附的权禾腰求书中指出的特定的结合被实现或包含。本发明 的这些和其他一些特点从下面的描述和权利要求书中将变得更为完整清楚,或 者可以从本发明后面阐述的实施例中导出。


为了描述上述方式和本发明的包含的其他优点以及特性,上面简明描述的 本发明的更为详细的描述将通过参考包括所附附图的指定实施例来演示。应该领会到那些附图的描述仅仅是用来描述某些典型的实施例的而不是来限定其范 围的,本发明将通过使用所附的附图来描述并解释额潜的特性及细节
图l示出了依据本发明原理的一个配置了依赖于其上的缓存记录的数据表 中的变化无效的设备的网络结构的例子。
图2示出了依据本发明原理的一种用于配置一个数据库以提供表格变化通 知的方法的一个流程图的例子。
图3示出了依据本发明原理的一种用于使缓存内容部分无效的方法的一个 流程图的例子。
图4示出了依据本发明原理的一种用于访问被客户端计算机系统请求显示 的方法的一个流程图的例子。
图5示出了一种用于本发明原鹏合的操作环境。 优选实施例的详细描述
本发明涉及方法,系统,计算机禾旨产品,和用于注册和检索可以用来使 缓存记录无效的数据库表格变化信息的繊结构。具有浏览器的客户端计對几 系统对于可以生成和提供网络响应给客户端计^l几系统(例如,网页禾P/或网络 服务的结果)的服务器计算机系统是可网络连接的。服务器计算机系统至少从 数据库中的数据表中访问网络响应的部分内容。服务器计算机系统包括一个可 以存储所樹共内容(包括来自 表的内容)的缓存(例如,^E^、统存储区中) 以提高所后提供相同的内容至安全客户端网络请求的效率。
服务器计算机系统(例如,响应于用户输入)配置了数据库中的一个数据 表以在当数据表中的内容被替换(例如,插入,删除,更新)时提供一个关于
更新的版本信息(例如,改'加)的变^i知表。月艮务器计^m系统不时地査
询该变{ 知表或者响应于检索所缓存内容以请求相应数据表的已更新的版本 信息。在响应中,数据库提供相应于该查询的数据表的已更新的版本信息。服 务器计算机系统可以4OT已更新的版本信息以使缓存记录(例如,基于预先分 配的 库缓存依赖性)无效。
在一些实施例中,服务器计算机系统接收一用于包括包含在数据表中的所 请求内容的网络响应的客户端网络请求。服务器计算机系统决定被包含在网络 响应中的内容的至少一部分当前没有缓存在服务器计算机系统中。服务器计算
禾;i^乡i^Ai^表中访问jm青求的内容并且构建该网络响应以包括戶;fi青求的内容。服务器计^m系统给基于在构建该网络响应期间所执行的命令所构建的网络响 应的至少一部分分配了一数据库缓存依赖性。至少一部分所构建的网络响应被 缓存在服务器计^^几系统中。
本发明的一些实施例可以包含特定的用途或一般用途计算机,其包括各种 各样计算机硬件和软件的计算机,下面将具体阐述。特别地,在本发明的范围 内的实施例包括用于携带或具有计算机可执行指令或存储于其上的数据结构的
计算机可读媒体。这种计算机可读媒体可以是任何可以通过特定应用计^m或 一般应用计算机访问的可用媒体。举个例子,但并不限于此,这种计算机可读
媒体可以包含RAM, ROM, EEPROM, CD^ROM或其他物理存储媒体,例如
光学磁盘存储,磁盘存储或其他磁性存储设备,或^M其他可以以计算机可执 行指令或繊结构的形式用来记载或存储所需禾將代码的方法的介质并且该介 质可以被特定应用计算机和一般应用计算机访问的。当信息通过网络或其他与 计算机的通信连接(硬件线路,无线,或硬件线路和无线结合的连接)被传送 或提供时,该计算机可以适当地把该连接视为一计算机可读介质。因此,任何 这种连接可以称为一计算机可读介质。上述方式的结合也可以包含在计算机可 读介质范围内。计算机可执行指令包括,例如,会导致一般应用计算机,特殊 应用计算机,或特殊应用处理设备,例如一GPU去进行Ht定功肖^或一组功能 的指令和繊。
在该描述中和在后面的权利要求中,"计算机系统"被定义为一个或多个 软件模块, 一或多个硬件模块,或它们的结合,它们结合在一起以处理指令或 电子数据。例如,计算机系统的定义包括个人计算机的硬件元件,软件模块也 一样,例如个人计算机的操作系统。模块的物理设计是不重要的,计算机系统 包括一个或多个通过网络耦合的计算机。同样地,计算l几系统也可以包括一个 单个的其内部模i央(例如存储器和处理器) 一起工作处理指令和电子数据的物 理设备(例如一移动电话或个人数字助理"PDA")。
在该描述中和在后面的权利要求中, 一"网络响应"被定义为一人类可读 的页面,例如,f総样的, 一网页,和/棘自网络服务的结果。网页可以从网 络检索,例如,f総样的,通过访问相应的统一资源定位器("URL")的万 维网("WWW")。网页可以包括个一或多个可显示在网络浏览器上的超文 本^H己语言("HTML")指令,例如,j紘样的,浏览器102。网络服錄供用于不同应用和不同资源之间进行通信(用户交互作用的潜在依赖性)的机制 而不必开发用户指令。网络服务可以集成一些不同的技术,例如,像这样的,
用于iH己数据的扩展^H己语言("XML"),用于传送 的简单*访问协 议("SOAP"),用于说明可用服务的网络服务说明语言("WSDL"),和 用于列出可用服务的通用说明,发现和^i吾言("UDDI")。网络服务可以 共享事务逻辑,数据,和通过网络的程序界面进行处理。
在该描述中和在后面的权利要求中,"网络请求"被定义为对于"网络响 应"的请求。也可以是这样,用户在用户界面输入适当的命令以初始化一网络 请求。例如,用户在客户端计算机系统101的浏览器102可以输Aig当的命令以 访问一相应网页的URL。另一方面,也可以通过应用来初始化一网络请求。例 如,在客户端计^fl系统101的网络服务应用可以初始化一网络请求至服务器计 算浙系统l 11的网络服务应用。
本领域的技术人员将会明白本发明可以应用在许多种计嶽il^统酉歷之中, 包括!个人计飾!膝上鹕多处理器系统!微机,大型计嶽/L及麟似。 本发明也可以使用在包括本地和远程计算机系统的分布式系统环境中使用,它 们通过网络相连(或者通过硬件线路相连,无线相连,或者通过硬件线路和无 线的结合相连) 一起执行任务,在分布式系统环境中,程序模块和相关数据结 构可以位于本iM远程存储器存储设备中。
现在来看图l,图l示出了依据本发明原理的一个配置了依赖于其上的缓存 记录和基于数据表中的变化无效的设备的网络结构100的例子。网络结构100中 的矩形元件(例如,浏览器102,缓存界面模块m,响应结构模块133,数据库 界面模块136,触发器167,和触发器177)表示fiyt本发明原理的可执行模块。 巻形元件(缓存121和126,响应内容134,记录151和156,以及数据163和164) 表示由可执行模i央处理的繊。因此,网络结构励中描述的可执行模i央和巻形 元件根据本发明的原理相互协作。
在网络结构ioo中,客户^i十^m系统ioi和服务器计^m系统i 11M相应
连接103禾卩104分别与网络106相连的。网络106可以是局域网络("LAN"), 广域网("WAN"),或者甚至是因特网。客户端计算机系统101包括浏览器 102,它可以織网页的网络请求(例如,超文本传送协议("HTTP")请求) 并接收响应于一网络请求所返回计算机系统101的网页。浏览器102也可以在客户端计對几系统10lilM示所接收的网页内容(例如,文本,图形,视频,和音
频)。客户端计算机系统ioi也可以包括与在服务器计^n系统m上的相应的
网络服务应用通信的网络服务应用。
服务器计算机系统lll包括可以构建响应客户端网络请求的网络响应的响
应结构模块B3。响应结构模块133可以处理页面文件,例如,f総样的,动态 服务器页面("ASP")文件,以构建网页。页面文件可以包括多种不同语言 形成附旨令和/或命令,例如,像这样的,超文^^H己语言("HTML"),扩 展禾^H己语言("XML" ) , JavaScript,禾OVBScript。响应结构模块133可以处理 页面文件中的指令和/或命令以生成网络响应的内容。响应结构模块133可以被配 置以生成网页,例如,从浏览器响应于一网络请求,并配置以生成网络服务结 果,例如,从一网络服务响应一网络请求。
服务器计tm系统lll通鹏接術与繊库141 (例如,一SQL翻库)相 连。娄娥库界面模块136可以M^接107传送繊库命令至繊库141。繊库 命令可以f細来M^库141中鹏内容(例如,添加,删除,或改变行或i碌) 或从其中检索内容。数据库界面模块136可以接收用户输入(例如,从m或鼠 标),其可以被翻译成数据库命令并被传送到数据库141。可替代地,数据库界 面模块136可以从在一网络响应中包含内容的响应结构模块133接收输入。在响 应中,数据库界面模±央136可以从数据库141中检索内容并提供该已检索的内容 至响应结构模块133。响应结构模块133可以将在响应内容134中的静态内容与所
检索的内容相结合以构建一个适当的网络响应。
数据库141可以存储包含在数据库141中的数据表的版本信息。数据库界面 模块136可以检索数据表的版本信息并^f共所检索的版本信息至缓存界面模土央 132中。缓存界面模i央132可以利用所检索的版本信息来决定何时使缓存l 12中的 记录无效(并在之后删除)。例如,基于所检索的版本信息缓存界面模块132可 以决定何时使缓存记录12域缓存记录126无效。缓存l 12可以是一个具有降低潜 在性的存储位置,例如,像这样的,月艮务器计嶽/L系统lll的系统存储器。
版本信息可以被存储在表示被包含在数据库141中的数据表的版本的版本 信息 结构中。版本信息繊结构的一个域可以是表示鉴定翻銜41中翻 表的飾的to)域。一^ID可以是一个值,例如,可以唯一f斜只一个繊表 的,包括数字和/或字母的字符。例如, D "销售彭"可以用来识别表162。版本信息数据结构的另一个域可以是一條示由一相应細识另啲娜表 的一变ftJD的变ito域。变^ID域可以是一个值,例如,可以识别识别 表 的当前版本的,包括数字的字符。当数据表中的内容被改变时,相应的变ttJD 可以被更新(例如,M增加该变ttJD)。例如,当内^^皮插入到表172中时, 变jtol58可以被递增。版本信息数据结构的另一个域可以是表示 库141何
时开始寻找由相应,识别识另啲数据表的版本的日期的日期域。例如,曰期 154可以说明何时 库141开始寻找表162的版本信息。因此,版本信息 结 构可以是下面的形式 版本信息
飾域 变4加域
日期域
一个或多个版本信息数据结构可以被存储为包含在数据库141中的变化通 知表的记录。例如,变化通知表142包掛己录151和156。而且,在变^M知表142 中每一组包括三个竖向的省略号^变4M知表142可以包括其他记录。相应于 数据表的在变4M知表142中的齡记录者敞配置以寻才繊本信息。例如,记录 151和156可以分别与表162和172对应。因此,飾152可以存储一个用以识别识 别表162的值,变〗加153可以存储一个说明表162当前版本信息的值,日期154 可以存储说明麵库141何时开始寻,緣162的版本信息的值。同样地,細157 可以存储一个用来识别识另拨172的值,变4加158可以存储一个说明表172当前 版本的值,并且日期159可以存储一个说明数据库141何时开始寻找表172的版本 信息的值。
一个数据表可以被配置为通过使用相应的在一变^a知表中更新一适当变
化0的 库触发器(例如, 一部^H十^m可执行指令)来寻找版本信息。当
数据表中的内容被替换时,数据库触发^H皮执行并且适当的变itlD被更新。例 如,当在i操164中的麵被替换,角^:器167可,^1行以更新变{加153的值。 类似地,当记录176被插入到数据173中时,触发器177可以被执行以更新变化 ID158的值。数据库141 (劍艮务器计^m系统lll的备用系统)的一个管理员或
15用户可以输入导致与 表相关的适当的触发器上的用户输入。
表162和表172是包含在数据库141中的 表。表162和172中的每一个者阿 以包括在由繊库界面模块136潜在驗的一个网络响应的所包含的内容。例如, 表162和表172可以分别包括公司总量和销售信息。在数据表中的内容可以被一 或多条记录所表示。例如,数据163由记录164和166 (而潜在的其他记录由竖向 的省略号表示)表示。同样地,数据173可以由记录174和176表示(而潜在的其 他记录由竖向的省略号表示)。
数据库界面模±央136可以传送命令至数据库141 (或其他数据库)从而导致 来自 库141 (或其他 库)的内容被检索。所检索的内容可以用作后来被 传送到一发送请求的计算机系统的网络响应的内容。例如,服务器计算机系统 111可以从客户端计算机系统101接收网络请求。该网络请求可以被传送到响应 结构模块133以处理相应的页面文件从而构建相应的网络响应。响应结构模块 133可以IMM存112以鹏该网纟钟向应(^C^^分)^^剤^E缓存112之中。当 一网络响应存储在缓存l 12时,网络响应可以直接被返回至客户端计算机系统 101。
当网络响应没有存储在缓存112中时,脚本,包括相应的页面文件可以被执 行以决定一网络响应。脚本的执行可以包括检查,和如果可用则使用存储在缓 存112之中的网络响应。当内容没有存储在缓存112中时,所执行的脚本可以从 数据库141中请求内容。因此,对内容的请求被传送到 库界面模块136中, 它可以发布适当的命令以检索变化E)和^)以及基于变ttJD和to的被检索的 内容。例如,基于变tt!D153和to152,数据库界面模块136随后可以从表162 中检索数据。
也可以这样,版本信息在査询 之前被检索。例如,数据库界面模块136 可以被配置为在查询数据(例如,数据163和/或数据173)之前检索版本信息( 例如, 一或多个变ftiD和一或多个相应的^))。在查询 之前检索版本信 息可以明显地减少在数据表中的数据在数据被査询后在版本信息被检索之前被 改变这种很少出现的情况的可能性。
响应结构模块133也可以决定所检索的内容是否要被缓存以及所检索的内 容是否1^#、于一 表。响应结构模块133可以将要被缓存的所检索的内容,与 任何数据表(例如,表C)和相应的变4tlD)的依赖性的指示一起,传送到缓存界面模±央132。缓存界面模块132可以将所检索的内糊入到缓存112中。因此, 后面的该被检索内容的网络请求可以以提高的效率被处理。
所缓存的内容可以存储在表示所缓存内容和相应依赖性的缓存记录数据结 构中。缓存记录数据结构的一个域可以是表示在所请求的网络响应中已经(或 将要)返回客户端计算机的内容的页面内容域。页面内容可以包括网络响应的 1分(例如, 一条或多絲自i^的记录)或可以包括一識的网络响应。 例如,响应内容122可以包括来自记录164和166的内容。可替代地,响应122可 以包括包含数据库141中内容的,来自响应内容134的内容的,以及来自其他位 置(例如,来自期M^库棘自其他网络服务)的内容的一識的网络响应。
缓存记录数据结构的另一个域可以是一个表示识别识别数据库141中数据 表的 的 )域。^ED可以是一^K直,例如,从一变4 知表中检索到的, 包括数字和/或字母的字符。例如,当从表162中检索内容时, )152也可以从 变化通知表142中被检索。因此,在缓存112中的一个^)可以与在变化通知表 中的細相对应。例如,当从表172中检索内容时,飾128和tol57者阿以识 别识别表172。
在一些实施例中, 一个单个的表ID/变ftlD元组,例如,像这样的, 一个主 码记录,对于每个lffi视的数据表来说都存在于缓存中。任何存在于表中的内 容都可以依赖于相应的主码记录。因此,可以这样,许多个缓存记录依赖于相 同的主码记录。当M过^)变化来识别识别时,相应的变化ID可以在主码记 录中被更新或者主码将被移除。更新或移除一条主码记录导致任何依赖于缓存 断己录(例如,缓存记录126) l鈔人缓存中移除。使一条與虫的主码的/AM生无 效的多条缓存记录会减少所需查询和版本比较的数量以维持缓存记录。因此, 主码记录可以被用来提高决定何时从属内容无效的效率。
缓存记录数据结构的另一个域可以是表示一由相应^D识别识另啲数据表 的变ttJD的变ttJD域。 一个变itlD可以是一个值,例如,从变化通知表中被检 索到的,包括数字的字符。例如,当从表162中检索内容时,变4tlD153可以从 变4M知表142中被检索。因此,在缓存112中的变ttJD可以对应于在变^l知 表142中的变4tlD。例如,当 从表172中被检索时,变4tiD129和变化[D158 可以相等。因此,缓存记录 结构可以是下面的格式
缓存—记录页面内容 瑯域
变te)域
一条或多条记录数据结构可以被存储在缓存112中。例如,缓存112包括缓 存记录121和126。而且,在缓存112中的每列圆点号(也就是,省略号)^缓 存l 12可以包括的其他缓存记录。在缓存l 12中的每一条缓存记,应于包括在 前面所构建的网络响应中的部分内容。例如,缓存记录121和126分别包括响应 内容122和27,它们可以被包括在传送到客户端计^m系统101的网络响应(或 可以是网络响应)中。
有时,服务器计算机系统111可以査询数据库141的版本信息。例如,数据 库界面模块B6可以被配置自指定的时间间隔(例如,每五秒钟)査询数据库 141。响应于接收的査询,数据库141可以给任何已经从接收的最后一个査询信 号后被替换的数据表返回版本信息。 一个查询可以是一指定的对数据表的具有 区别于包含在该査询中版本信息的版本信息的请求。数据库界面模块136可以接 收从数据库141中返回的版本信息。数据库界面模块136将所接收的版本信息传 送至(j缓存界面模块132。缓存界面模块132可以处理所接收的版本信息以识别识 别要被无效和从缓存112中移除的缓存记录。可替代地,缓存界面模块132可以 处理所接收的版本信息以在缓存112中更新合适的主码记录。
在一替代实施例中,服务器计算41系统11 l可以查询数据库141中已经变化 的版本信息,并且请求该査询不要返回直到一^^变化被决定。例如,数据库界 面模i央136可以被用彩^TN^视的表发布一个阻塞查询。所发布的阻塞彭旬 对于每个受监视的表来说可以包括当前持有的版本信息。在接收所发布的阻塞 查询时,翻库141一直等待直到一个或多个被请求的表的版本信息被更新。响 应于该更新,数据库141可以返回该变化表的^D和版本信息。卩tt查询可以被 同步执行,从而对数据的请求并不返回直到变化信息可用。另一方面,阻塞查 询可以被异步执行,从而请求被立即返回,并且在当变化信息可用时服务器计 算机系统l 1拨送一个回复信息。
图2示出了依据本发明原理的一种用于配置一个数据库以提供表格变化通知的方法200—个流程图的例子。可以讨论一下与网络结构100中描述的系统和 数据库相关的方法200。方法200包括选择一个数据表的步骤以监视变化的步骤 (步5彩01)。步5彩01可以包括一个对于从要被监视内容变化的数据库中选定 的数据表来说是可连接(或包含)的计算机系统。选定的以监视变化的数据表 可以包括 库界面模块136接收识别要!鹏视的 表的用户输入。例如,服 务器计^m系统l 1 I和/或繊库141的一个管理员可以提 定用来监视的魏 定的162和表172的命令。当一个對機知表并不总是存在时,管理员也可以输 入命令以创建一个变iW知表。例如,服务器计^m系统lll和/或翻库141的 一个管理员可以提交命令至数据库141以创建变{^知表。
可替代地,计,系统lll可以自动提魏定用来监视数据表的命令,以响 应于接收的对于相应包括从戶,定的数据表中的内容的网络响应的网络请求。 例如,响应于接收一相应包括来自表162和/或表172中内容的网络相应的网络请 求,服务器计#^几系统11 l可以自动提魏定用来监视的表162和/或表172选定的
命令。当一变^S知表不存在时,服务器计^m系统m可以自动的,例如,基
于脚本上的页目录,提交可以导致变化通知表被创建的命令。例如,响应于接 收相应包括来自数据库141中数据表的内容的网络响应的网络请求,服务器计算 机系统l 1 l可以自动提交导致变化通知表142被创建的命令。数据库界面模±央136 可以传送用户输入和域自动产生变4 知表创建命令和 择命令至, 库141。
方法200包括插入一条相应于数据表的记录到变化通知表(步5歡02)。步 骤202可以包括当变化通知表并不总是包括一条相应于数据表的记录时插入一 条相应于数据表的记录到变化通知表。例如,与数据库网络互连(或包含)的 计算机系统可以插入一条相应于被选定数据表的记录到变化通知表中。一 入的记录可以包括相应于被选定 表的版本信息(例如,由版本信息 结 构表示的)。插入到变^31知表的记录可以包括 库界面模块136接收 际一 条将要被插入到变^ffi知表的记录的用户输入。
例如,月艮务器计#1几系统111和/^ 库141的一个管理员可以提交导致记 录151和156将被插入到变化通知表142中的命令。可替代地,计算机系统lll可 以自动提交导致记录要被插入到相应于接收一相应网络响应的网络请求的变化 通知表中的命令,其中该网络响应包括包括相应选定数据表中的内容。例如,响应于接t!M应于包括来自表162和/或表172的内容的网络响应的网络请求,服 务器计算机系统l 11可以自动提交导致记录151和156被插入到变化通知表的命 令。数据库界面模块136可以将用户输A^i自动生成的记录插入命令传送到数据 库141。
方法200包括一^^^定的 表分配触发器的步骤(步5歡03)。步歡03
可以包括在当角^:器没有分酉2^ 定的 表时纟继定 表分配劍贩器。
例如,与翻库网络互联(或包含)的计^m系统可以分配一个触发器纟继定
的数据表。 一个分配的触发器可以导致当在选定数据表中的内賴皮替换时选定 数据表的版本信息在变化通知表中被更新。例如,当在表162中的内容被替换时 (例如,当在数据163中一条记录被插入,移除,或改变时)触发器167会导致 变^ID153被更新(例如,增长)。类似地,当在表172中的内容被替换时(例 如,当在数据173中一条记录被插入,移除,或改变时)触发器177可以导致变 ^klD158被更新(例如,增长)。
分配触发器可以包括数据库界面模块136接收指示一个触发器将要被分配 至IJ选定的娜表的用户输入。服务器计對几系统l 11和/或 库141的一个管理 员可以提交导致触发器分配到所选定数据表的命令。例如,管理员可以提交导 致将触发器167分配到表162和将触发器177分配至拨172的的输入。可替代地,
计算机系统l 11可以自动分配一个响应于接收一相应于包括所选定数据表的内 容的网络响应的网络请求。例如,响应于接收一相应于包括来自表162和域表172
的繊的网络响应的网络请求,月艮务器计^m系统l 1 l可以自动提交导致将触发 器167分配至拨162的和域导致将触发器177分配到表172的的命令。繊界面模 块136可以将用户输入或自动生成的分配命令传送到数据库141 。
一个触发器可以包括附属于一个表的部分计算机可执行指令。触发器可以 是事件驱动从而当事件发生时该部分计^m可执行指令被执行。例如,触发器 167可以被设置为激活当在数据163中的内容被替换时并且可以包括导致变化 ID153被递增的部分计^l几可执行指令。
方法200包括更新响应于在选定数据表中的被变化的内容的版本信息的步 骤(步歡04)。步歡04可以包括与一更新响应于戶,定的被改变的数据表的 库网络互联(或包含)的计^n系统。例如,当 162中的内^1皮替换( 或者是自动或者是用户输入的结果)时计算机系统可以执行包括导致变^ID153被递增的触发器167的部分计穀几可执行指令。
方法200包括返回该已更新的版本信息至请求的服务器计算机系统(步骤 205)。步i!205可以包括返回该已更新的版本信息至请求的服务器计算机系统 以至于该被更新的版本信息可以被用来决定服务器计算机系统中的缓存记录中 内容的有效性。例如,織库141可以发送记录151和156 (或它们的部分)至月艮 务器计算机系统l 11以响应于来自服务器计算机系统l 11的査询。数据库界面模 块136可以从数据库141中接收数据记录。数据库界面模块136可以将来自记录 151和156的数据(例如,叙〕152和157与变^H)153和158)中传送数据至缓存 界面模块132以用来识另腰被无效的缓存记录。
在一些^M列中,雜爱存的内容以微n结果的形式l細来生成网络响应,
例如表格数据,对象,样本,或部分的网络响应。当结果可以被用在超过一个 网络响应的的生成中时缓存这些中间结果是合适的,其中每个网络响应包括附 加的差异信息(例如,自定义鄉^ffi刘言息的结合)。在其他一些实施例中, 一个完整的网络响应被缓存。当一个完整的网络响应可以被多个不同网络请求 所共享时缓存该完整的网络响应^S当的。当缓存一个完整的网络响应时,该 网络响应可能以较低优先级被推迟被缓存在服务器计算机系统中,例如, 一个 核心模式响应缓存。因此,当该网络响应无效时,它就被从低优先级的缓存中 被移除。
图3示出了依据本发明的原理的一个使部分缓存内容无效的方法300的一个 流程图的例子。方法300将与在网络结果100中描述的相关计算机和数据库一起 讨论。方法300包括查询一相应于一个或多个数据表的版本信息的变^M知表( 步骤301)。步3彩01可以包括一个服务器计算机系统,它构建包括来自一个或 多个数据表中内容的网络响应,在查询变化通知表的相应于一个或多个数据表 的版本信息时。例如,数据库界面模±央136可以查询变化通知表142的相应于表 162和163的版本信息。数据库界面模块136可以査询变iW知表142以作为接收 用户输入的结果,指定彭旬的间隔的出现,响应于一个総雜S存内容的请求, 或一个优先于来自依赖表中请求的 初始化的阻塞查询。
一个査询可以被配置为请求所有被监视的在变化通知表中显示的数据表的 版本信息,请求用于具有突出 性的丰 视的数据表的版本信息,或新青求 用于已经改变(例如,通过包括在査询中的当前版本信息)被监视的的数据表的版本信息。响应于一个查询,更新的版本信息从从数据库返回到服务器计算 机系统。基于查询的配置,数据库可以返回,例如,所有被监视数据表的版本 信息,具有突出缓存依赖性的1 视的 表的版本信息,或者已经改变的被 监视的 表的版本信息。
可替代地,服务器计算机系统可以发布一个查询至变^M知表并请求被发
布的查询阻塞在服务器计Mi系统上直到戶;n青求表的版本信息被更新。例如, 服务器计算机系统可以发布査询,该査询被ffis在服务器计算机系统上直到当 前的版本信息大于一指定的阈值。所发布的阻塞的查询可以被同步执行,从而 働艮务器计穀/L系乡肚的一个相应的线程被ias直到结果是可用的。另一方面, 所发布的阻塞的査询可以被异步执行,从而使相应的在服务器计算机系统上的 一个线程(例如,在一独立的线程)不被阻塞并且在服务器计算*几系统上的结 果可用时调用一个回复信息。
方法300包括一个接收至少一个来自变化通知表被最后査询时就已经改变
的数据表的列表的步骤的步勵02 。步gt302可以包括一个服务器计算机系统, 它构建包括来自至少一个数据表的网络响应,接收来自至少一个自从变^M知
表被最后査询时就已经改变的数据表的列表的步骤。至少一个数据表的列表可
以包括该至少一个 表的当前版本信息。例如, 库141可以返回包括 表162的版本信息(例如,^ID152和变化ID153)以及表172的版本说明的i^ 表(例如,^ID157和变化ID158)的版本信息到服务器计tm系统111。数据库 界面模块136可以接收从数据库141返回的数据表的一个列表。
方法300包括一个决定所缓存的内容依赖于至少一个数据表的步骤(步骤 303)。步§彩03可以包括一个服务器计算机系统,它构建包括来自至少一个数 据表的内容的网络响应,决定所缓存的内容依赖于至少一个 表。例如,服 务器计算机系统l 11可以决定依赖于表162的响应内容122和依赖于表172的响应 内容127。缓存界面模i央132可以将所接收的to ( )152和157)与相应的缓 存的 )(勃D123和128)相比较。当M)的比较如此说明(例如,当所接收 的^D和所缓存的M3识别属于相同的数据表时)时,缓存界面模块132决定依 赖于一个 表所缓存的内容。例如,当^ID123的值与^ID152的值匹配时, 缓存界面模块132可以决定依赖于表162响应内容。對W也,当細128的值与表 ID157的值匹配时,缓存界面模块132可以决定 于表172响应内容127方法300包括当前版本信息与所缓存的版本信息的比较步骤(步§彩04)。步勵04可以
包括一个服务器计^m系统,它包括构建包括来自至少一个数据表的内容的网 络响应,比较当前的版本信息和所缓存的版本信息。例如,服务器计算机系统
11 l可以将从返回的列表中的版本信息与存储在缓存l 12中的版本信息相比较。 缓存界面模块132可以将所接收的变化D (变化ID153和158)与相应的所缓存的 变to (對加124和129)相比较。
方^^J彌除基于比较结果的部分所缓存内容的步骤(步3影05) 0步徵05 可以包括一个服务器计算机系统,它构建包括来自至少一个数据表的内容的网
络响应,移除基于比较结果的所缓存的部分内容。例如,服务器计^a^统ui
可以从缓存112中移除所缓存的基于当前版本信息与所缓存的版本信息的比较。
当变^ID的比较这样指示(例如,当一个所接收的变化ro的值比所缓存的变化
ID的值大时),缓存界面模块132移除缓存的内容。例如,当变itlD153比变化 ID124大时,缓存界面模±央132可以从缓存112中移除缓存记录121。类{议他,当 变{加158比對加129大时,缓存界面模块132可以从缓存112中移除缓存记录 126。当变^ID相等时所缓存内容不会从缓存112中被移除。
因此,通过使用数据库缓存依赖性,适当的使所缓存内容无效的可能性会 增加。当数据表没有改变时,从缓存中 页先完全移除无效的依赖内容的机会会 增加。因此,来自缓存的无效依赖内容可以被用来更为有效的构建网络响应。 另一方面,当数据表已经被改变,从缓存中移除相应无效依赖内容的机会会增 加。因此,无效j繊内容潜在地ffiih被包含在网络响应中。
图4示出了依据本发明原理的一种用于访问请求客户端计算机系统显示内 容的方法400的一个流程图的例子。方法400将与在网络结构100中描述的相关的 计^m系统和M库一起讨论。方法400包括从一客户端计^n系统接收网络请 求的步骤(步3斜01)。步^401可以包括一个服务器计t^几系统,它构建包括 来自至少一个数据表的内容的网络响应,从一客户端接收网络请求。例如,服 务器计^m系统lll可以从客户^i十^t几系统101 (例如,在浏览器102接收的作 为用户输入的结果发起的)接收网络请求。 一个网络请求可以推导,例如,当 浏览器102访问一个相应于网络响应的通用资源定位器("URL")时。
一个网络请求可以请求包括被包含在一数据表中的所请求的内容的网络响 应的鹏。例如, 一个来自客户端计^t几系统101的网络响应可以是一物括来
23自表162和/^172的网络响应的请求。表162和表172通常可以访问其他的可以 替换在数据表162和172 (包括将要被包括在所i青求的网络响应中的内容)中被 包含的内容的应用(例如,工作流程或应用总量)。因此,可以这样,包括在 数据163和数据173中的内容Mil在网络请求t间的其它应用被替换。
响应于接收一网络请求,服务器计算机系统l 1 l可以决定一个完整的相应网 络响应被存储在缓存112中(或在H氏优先级缓存中)。当该完整的相应网络响 应被缓存时,服务器计算机系统l 1 l可以从缓存l 12中返回该完整的被缓存的网 络响应而不需进一與青求任何作为网络请求的结果的处理。因此,当一完整的 网络响应被缓存时,与一网络响应的完淑目关的潜在性可以明显的减少。
另一方面,响应于接收一网络请求,月艮务器计^M系统111可以决定至少一 部分的相应网络响应当前不被缓存。方法400包括一个决定要被包括的相应网络 响应的内容的至少一部分当前不被缓存(步骤402)。步3斜02可以包括一个服 务器计算机系统,它构建包括来自至少一个数据表的内容的网络响应,决定包 括在网络响应中的至iH分内容当前没有被缓存到服务器计嶽M统。例如, 服务器计算机系统l 1 l可以决定包括在将被递送到客户端计算机系统101的网络 响应中的至少一部分内容当前没有被缓存在计算机系统l 11 。
一个在服务器计算机系统l 11接收的网络请求可以被传送到响应结构模块 133。因此,响应结构模块133可以检索一个适当的页面文件(例如, 一个ASP 文件)和处理该页面文件以构建一相应的网络响应。包括在该页面文件中的脚 本可以请求存储在服务器计^fl系统(例如,在表162禾口/或163中)外部位置的 内容。当一个外部内容的请求被处理时,响应结构模块133可以发趟当附旨令 至缓存界面模块132以致使缓存界面模i央132尝试查找在缓存112中的外部内容 的地点。当外部内容被存储在缓存112中时,缓存界面模块132可以响应说明外 部内容存储在缓存112中的响应结构模块。另一方面,当夕卜部内容没有存储在缓 存112中时,缓存界面模块132可以响应说明外部内容没有存储在缓存112中的响 应结构模块。
当决定了包括在没有被缓存的一个网络响应的至少一部分内容时,月艮务器 计算机系统l 1 l可以进一步决定该至少一部分内容是否依赖于数据库141中的任 何数据表。当该至少一部分内容依赖于 库141中的一个 表时,服务器计 嶽/L系统l 1 l可以进一步决定i^表的一条相te码记录是否存储在缓存l 12中。当相应的主码记录不是存储在缓存l l沖时,服务器计穀几系统l 11可以检索数
据表(例如,来自变^ffl知表142)的适当的版本信息并将一*括适当版本信 息相应的主码记录存储在缓存l 12中。
方法400包括一个访问来自 表请求的内容的步骤(步3斜03)。步l斜03 可以包括一个服务器计算机系统,它构建包括来自至少一个 表的内容的网
络响应,来自访问,表中戶;fi青求的内容。例如,服务器计tm系统m可以从 数据库i4i的一,中访问所请求的内容。作为不存储在数据库i41中的戶;n青求
的内容的指示的响应,响应结构模块133可以发凝当附旨令(例如,通过发布 一个査询)至f^库界面模块136以致ja^库界面模i央136尝试找到翻库141 中所请求内容的位置。 库141可以寻找附青求内容(例如,在i碌164, 166, 174,和/或176中)的位置并返回所请求的内容至数据库界面模块136。数据库界 面模块136然后可以传送附青求的内容至响应结构模块133。
方法400包括构建相应网络响应的步骤,该网络响应包括戶;fi青求的内容(步 骤404)。步5翻04可以包括一个服务器计算机系统,它构建包括来自至少一个
数据表的内容的网络响应,并构建该网络响应。例如,服务器计^m系统ui可
以包括在一要被返回到客户端计算机系统101的网络响应中的来自数据库141的 内容。响应结构模块133可以包括从数据库界面模块136接收的所i青求的内容( 例如,来自记录164, 166, 174,禾口/或176)以满足一网络请求。基于戶7fi青求的 内容(与潜在的包括在一适当页面文件中的在其^HTML禾PXML命令以及脚本 一样),响应结构模块133可以生成一,当的网络响应。
方法400包括用于存储所请求内容以至于所请求的内容可以被有效的访问 以满足后续的网络请求的面向结果的功能步骤(步駒07)。步g對07可以包括 任何用于存储所请求的内容的相应步骤从而使所请求的内容被有效的访问以满 足后续的网络请求。然而,在图4的方法的例子中,步§對07包括一给所构建的 网络响应的至少一部分分配 库缓存 性的相应步骤(步^405)。步g斜05 可以包括一个服务器计算机系统,它构建包括来自至少一个 表的内容的网 络响应,给所构建的网络响应的至少一部分分配繊库缓存 性。
步骤407也包括一个缓存至少一部分所构建的网络响应的相应步骤(步骤 406)。步^406可以包括一个服务器计算机系统,它构建包括来自至少一个数 据表的内容,缓存至少一部分所构建的网络响应,服务器计算机系统可以在服
25务器计算机系统的缓^^立置缓存至少一部分所构建的网络响应。例如,缓存界
面模块132可以导致由响应结构模块133构建的网络响应的至少一部分优先于所 构建的网络响应被il^到客户端计^m系统而被存储在缓存l 12中。
当缓存一个完整的网络响应时,该网络响应可以被推迟被缓存在一服务器 计算机系统的低优先级存储器上,例如,在一核心模式响应缓存中。例如,一 个完整的网络响应可以被发送到一由因特网信息服务器("ns")模块维持的 缓存位置。因此,当该网络响应无效时,就M^人低优先级缓存中被移除。
数据库缓存依赖性可以被分配并且戶;M存内容的至少一部分可以作为在网
络相应构建过程中所执行命令的结果。在一些实施例中,数据库缓存依赖性被 分配给一个网络响应中的部分内容。下面的第一个例子的指令可以被包括在一 页面文件中以导致在网络响应的部分内容被分配一数据库缓存依赖性
1. 〈HTML〉
2. <Script>
3. SqlCacheDependency c;
4. c=new SqlCacheDependency(pubs,products);
5. ProductCollectionp=getproductsO;
6. Cache.Insert("Pinfo",p,c);
7. 々Scrip1>
8. </HTML>
这个例子的第3行的指^ij建一个iyg类型为SqlCacheDependency的变量" c " 。 SqlCacheDependency可以是一个已经被预先建立的用于表示数据库缓存 ^M生的繊鄉。这1M列子的斜行附旨令分配^lc以^;包含在"pubs"数 据库中的表"products"的依赖性。这可以表示,例如,包含在数据库141上的表 162飾繊性。这"tf歹i仔^^5,溯旨邻健"H"l^W^ "ProdudCollection"的变 量"p" 。 ProductCollection可以是一个预先被蜜i的用于表示从产品数据库中 接收的产品列表的繊类型。函数"g邻roductsO"在第5行M^l行以返回一个存 储在变量p里的产品列表(例如,从表162和/或163中)。
这个例子的第6行附旨令创建一条缓存记录(例如,在缓存112中)。缓存 记录用主码"Pinfo"创建,随后它可以l細做缓存记录的参考。该缓存记录被 创建并存储在由变量p表示的产品列表中(例如,作为响应内容122)并且缓存记录依赖于在pubs数据库中的用变量c (例如,作为tt)123)表示的产品表。
当大量的网络响应都包括相同部分的内容时第一个例子中的指令可以是特别有 利的。
TM列子中附旨令可以被包括在一个顾文件中以^^服爰存的产品列表
ProductCollection『Cache ("Pinfo");
当检测到在pubs数据库中的产品表被替换时,通过主码Pinfo所参考的缓存 记录是无效的。在其他一些实施例中, 一个数据库缓存依赖性被分配给一完整 的网络响应。下面的第二个例子的指令可以被包含在一页面文件中导致一完整 的网络响应被分配给一 库缓存 性
1. <%Output Cache SqlTableDepend= "pubs:products"%>
2. <HTML>
3. <Script> 4 …
5. 々Script>
6, </HTML>
第二个例子的節行指令是导致该从网页文件产生的依赖于包含在"pubs" 数据库中的"products"表的完整网络响应的指示。 一条缓存记录可以被创建以 缓存该从网页文件产生的完整的网络响应(例如,作为响应内容127)。在第4 行的省略号表示其他可以执行的脚本指令,例如,像这样的,当页面文件被处 理时,访问在pubs数据库里的产品表的。当大量客户端请求相同的网络响应时 第二个例子的指令可以是很有利的。
数据库缓存依赖性被结合一个或多个其他缓存依赖性i顿也是可以的,例 如,像这样的,一时间,文件,主码,和/或网络服务缓存 性或者甚至其他 数据库缓存依赖性。例如,下面的例子的指示可以被包含在一页面文件中导致 一完整的网络响应被分配至坏光娜库缓剤繊性还有时间繊性
<%Output Cache Duration^600s SqlTableDepend= "pubs:customers" %>
该例子的指示会导致从相应网络响应被创建或直到该在"pubs"数据库中 的"用户"表被替换时在缓存中要维撫OO秒的相应网络响应。
在一些实施例中, 一或多条缓存记录是关联于(或者,与之有联系的)数 据库依赖缓存记录的(因此产生一个主码依赖性)主码依赖缓存记录。因此,使数据库依赖缓存记录无效会导致每一个主码依赖缓存记录也无效。因为主码 依赖缓存记录是依赖于在缓存中(例如,在系统存储器中)的其他数据的,使 一主码依赖缓存记录无效是比使一数据库依赖缓存记录(它可以要求一数据库 查询,网络通信,繊串行化,等等)无效更有效。因此,为了增加使缓存记 录的无效的效率,, 一个具有依赖内容的第一缓存记录可以被配置为依赖于一 第二缓存记录(通过一主码依赖性)。当在相应数据表中的变化被检测时,该 第二缓存记录使任何依赖缓存记录无效。响应于一检测至啲变化,该第二缓存 记录也可以从存储或者适当的用于可以被更新的相应的数据表的版本信息中被 移除。
例如,缓存记录121和缓存记录126都依赖于表162 (例如,te)123和表128 都对应于 )152)也是可以的。为了优化决定何时响应内容122和响应内容127 被无效的效率, 一劍, 162的主码记录可以| 入到缓存112中(也就是, 插入到系统存储器中)。缓存记录121和126可以依赖于所插入的主码记录。当 tol62被替换时, 库141的一个后续查询可以识别变j加153被更新并^j^ 插入的主码记录无效。使所插入的主码记录无效会自动使缓存记录121和126无 效而不是要求变toDD124和变4tiD129直接与变ftlD153进行比较。因此, 库
查询的次数和版本信息可以被减少并且网络, 库,和处理资源得以保留。
方法400包括一个将所构建的网络响应传送至响应于网络请求的客户端计 算机系统的步骤(步骤408)。步駒08可以包括一个服务器计算机系统,它构 建包括来自至少一个数据表的内容的网络响应,将所构建的网络响应传送至响 应于网络请求的客户端计^^M统。例如,响应于该来自客户端计^^L系统101
的网络请求服务器计嶽M统i n可以鹏一网络响隨客户^i十^m^細01 。
戶,送的网络响应可以是一个由响应结构模块133构建的网络响应。
图5示出了一种用于本发明原理的适合的操作环境。郞以及下面的i姊会 提供实施本发明涉及的适合的计算环境一个简洁,通用的描述。虽然没有被要 求,该环境仍然以用计算机可执行指令通用格式被描述,例如禾骄模±央可以被 计算机系统执行。 一般来说,禾將模i央包括例行禾OT,禾骄, ,组件,数 据结构,以及其类似,其执行特殊任务或执行特别的抽象数据类型。计算机可 执行指令,相关的数据结构,和f,模块表示用于执行这里公开的方法中的步 骤的程j^ft码方式的例子。参照图5, 一个用于实行本发明的示范性系统可以包括一在计算机系统520 形式的通用计算机设备,包括一处理单^521,一系统存储器522,和一系统总 线523用于将包括系统存储器522的多种系统组件相连至处理单^521 。处理单元 521可以执行设计用来实现计算机系统520特点的计算机可执行指令,包括本发 明中的特点。系统总线523可以是多种总线结构类型中的招可一种,包括一存储 器总线或存储控制器, 一外设总线,和一使用各种总线结构中任一种的本地总 线。系统存储器包括只读存储器("ROM" ) 524和随机存储器("RAM") 525。 一基^A^I出系统("BIOS" ) 526,它包括基本的例《,呈式有助于在 计算机520中的组件之间传送信息的事务,例如在启动期间,可以存储在 ROM524中。
计算机系统520也可以包括一个用来从硬磁盘539读出和写入的硬磁盘驱动 器527, 一用来从可移动磁盘529读出和写入的磁盘驱动器528,以及一用来从一 可移动光盘531中读出或写入的光学m驱动器630,例如,或者是,^CD-ROM 或其他光学媒体。硬磁盘驱动器527,磁盘驱动器528,以及光学磁盘驱动器530 都通过硬磁盘驱动器接口 552、磁盘驱动器接口 533和光学磁盘驱动器接口534与 系统总线523分别相连。这些驱动器和它们相关的计算机可读媒体提供计對几可 执行指令、,结构、禾Mm莫块、以及其它用于计穀几系统520的其他繊的非 易失性的存储。虽然这里描述的本发明的实例环境^顿了一个硬磁盘539, 一可 移动磁盘529和一可移动光盘531 ,也可以使用用来存储数据的其他类型的计算 机可il^某体,包括磁带,闪存卡,数字翻纖,Bemoulli纖,RAM, ROM, 及其类似。
程序代码方法包括一个或多个可以存储在硬盘539、磁盘529、光盘531、 ROM524^RAM525中的禾歸模块,包括一个操作系统535, 一个或多个应用程 序536,其他禾辦模土央537,禾口禾將数据538。 一个用户可以通过键盘540,定位 设备542,戯他输入设备(标出)会射十^* 飽20输入命令或信息,例如, 像这样的, 一个话筒,游戏手柄,游戏控制台,扫描仪,或其类似。这些和其 他输入设备可以通过与系统总线523耦合的串行接口546被连接到处理单^i521。 可割"也,输入设备可以Mil其他接口被纖,例如,^3^f的, 一并行端口, 一游戏端口, 一通用串行总线("USB")端口,或一带电线的端口。 一监视 器547或其他显示设备也通过视频适配器548与系统总线523相连。计算机系统520也可以连接到其4M卜部输出设备(未示出),例如,^i^样的,扬声器和打 印机。
计^m系统520和网络是可互连的,例如,fl^样的, 一个办公室范围或企 业范围的计算机网络, 一内部网,禾口/或互联网。计算机系统520可以与外部资源 交换数据,例如,像这样的,通过这种网络连接的远程计算机系统,远掛《用 辦,禾口/或远禾1 库。
计敦几系统520包括网^維口553, M它计^a系统520/A^卜部资源接收数 据和/或传送繊勤卜部资源。如图5戶脱,网i維口553使iM:驗551与远程计 算机系统583交换数据更为容易。链接551表示网络的一部分。而远程计算机系 统583表示网络中的一个节点。例如,远程计算机系统583可以维持一给为在计 算机系统520所构建的网络响应提供内容的数据库。另一方面,计算丰几系统583 可以是一个从一计穀几系统520雜隹持的麵库中请求内容的服务器计嶽几。
同样地,计算机系统520包括串行接口546,通过它计^l几系统520从外部资 源接收数据和/或传送数据至外部 。串行接口546耦合至调制解调器554,通 过它计對几系统520/^卜部资源接收 和域传送 。可替代地,调制解调器 554可以是一个通过适当接口与计算机系统520相连的符合电缆服务接口规格的 ,("DOCSIS")调讳蠏调器微字用户线("DSL")调审,调器。然而, 如图5所描述的,串行接口 54和调制解调器554使M:链接552与远程计穀几系统 593的数据交换更为容易。链接552表示网络的一部分,而远程计算机系统表示 网络中的一个节点。例如,远程计t^几系统593可以是一个从计算机系统520请 求网络响应的客户^i十^a系统。另一方面,计^tl系统593可以是一个纟合计算 tl^统520掛共网络响应細艮务器计^m系统。
而图5表示一个用于本发明的适合的操作环境,本发明的原理在该系统中可 以得到体现,如果必要可进行适当的修改,以实现本发明的原理。图5所示的环 境仅仅是示范性的决不是表示在本发明原理可以实现的环境中的很大范围中的 一小部分。
本发明的模±央,除了相关的 外,可以从倒可与计^m系统520相关的计 算机可读媒体被存储并访问。例如,部分的这些模块和部分相关的禾歸娜可 以被包括在操作系统535,应用禾號536,禾歸模块537禾口/或禾MiW^538中,用 于系统存储器522的存储。当一大容量剤微备,例如,《ti^羊的,硬纖539,与计^a^统520耦合时,这些模块和相关 ^也可以被存储在该大容量存 储设备中。在一个网络环境中,被描述为与计^m^统520相关的禾歸模块和相 关数据,或者它们的部分,可以被存储在远程存储设备中,例如,像这样的, 与远程计算机系统583和/或远程计算机系统593相关的系统存储器和/或大容量 存储设备。这些模块的执行可以在一如前戶,的分布式环境中进行。
本发明可以在不脱离其精神和本质特点的情况下用其它的指定方式实现。 所描述的实施例是在所有方面仅仅用于示例性的而不是限制性的。因此,本发 明的范围是,由所附的权禾頓求书来说明而不是前面的说明书。所有的在权利 要求范围内的等效的改变都是包含在其范围内的。
权利要求
1. 在一提供网络响应至请求中的客户端计算机系统的服务器计算机系统中,该网络响应潜在地包括来自数据库中的一个或多个数据表的内容,该服务器计算机系统包括一个缓存位置,该缓存位置存储先前从一数据表接收的一部分缓存内容以及与所缓存的数据相对应的缓存的版本信息,一种用于访问将被显示在一请求中的客户端计算机系统的内容的方法,该方法包括下列内容一从一客户端计算机系统接收一网络请求的步骤,该网络请求请求递送一要包括被包含在一数据表中所请求的内容的网络响应,该数据表对于其他可以替换包含在数据表中内容的应用程序通常是可以被访问的,包括替换所请求的内容;一确定要被包括在该网络响应中的内容的至少一部分当前没有被缓存在服务器计算机系统的步骤;一从该数据表访问所请求内容的步骤;一构建该网络响应的步骤,所构建的网络响应包括所请求的内容;一基于在构建该网络响应期间执行的命令向所构建的网络响应的至少一部分分配一数据库缓存依赖性的步骤,该数据库缓存依赖性指示所构建的网络响应的至少一部分依赖于该数据表;和一在服务器计算机系统的一缓存位置缓存所构建的网络响应的至少一部分的步骤;和一响应于该网络请求把所构建的网络响应传送至该客户端计算机系统的步骤。
2. 如权利要求i戶;M的方法,其中戶;M从一客户女m十^m系统接收一网络请求的步骤包括一接收一HTIP请求作为在该客户端计算机系统的一浏览器访问 相^ZURL的结果的步骤。
3. 如权禾腰求l所述的方法,其中所述基于在构建该网络响应期间执行的命 令向所构建的网络响应的至少一部分分配一数据库缓存依赖性的步骤包括一执 行导致所构建的网络响应 于数据库中一数据表的指示的步骤。
4. 如权禾腰求i戶腿的方法,其中戶;M基于在构建该网络响应期间执行的命 令向所构建的网络响应的至少一部分分配一数据库缓存依赖性的步骤包括一执行一导致来自数据表的内容要依赖于该数据表的脚本的计算机可执行指令的步骤。
5. 如权利要求i戶腿的方法,其中戶;f^基于在构建该网络响应期间执行的命 令向所构建的网络响应的至少一部分分配一数据库缓存依赖性的步骤包括一分 配一依赖于一主码记录的缓存记录的步骤,该主码记录依赖于该 表从而当 该主码记录无效时该缓存记录自动无效。
6. 如权利要求i戶; ^的方法,其中所述在服务器计穀几系统的一缓剤立置缓 存所构建的网络响应的至少一部分的步骤包括一缓存完整网络响应的步骤。
7. 如权利要求6所述的方法,其中所述缓存完整网络响应的步骤包括一将该完整网络响应推进到一第二较低级别缓^j立置的步骤。
8. 如权利要求7戶,的方法,进一步包括一当该网络响应无效时服务器计算机系统从第二较低级别缓存位置移除该 完整网络响应的步骤。
9. 如权利要求7所述的方法,其中所述将该完整网络响应推进到一第二较低 级别缓剤立置的步骤包括一将i^^网络响M^l」1化系统响应缓存的步骤
10. 在一提供网络响应至请求中的客户端计算机系统的服务器计算机系统 中,该网络响应潜在地包括来自数据库中一或多个数据表的内容,该服务器计 算机系统包括一个缓存位置,该缓存位置存储先前从一数据表接收的一部分缓 存内容以及与所缓存的数据相对应的缓存的版本信息, 一种用于访问将被显示在一请求中的客户^i十^n系统的内容的方法,该方 ^a括下列内容一从一客户端计算机系统接收一网络请求的步骤,该网络请求传送一要包 括包含在一数据表中的所请求内容的一网络响应,该数据表对于其他可以替换 包含在该数据表中的应用禾歸通常者阿以被访问,包括替换戶;fi青求的内容;一确定要被包括在该网络响应中的内容的至少一部分当前没有被缓存在服 务器计鋭几系统的步骤;一从该i^表访问戶;n青求内容的步骤;一构建该网络响应的步骤,所构建的网络响应包括戶;fi青求的内容;一存储戶;fi青求的内容、使所请求的内容能被有效地访问以满足后续的网络请求的步骤;和一响应于该网络请求ft^f构建的网络响应传送至该客户^i十穀几系统的步骤
全文摘要
本发明涉及用于寄存和检索可以用来使缓存记录无效的数据库表格变化信息。一服务器提供可以包括来自数据库中数据表的内容的网络响应。该服务器提供一可以存储内容(包括来自数据表的内容)的缓存(例如,在系统存储器)以提高随后提供相同内容的效率以满足客户端网络请求。该服务器监视数据表的变化并且,当在一特定的数据表中出现一变化时,使依赖于一特定数据表的缓存记录无效。进而,响应于一客户端网络请求的网络响应,该服务器给至少一部分所构建的网络响应分配数据库缓存依赖性,该部分所构建的网络响应是基于在构建该网络响应期间所执行的命令的。该至少一部分所构建的网络响应随后被缓存在服务器的一缓存位置。
文档编号G06F17/30GK101452484SQ20081018897
公开日2009年6月10日 申请日期2004年6月25日 优先权日2003年6月25日
发明者A·W·史密斯, M·J·皮佐, P·Y·K·吴, R·M·海华德, S·D·古斯里 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1