CN111273863B - 高速缓存管理 - Google Patents
高速缓存管理 Download PDFInfo
- Publication number
- CN111273863B CN111273863B CN202010046308.5A CN202010046308A CN111273863B CN 111273863 B CN111273863 B CN 111273863B CN 202010046308 A CN202010046308 A CN 202010046308A CN 111273863 B CN111273863 B CN 111273863B
- Authority
- CN
- China
- Prior art keywords
- data
- hash
- cache
- client
- client device
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文描述了用于高速缓存管理的概念和技术。根据本文中公开的概念和技术,服务器计算机可被配置成与客户机设备通信,客户机设备被配置成执行高速缓存模块以维护存储了从服务器计算机下载的数据和/或由客户机设备上传到服务器计算机处的数据的高速缓存。服务器计算机可被配置成接收对存储在服务器计算机处的数据的请求。服务器计算机可被配置成用与所请求的数据相对应的散列来对该请求作出响应。客户机设备可:搜索高速缓存以查找散列,如果找到了散列则从高速缓存获取数据,和/或如果没有找到散列则从服务器计算机处下载数据。客户机设备还可被配置成在将数据上传到服务器计算机后更新高速缓存。
Description
本申请是申请日为2013/04/03、申请号为201380018941.1的中国专利申请的分案申请。
背景技术
一些组织在诸地理分布位置之间使用了大量资源获取和维护广域网(WAN)。例如,一些组织安装和/或维护昂贵的地下、空中、和/或海底连接介质,以支持这些位置之间的通信。在一些情况下,大量带宽必须可用于支持这些位置处的操作,并且取决于被选取来支持该带宽和/或这些位置之间的距离的介质可能维护起来可能是昂贵的。尽管安装和维护这些电缆可能是昂贵的,但创建服务于这些分布式位置的多个数据中心并托管这些数据中心可能甚至更昂贵,因此可能是不切实际的。为了解决这些和其他顾虑,一些组织对文件采用增量式更新来减少各个位置之间所需的带宽。
在对文件进行增量式更新时,计算机可被配置成下载指示文件的增量式更新的数据,而不是下载全部文件和/或这些文件的新版本。尽管该方法可减少所传送的数据量,但用户所消耗的对各个文件作出增量式更新的带宽仍可能是大量的。尤其地,尽管反映增量式改变的数据可消耗与经更新文件的整个新版本相比更少的数据,但反映这些增量式改变的数据的大小可能是大量的。例如,文件的增量式更新可包括在该文件中嵌入数据。嵌入在该文件中的数据可包括例如视频数据、或图像数据等。因此,这个文件的增量式更新可包括视频、图像或其他数据,其可消耗大量带宽以分发给用户。类似地,一些类型的数据(诸如,图像和视频)可能不易被划分成增量式片段,并由此在作出任何改变时传送与这些消息或视频相对应的整个文件可能是必要的。
当用户访问服务器计算机以获取增量式更新时,大量数据可被传送给该用户。此外,由于组织所消耗的数据通常被分发给多个用户或被多个用户消耗,因此增量式更新可能会被分发给大量用户。因此,用户所消耗的作出增量式更新的带宽量可能仍然是大量的。例如,在以上场景中更新文件的每一用户可下载嵌入在该文件中的视频或图像数据,并将该文件的他们的版本更新为包括现在嵌入的数据。这样的“增量式”更新在被大量用户复用时可消耗大量数据和/或带宽,并因此在带宽、或传输时间等方面可能是昂贵的。
本文所做出的本公开正是关于这些和其他考虑事项而提出的。
概述
本文描述了用于高速缓存管理的概念和技术。根据本文中公开的概念和技术,服务器计算机托管分布式高速缓存管理服务(“高速缓存服务”)。服务器计算机可被配置成与处于分支机构或其他位置的一个或多个客户机设备和/或客户机对等体进行通信。在一些实施例中,每一个客户机设备和客户机对等体都可执行高速缓存模块以生成和/或维护高速缓存。该高速缓存可被一个或多个客户机设备或客户机对等体用来存储从服务器计算机下载的数据和/或上传到服务器计算机的数据。根据各个实施例,高速缓存由与分支机构处的各设备相关联的分布式高速缓存提供,并且因此可包括与分支机构处的各个设备相关联的存储器设备和/或其他存储设备。在一些其他实施例中,高速缓存可由分支机构或其他位置处的数据存储单元(诸如,数据库、服务器计算机和/或其他设备)来提供。
服务器计算机和/或由服务器计算机执行的高速缓存服务可被配置为接收对存储在服务器计算机处的数据的请求。该请求可包括对数据的散列的请求。如上所述,服务器计算机还可被配置成确定请求方和/或服务器计算机是否被配置用于进行高速缓存。如果服务器计算机和请求方两者都被配置用于进行高速缓存,则服务器计算机可用与所请求的数据相对应的散列来对该请求作出响应。在一些实施例中,服务器计算机还被配置成确定提供散列与尽管是对散列的请求但提供所请求的数据相比更高效还是更不高效。如果提供散列将比提供数据更不高效,则服务器计算机可被配置成改为用该数据来响应于对散列的请求。
否则,服务器计算机可用所请求的散列来响应于对散列的请求。在接收到散列后,客户机设备、客户机对等体和/或其他请求方可搜索分布式高速缓存(“高速缓存”),以确定分支机构或其他位置处的任何用户先前是否已访问了与这些散列相关联的数据。因此,本文中的描述涉及搜索高速缓存,但应当理解,也可搜索高速缓存库或其他数据以确定这些散列和/或数据是否被分支结构或其他位置处的一个或多个设备存储。如果确定高速缓存中存在这些散列和/或数据,则客户机设备、客户机对等体或其他请求设备可访问存储该数据的设备并从那个设备获取该数据。由此,对服务器计算机处接收到的数据的请求可以用可用于定位该数据的本地副本的散列而非通过从服务器计算机下载该数据来作出响应。
如果该客户机设备、客户机对等体和/或其他请求方在高速缓存中没有标识出散列和/或数据,则请求方可用另一请求来对服务器作出响应。第二请求可请求来自服务器计算机的数据。在一些实施例中,第二请求包括或伴随有与所请求的数据相对应的散列的请求。因此,请求方可被配置成将数据和/或散列存储在高速缓存处。由此,本文中公开的概念和技术的实施例可包括更新和/或维护高速缓存。
根据本文中公开的概念和技术的另一方面,分支结构或其他位置的设备可被配置为在更新服务器计算机的数据后更新高速缓存。由此,例如,如果客户机设备将经更新的文件上传到服务器计算机处,则该客户机设备可被配置为请求与该数据相对应的散列,从服务器计算机接收散列,并将该散列存储在高速缓存和/或相关联的高速缓存库中。由此,当第一请求方试图下载经更新的数据时,服务器计算机所提供的散列可在高速缓存中找到,并且数据可在本地获取,而无需以上所描述的用于获取数据、散列和/或将数据和散列存储在高速缓存中的操作。
应当理解,上述主题可被实现为计算机控制的装置、计算机进程、计算系统或诸如计算机可读存储介质等制品。通过阅读下面的详细描述并审阅相关联的附图,这些及各种其他特征将变得显而易见。
提供本概述是为了以简化的形式介绍将在以下具体实施方式中进一步描述的概念选择。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在将本概述用来限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部分中所提及的任何或所有缺点的实现。
附图简述
图1是示出用于本文所公开的各实施例的说明性操作环境的系统图。
图2是示出根据说明性实施例的用于管理集成高速缓存的方法的各方面的流程图。
图3是示出根据说明性实施例的使用集成高速缓存来提供数据的方法的各方面的流程图。
图4是示出根据说明性实施例的用于将数据上传到高速缓存服务的方法的各方面的流程图。
图5是示出能够实现本文中所呈现的实施例的各方面的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。
详细描述
下面的详细描述涉及用于高速缓存管理的概念和技术。根据本文中描述的概念和技术,服务器计算机托管高速缓存管理服务(“高速缓存服务”)。该服务器计算机可被配置成与通过执行高速缓存服务来以有限的或受约束的带宽与处于分支机构或其他位置的一个或多个客户机设备和/或客户机对等体进行通信。在一些实施例中,一个或多个客户机设备或客户机对等体可被配置成执行高速缓存模块。高速缓存模块可被客户机设备和/或客户机对等体执行来生成和/或维护高速缓存。该高速缓存可被一个或多个客户机设备或客户机对等体用来存储从服务器计算机下载的数据和/或上传到服务器计算机的数据。根据各实施例,高速缓存由与分支机构或其他位置的设备相关联的分布式高速缓存提供。因此,本文中描述的高速缓存的功能可以由与分支机构处的各个设备相关联的一个或多个存储设备或其他存储设备提供。在一些其他实施例中,高速缓存的功能可以由与分支机构或其他位置相关联的数据存储元件(诸如数据库)、服务器计算机和/或其他数据存储设备来提供。
服务器计算机和/或由服务器计算机执行的高速缓存服务可被配置为接收对存储在服务器计算机处的数据的请求。该请求可包括和/或可伴随有对与该数据相对应的散列的请求。服务器计算机还可被配置成确定请求方和/或服务器计算机是否被配置用于进行高速缓存。如果服务器计算机和请求方两者都被配置用于进行高速缓存,则服务器计算机可用与所请求的数据相对应的散列来对该请求作出响应。服务器计算机可用所请求的散列来响应对散列的请求。在一些实施例中,服务器计算机还被配置成生成散列和/或确定提供散列与提供所请求的数据相比是否更不高效。如果服务器计算机确定提供所请求的散列将比提供数据本身更不高效,则服务器计算机可被配置成改为用该数据来响应于对散列的请求。
客户机设备、客户机对等体和/或另一请求方可搜索高速缓存以确定分支机构或其他位置处的任何用户先前是否已访问了与这些散列相关联的数据。尽管本文中的描述涉及搜索高速缓存,但应当理解,也可搜索高速缓存库或其他数据以确定这些散列和/或数据是否被分支结构或其他位置处的一个或多个设备存储。如果确定在高速缓存中存在这些散列和/或数据,则客户机设备、客户机对等体或其他请求设备可访问存储该数据的设备并从那个设备获取该数据。由此,对服务器计算机处接收到的数据的请求可以用可用于定位该数据的本地复本的散列而非通过从服务器计算机下载该数据来作出响应。
如果该客户机设备、客户机对等体和/或其他请求方在高速缓存中没有标识出散列和/或数据,则请求方可用另一请求来对服务器作出响应。第二请求可请求来自服务器计算机的数据。在一些实施例中,第二请求包括或伴随有与所请求的数据相对应的散列的请求。因此,请求方可被配置成将数据和/或散列存储在高速缓存处。因此,本文中公开的概念和技术的实施例可包括更新和/或维护高速缓存。
分支机构或其他位置处的客户机设备、客户机对等体和/或其他设备还可被配置成在将数据上传到服务器计算机后更新高速缓存。因此,当允许进行高速缓存的客户机设备或其他设备将经更新的文件上传到服务器设备时,该客户机设备或其他设备可被配置成请求与该数据相对应的散列。该散列可接收自服务器计算机并可被存储在高速缓存和/或相关联的高速缓存库中。由此,当第一请求方试图下载经更新的数据时,服务器计算机所提供的散列可在高速缓存中找到,并且数据可在本地获取,而无需以上所描述的用于获取数据、散列和/或将数据和散列存储在高速缓存中的操作。
尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模块的一般上下文中提出了本文描述的主题,但是本领域技术人员将认识到,其他实现可以结合其他类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。此外,本领域技术人员将明白,可以利用其他计算机系统配置来实施本文描述的主题,这些计算机系统配置包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等等。
在以下详细描述中,参考了构成详细描述的一部分并作为说明示出了各具体实施方式或示例的附图。现在参考附图(全部若干附图中相同的标号表示相同的元素),将提出用于高速缓存管理的计算系统、计算机可读存储介质和计算机实现的方法的各方面。
现在参考图1,将描述用于此处所提出的各实施例的一个操作环境100的各方面。图1中所示的操作环境100包括客户机设备102。根据各个实现,客户机设备102可被配置成作为通信网络(“网络”)104的一部分来操作或与网络104进行通信。根据各个实现,客户机设备102的功能是由诸如作为示例个人计算机(“PC”)(诸如台式计算机、平板计算机或膝上型计算机系统)的计算设备来提供的。客户机设备102的功能还可以由其他类型的计算设备来提供,包括但不限于,服务器计算机、手持式计算机、上网本计算机、嵌入式计算机系统、个人数字助理、移动电话、智能电话或其他计算设备。因此,尽管客户机设备102在本文中被描述为个人计算设备(诸如台式机或膝上型计算机),但应当理解,此实施例是说明性的,并且不应当被解释为以任何方式进行限制。
客户机设备102被配置成执行操作系统106以及一个或多个应用程序,诸如高速缓存模块108和/或其他应用程序。操作系统106是用于控制客户机设备102的操作的计算机程序。应用程序是被配置成在操作系统106之上执行以提供如本文所描述的功能的可执行程序。虽然高速缓存模块108被示为客户机设备102的组件,但应当理解,高速缓存模块108可被具体化成或被具体化在独立的设备或其组件中。此外,如参考以下描述将理解的,除客户机设备102之外或代替客户机设备102,其他设备也可执行高速缓存模块108。因此,所示实施例是说明性的,且不应该被解释为以任何方式构成限制。
高速缓存模块108可被配置成将数据保存在高速缓存110中以及从高速缓存110检索数据。高速缓存110或其部分可以由存储在客户机设备102处的数据和/或存储在客户机设备102远程的数据来具体化。在其他实施例中,高速缓存110的部分或其组件由多个设备提供来作为分布式高速缓存。例如,如图1所示,客户机设备102和一个或多个客户机对等体112A-N(此后被统称为和/或一般被称为“客户机对等体112”)可被配置成一起存储高速缓存以作为与分支机构、公司办公室或广域网(“WAN”)的其他分支或部分相关联的分布式高速缓存。因此,虽然高速缓存模块108和高速缓存110仅仅是相对于客户机设备102示出的,但应当理解,一个或多个客户机对等体112可被配置成执行高速缓存模块108和/或提供与高速缓存模块110相关联的数据存储。因此,所示出的实施例应当被理解为是说明性的,并且不应被解释为以任何方式构成限制。
高速缓存模块108也可被配置成与服务器计算机116所托管的高速缓存服务114进行通信,服务器计算机116作为网络104的一部分或与网络104进行通信。服务器计算机116可被配置成通过执行高速缓存服务114来与高速缓存模块108进行通信以为高速缓存管理提供本文中所描述的功能。根据各实施例,服务器模块116还可被配置为存储数据118和/或散列120。
服务器计算机116所存储的数据118可包括服务器计算机116所托管的任何数据。因此,数据118可包括例如因特网内容、内联网内容、网页、网站、应用、文件、媒体内容、或其他数据等。根据本文中所描述的概念和技术的各种实现,数据118包括数据元素。如本文中所使用的,术语“数据元素”包括但不限于文件或其他数据的块或部分。例如,数据元素可根据来自华盛顿州雷蒙德市的微软公司的MS-FSSHTTP协议来生成。应当理解,本实施例是说明性的,并且不应被解释为以任何方式进行限制。
MS-FSSHTTP协议可用于将文件或其他数据(诸如数据118)分成与该文件和/或相关联的元数据相对应的二进制数据的不可变块或部分。如上所述,这些块或部分在本文中被称为“数据元素”和/或数据118。当文件(诸如,数据118)被请求时,服务器计算机116可标识并获取多个数据元素,此多个数据元素可个别地向请求方提供,和/或被重新组装以形成请求方所请求的文件或其他数据118。因此,单个文件(诸如视频文件)可被划分成一起表示该单个文件的多个数据元素。因此,在对这些文件作出改变时,客户机设备102和客户机对等体112可访问已改变的数据118而非下载整个文件。
在一些其他实施例中,服务器计算机116可被配置成使用这些数据元素来支持对文件或其他数据118的增量式更新。因此,在文件被更新时,服务器计算机116可被配置成标识反映该文件的已被改变的部分的数据元素,并可被配置成替换由服务器计算机116存储的文件的之前版本的数据元素。因此,在请求方设备处更新文件可包括通过仅提供改变的数据元素来实现增量式更新。由于文件的增量式更新一般被理解,因此本文中没有更详细地描述增量地更新文件和/或MS-FSSHTTP协议和/或其他协议的这些或其他方面。
根据本文中公开的概念和技术的一些实施例,服务器计算机116被配置为生成与这些数据元素相对应的密码散列(诸如散列120),并将散列120存储在服务器计算机116处以提供本文中描述的用于高速缓存管理的功能。具体地,高速缓存服务114可被配置成接收对由服务器计算机116所托管的数据118的请求。如上所述,对数据118的请求可有效地或显式地对应于一个或多个数据元素。因此,本文中描述的“数据118”必须被理解为包括数据元素。这些请求可接收自客户机设备102和/或客户机对等体112。根据本文中公开的概念和技术的各实施例,这些请求包括对与所请求的数据118相对应的一个或多个散列120的请求。
服务器计算机116可被配置成标识与所请求的数据118相关联的散列120,并将散列120提供给诸如客户机设备102和/或客户机对等体112之类的请求设备,而不是将实际的数据118提供给客户机设备102和/或客户机对等体112。客户机设备102和/或客户机对等体112可执行高速缓存模块108将搜索高速缓存110和/或高速缓存库(未被示出)以查找引用从服务器计算机116接收到的散列120的数据。因此,高速缓存模块108可被配置成确定客户机设备102和/或客户机对等体112之一是否先前已下载了、上传了和/或以其他方式访问了与散列120相关联的数据118和/或将散列120与数据118关联的存储数据。
如果高速缓存模块108在高速缓存110或高速缓存库中标识出了数据118和/或散列120,则高速缓存模块108可被配置成访问高速缓存110中的数据118。如上所述,高速缓存110可包括由客户机设备102和一个或多个客户机对等体112提供的分布式高速缓存。由此,应当理解,高速缓存模块108可被配置成通过从客户机设备102和/或客户机对等体112中的一个或多个中获取数据118来访问数据118。应当理解,本实施例是说明性的,并且不应被解释为以任何方式进行限制。
高速缓存模块108还可被配置成构建和维护高速缓存110。因此,例如如果高速缓存模块108没有找到散列120和/或相关联的数据118,则高速缓存模块108可被配置成生成对数据118的请求,并将该请求传送给服务器计算机116。作为对该请求的响应,服务器计算机116可将数据118传送至客户机设备102。服务器计算机116还可将散列120与数据118一起传送,但情况并非一定如此。如以下将更详细解释的,尤其是参考图3,服务器计算机116还可被配置成确定提供散列120与提供数据118相比是否更不高效,并在合适的情况下改为用数据118来响应于对散列120的请求。
在接收到数据118和/或散列120后,高速缓存模块108可被配置成将数据118和/或散列120存储在高速缓存110中。在一些情况下,如上所述,高速缓存模块108还可将散列120存储在与高速缓存110相关联的高速缓存库中。由此,数据118的将来请求方在搜索高速缓存110以查找由服务器计算机116响应于该请求而标识出的散列120后可以在高速缓存110中标识出这些散列并获取数据118。以下参考图2-4更详细地描述了用于获取散列120、数据118并管理高速缓存110的方法的各示例实施例。
根据各实施例,高速缓存模块108还可被配置成在将数据118上传到服务器计算机116后更新高速缓存110。在一个实施例中,高速缓存模块108可被配置成在将数据118上传到服务器计算机116后请求并接收来自服务器计算机116的散列120。高速缓存模块108还可被配置成将所上传的数据118和所接收的散列120存储在高速缓存110中。因此,本文中揭示的概念和技术的一些实施例包括在创建后将数据118和/或散列120存储在高速缓存110中,从而消除第一后续请求方要下载数据118并将数据118存储在高速缓存110中的需要。因此,一些实施例可用于进一步减少由分支机构和服务器计算机116之间的通信所消耗的带宽,但是在一些实例中往返数可能相同或更大。应当理解,本实施例是说明性的,并且不应被解释为以任何方式进行限制。
根据本文中描述的概念和技术,服务器计算机102可被配置成与分支机构或其他位置处的客户机设备102和客户机对等体进行通信。客户机设备102和一个或多个客户机对等体112可被配置成执行高速缓存模块108。高速缓存模块108可被执行来生成和/或维护高速缓存110和/或高速缓存库。高速缓存110可用于存储从服务器计算机116下载的和/或上传到服务器计算机116的数据118,并且可以是由客户机设备102和客户机对等体112提供的分布式高速缓存。
服务器计算机116可被配置成接收对存储在服务器计算机116处的数据118的请求。该请求可包括和/或可伴随有对与数据118相对应的散列120的请求。服务器计算机116可以用与所请求的数据118相对应的散列120来对该请求作出响应,除非该响应与提供数据118相比将更不高效,如以上所解释的。客户机设备102可搜索高速缓存110以确定分支机构和其他位置处的任何设备是否已访问了与散列120相关联的数据118。如果确定在高速缓存110中存在散列120和/或数据118,则客户机设备102可访问存储数据118的设备并获取数据118。因此,对在服务器计算机116处接收到的数据118的请求可以用可被客户机设备102用来定位数据118的本地副本的散列120来响应,而非通过从服务器计算机116下载数据118来响应。
如果客户机设备102在高速缓存110中没有标识出散列120和/或数据118,则客户机设备102可生成对数据118的请求并将该请求传送至服务器计算机116。在一些实施例中,第二请求包括或伴随有对与所请求的数据118相对应的散列120的请求。因此,客户机设备102可被配置成将数据118和/或散列120存储在高速缓存110处以维护和/或管理高速缓存110。根据各实施例,客户机设备102还可被配置成在将数据118上传到服务器计算机116后更新高速缓存110。客户机设备102可被配置成请求与客户机设备102所上传的数据118相对应的散列120。散列120可接收自服务器计算机116并被存储在高速缓存110中。因此,当后续请求方试图从服务器计算机116下载数据118并从服务器计算机116接收散列120时,该请求方可在高速缓存110中标识出散列120并在本地获取数据118。
图1示出一个客户机设备102、一个网络104、多个客户机对等体112以及一个服务器计算机116。然而,应该理解,操作环境100的一些实现包括多个客户机设备102、多个网络104、单个客户机对等体112和/或多个服务器计算机116。因此,所示实施例应该被理解为说明性的,并且不应该被解释为以任何方式构成限制。
现在转向图2,根据一示例性实施例,将详细描述用于管理集成高速缓存的方法200的诸方面。应该理解,不一定按任何特定次序来呈现此处公开的方法的操作,并且用替换次序来执行部分或全部操作是可能的且可构想的。为了易于描述和说明,按所示次序来呈现各操作。可以添加、省略和/或同时执行操作,而不脱离所附权利要求书的范围。
还应该理解,所示方法可以在任何时候结束并且不必各自完整地执行。所述方法的部分或全部操作和/或基本上等价的操作可以通过执行计算机存储介质上所包括的计算机可读指令来执行,如本文所定义的。如在说明书和权利要求书中使用的术语“计算机可读指令”及其变型,在本文是用来广泛地包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等等。计算机可读指令可以在各种系统配置上实现,包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持式计算设备、基于微处理器的可编程消费电子产品、其组合等等。
因此,应该理解,本文所述的逻辑操作被实现为:(1)一系列计算机实现的动作或运行于计算系统上的程序模块;和/或(2)计算系统内的互连的机器逻辑电路或电路模块。该实现是取决于计算系统的性能及其他要求的选择问题。因此,此处描述的逻辑操作被不同地称为状态、操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以用软件、固件、专用数字逻辑及其任何组合来实现。
出于说明和描述本公开的概念的目的,方法200被描述为由客户机设备102通过执行高速缓存模块108来执行。应该理解,该实施例是说明性的,并且不应被视为以任何方式进行限制。尤其地,包括但不限于客户机设备102的各设备可被配置成通过执行包括但不限于高速缓存模块108的各软件模块来提供本文中描述的与方法200有关的功能性。
方法200在操作202开始,在操作202,客户机设备102接收对由服务器计算机116所托管的数据118的请求。对数据118的请求可包括在客户机设备102处接收到的用于访问文件的输入,包括但不限于导航到目录中的文件、检测对与数据118相关联的链接或其他标识符的选择,和/或以其他方式接收对数据118的请求。操作202中请求的数据118可对应于几乎任何类型的数据,包括但不限于,网页、web应用、网站、文档、文本、电子表格、邮件数据、视频、音频、或其他媒体内容、其他数据和/或其组合。
方法200从操作202行进到操作204,在操作204,用户设备102确定是否启用了高速缓存110。在一些实施例中,确定是否启用了高速缓存包括确定用户、管理员或其他授权用户是否启用了高速缓存模式。因此,在一些实施例中,操作204的功能性可对应于客户机设备102处的“选择进入(opt-in)”或“选择退出(opt-out)”操作,其中客户机设备102选择使用高速缓存模式(选择进入)或选择不使用高速缓存模式(选择退出)。因此,在一些实施例中,操作204包括确定是否客户机设备102和服务器计算机116两者都同意使用散列120。如果客户机设备102或服务器计算机116中的任一方拒绝使用散列120,则客户机设备102可确定散列模式没有被启用,并可改为依赖于对实际的数据118进行共享。在其他实施例中,确定高速缓存是否被启用包括确定软件设置或功能性是否包括对高速缓存模式的使用。在一个构想的实施例中,客户机设备102可在操作204确定客户机设备102和/或服务器计算机116是否被配置成提供由华盛顿州雷蒙德市的微软公司的操作系统WINDOWS和WINDOWSSERVER COMPUTER家族中的一些成员所提供的BRANCH CACHE(分支高速缓存)服务。应当理解,这些实施例是说明性的,而不应被解释为以任何方式构成限制。
如果客户机设备102在操作204中确定高速缓存未被启用,则方法200可前进到操作206。在操作206,客户机设备102从服务器计算机116获取数据118。因此,可以领会,在操作206,客户机设备102可以以常规方式来请求数据118。类似地,虽然在图2中没有示出,但服务器计算机116可以以常规方式来对该请求作出响应。
如果客户机设备104在操作204确定高速缓存被启用,则方法200前进到操作208。在操作208,客户机设备102生成对来自服务器计算机116的散列120的请求。对散列120的请求可被包括在对数据118的请求中。因此,客户机设备102可被配置成将数据118与高效地向服务器计算机116通知数据118被请求并且散列120在可用的情况下将被提供的标志、字段或其他指示符一起请求。在一些其他实施例中,客户机设备102可生成对散列120的请求,并且服务器计算机116可确定响应于该请求将提供散列120还是数据118。以下参考图3更详细地描述了服务器计算机116的用于确定将提供数据118还是散列120的功能性的一些方面。
方法200从操作208前进至操作210,在操作210,客户机设备102确定在操作208请求的散列120是否被服务器计算机116返回。因此,客户机设备102可在操作210确定所请求的散列120在服务器计算机116处可用还是不可用。如果客户机设备102在操作210确定服务器计算机116没有返回散列120,则方法200前进到如上所述的操作206。因此,客户机设备102可被配置成响应于确定服务器计算机116没有返回散列120,则请求来自服务器计算机116的数据118。因此,客户机设备102可被配置成确定:服务器计算机116是否已确定相对于散列120来说,向客户机设备102提供数据118更高效。这将参照图3在下文中更详细地解释。
如果客户机设备102在操作210确定服务器计算机116返回了散列120,则方法200前进到操作212。在操作212,客户机设备102将所返回的散列120添加到高速缓存110。因此,客户机设备102可被配置成响应于从服务器计算机116接收数据而维护和/或更新高速缓存110。因此,当从服务器计算机116检索到数据118时,高速缓存110可被更新。
方法200从操作212前进到操作214,在操作214,客户机设备102检查高速缓存110以确定高速缓存110是否包括于在操作210获取的散列120相对应的数据118。因此,可以领会,客户机设备102可在操作214确定共享或提供高速缓存110的客户机对等体112或其他设备中的一个或多个先前是否已检索到了在操作202请求的数据118。
如果客户机设备102在操作214确定与在操作210获取的散列120相对应的数据118不可用,则方法200可前进到操作216。在操作216,客户机设备102可生成对与来自服务器计算机116的散列120相对应的数据118的新请求。因此,客户机设备102可确定数据118是否先前已被客户机设备102、客户机对等体112、和/或使用或访问高速缓存110的其他设备访问或下载过。因此,客户机设备102可下载数据118并将该数据存储在高速缓存110中。
方法200从操作216行进至操作218。在操作218,客户机设备102可将数据118存储在高速缓存110中,如前面所提到的。客户机设备102还可将在操作210接收到的散列120存储在高速缓存库和/或高速缓存110中。因此,当客户机设备102或其他设备在方法200的后续迭代中搜索高速缓存110以查找散列120时,可以定位并使用数据118,而不是从服务器计算机116来获取数据118。
从前面对图2的描述中可以领会,在第一次请求来自服务器计算机116的数据118的特定实例时,客户机计算机102可经历等待时间和/或低效。然而,在对数据118的后续请求中,本文中公开的用于高速缓存管理的概念和技术可用于在获取数据118时使用在服务器计算机116和客户机设备102或客户机对等体112中的一个或多个之间的更少的带宽或其他资源并用更少的等待时间实现增加的效率,如本文中所描述的。
尤其地,如果客户机设备102在操作214确定与在操作210获取的散列120相对应的数据118可用,则方法200前进到操作220。在操作220,客户机设备102从高速缓存110获取数据118。因此,客户机设备102可以从本地对等体(诸如客户机对等体112)获取数据118,并由此可能不需要从服务器计算机116下载数据118。当本文中公开的概念和技术被扩展到企业站点(诸如,分支结构或其他类似的位置)时,可以领会使用本文中公开的概念和技术对高速缓存管理的影响。
在一个构想的实施例中,呈现可由与分支机构相关联的用户修改,并被保存到服务器计算机116处以供各对等体分发或下载。在这个示例中,分支机构包括25个用户,并且对呈现的修改可包括嵌入具有20兆字节大小的视频文件。因此,如果分支结构处的所有用户都更新该呈现的他们的版本,则最小500兆字节的带宽将被消耗。根据本文中公开的概念和技术的各实施例,这些用户可改为从分支机构处的最初将该数据上传到服务器计算机116的对等体处获取该数据。由于仅散列120在服务器计算机116和对等体之间传送,因此可使用少得多的带宽。
在以上示例中,如以下将参考图4更详细解释的,由于上传对等体可在上传数据118时将数据118存储在高速缓存110中,因此这25个对等体中每一个对等体可被要求从服务器计算机116下载视频数据。因此,这25个用户改为可从服务器计算机116获取散列120,并且可随后从高速缓存110获取数据118。如一般所理解的,可在比特或字节方面而非兆字节方面调整散列120的大小。因此,在本示例中,对等体和服务器计算机116之间在交换信息以从高速缓存110下载视频数据的25个实例时的总带宽可从超过500兆字节减少为几百千字节。因此,可以领会,在本示例中,本文中公开的用于高速缓存管理的概念和技术可有助于实现带宽消耗的显著减少,并且结果实现与分支机构相关联的操作成本的显著减少。
方法200从操作220前进到操作222。类似地,方法200可从操作206前进到操作222。方法200还可从操作218前进到操作222。方法200在操作222结束。
现转至图3,呈现了根据说明性实施例的用于使用集成高速缓存来提供数据的方法300的各方面。出于示出并描述本公开的概念的目的,方法300被描述为由服务器计算机116通过执行用于提供本文中描述的高速缓存服务114的计算机可执行指令来执行。应该理解,该实施例是说明性的,并且不应被视为以任何方式进行限制。尤其地,包括但不限于服务器计算机116的各设备可被配置成通过执行包括但不限于高速缓存服务114的各软件模块来提供本文中描述的与方法300有关的功能性。
方法300始于操作302,在操作302,服务器计算机116接收对散列120的请求。在一些实施例中,在操作302接收到的请求可以但不一定对应于由客户机设备102生成的请求,诸如以上参考图2的操作208所描述的。在一些实施例中,客户机设备102或其他设备经由对散列120的显式请求来请求散列120,并且在其他实施例中,散列120是作为对数据118的请求的一部分而被请求的。因此,在操作302接收到的请求可包括对数据118以及用于请求散列120的标志或其他功能性的请求。
方法300从操作302前进到操作304,在操作304,服务器计算机116确定在操作302请求的散列是否将被发送。根据各实施例,服务器计算机116可确定例如散列120的大小、与散列120相关联的数据118的大小、生成散列120所需的时间(如果这些散列尚未被服务器计算机116存储的话)和/或其他信息。因此,服务器计算机116可不仅考虑数据118和/或散列120的大小,还可考虑提供数据118和/或散列120所需的时间。
服务器计算机116可将与生成和/或提供散列120相关联的大小以及时间与提供数据118进行比较。基于这个比较和/或其他信息,服务器计算机116可被配置成确定提供散列120还是提供数据118更高效。同样,如上所述,随后将使用散列120(如果被提供给客户机设备102的话)来搜索高速缓存以查找数据118。因此,如果数据118未被存储在高速缓存110处的话,服务器计算机116还可考虑可能需要的客户机设备102和服务器计算机116之间的多个通信。例如,如果数据118在大小方面接近散列120的大小,则服务器计算机116可被配置成基于提供数据118的消耗将更高效而代替提供散列120或除提供散列120之外还提供数据118。服务器计算机116还可被配置成存储数据或与数据118相关联的用于指示将来是否将提供散列120的标志。
如果服务器计算机116在操作304确定散列120不将被发送,则方法300前进到操作306。在操作306,服务器计算机116可将数据118而非散列120发送给客户机设备102。如上所述,服务器计算机116还可在需要时将散列120与数据118一起发送,使得散列120和数据118可被存储在高速缓存110处,但是情况不一定如此。
如果服务器计算机116在操作304确定散列120不将被发送,则方法300前进到操作308。在操作308,服务器计算机116可将散列120发送给客户机设备102。方法300从操作308前进到操作310。方法300还可从操作306前进到操作310。方法300在操作310处结束。
现转向图4,呈现了根据所示实施例的用于将数据上传到高速缓存服务的方法400。出于说明和描述本公开的概念的目的,方法400被描述为由客户机设备102通过执行高速缓存模块108来执行。应该理解,该实施例是说明性的,并且不应被视为以任何方式进行限制。尤其地,包括但不限于客户机设备102的各设备可被配置成通过执行包括但不限于高速缓存模块108的各软件模块来提供本文中描述的与方法400有关的功能性。
方法400始于操作402,在操作402,客户机设备102检测或确定对客户机设备102处生成的数据118的上传已被请求或开始。因此,例如,客户机设备102可检测从客户机设备102的文件传输的发起,以诸如作为示例将文件或其他类型的数据118保存到服务器计算机116中。根据各实施例,客户机设备102可被配置成检测对数据118的传输。在一些其他实施例中,客户机设备102可被配置成在上传或以其他方式传输数据118时向与客户机设备102相关联的用户提供使用本文中描述的用于高速缓存管理的功能性的选项。由此,操作402可包括接收对用于提供本文中参考图4描述的功能性的选项或其他功能性的选择。
方法400从操作402前进到操作404,在操作404,客户机设备102确定高速缓存110是否被启用。在一些实施例中,如操作404中所示的确定高速缓存是否被启用可以但不必与以上参考图2的操作404描述的功能性类似或甚至相同。如果客户机设备102在操作404确定高速缓存未被启用,则方法400前进到操作406。在操作406,客户机设备102可将在操作402生成的数据118推送到服务器计算机116。因此,如果客户机设备102确定高速缓存未被启用,则如果需要的话,可将数据118以常规方式传送到服务器计算机116。
如果客户机设备102在操作404确定高速缓存被启用,则方法400前进到操作408。在操作408,客户机设备102将在操作402生成的数据118连同对生成并返回与数据118相对应的散列120的请求一起推送到服务器计算机116。返回散列120的请求可以与数据118包括在一起作为与存储数据118的请求相关联的标志或其他指示符。在一些其他实施例中,对散列120的请求可以由客户机设备102生成以作为分开的请求。不管该请求如何被发送给服务器计算机116,服务器计算机116可被配置成识别对散列120的请求并响应于该请求而生成散列120。
方法400从操作408前进到操作410,在操作410,客户机设备102接收来自服务器计算机116的散列120。方法400从操作410前进至操作412,在操作412,客户机设备102将在操作408接收到的散列120添加到高速缓存110。如上所解释的,散列120和/或用于将散列120与数据118相关联和/或标识数据118被存储的位置的数据也可被存储在与高速缓存110相关联的高速缓存库中。因此,可以领会,客户机设备102可被配置成在数据118的创建期间以及在数据118从服务器计算机116的第一次下载期间,或者在数据118的创建期间而不在数据118从服务器计算机116的第一次下载期间维护高速缓存110,如以上参考图2所描述的。
因此,可以领会,本文中公开的概念和技术的一些实施例可以在上传数据118期间用数据118和散列120来更新高速缓存110,从而消除了对数据118的第一次下载、对散列120的请求和/或对数据118和/或散列的存储,如上所描述的。方法400从操作412前进至操作414。方法400还可从操作406前进到操作414。方法400在操作414处结束。
尽管以上描述已提及了对来自客户机设备102的数据118的请求,但应当理解,该实施例仅仅是本文中描述的概念和技术的一个示例。尤其地,在一些实施例中,客户机设备102可以是用于获取数据118和/或对数据118进行高速缓存的代理设备。因此,客户机设备102在一些实施例中可用作一些上下文中的服务。因此,如以上参考图1所陈述的,客户机设备102的功能性可以由现实服务器计算机或虚拟服务器计算机来提供。因此,所描述的实施例应该被理解为说明性的,并且不应该被解释为以任何方式进行限制。
图5示出了能够执行在此所述的用于高速缓存管理的软件组件的设备的示例性计算机架构500。由此,图5所示的计算机体系结构500示出服务器计算机、移动电话、PDA、智能电话、台式计算机、上网本计算机、平板计算机、和/或膝上型计算机的体系结构。计算机架构500可用于执行本文所呈现的软件组件的任何方面。
图5所示的计算机体系结构500包括中央处理单元502(“CPU”)、包括随机存取存储器506(“RAM”)和只读存储器(“ROM”)508在内的系统存储器504、以及将存储器504耦合至CPU 502的系统总线510。基本输入/输出系统被存储在ROM508中,该系统包含帮助诸如在启动期间在计算机架构500中的元件之间传输信息的基本例程。计算机架构500还包括用于存储操作系统106和高速缓存模块108的大容量存储设备512。尽管未在图5中示出,但大容量存储设备512还可被配置成在需要时将数据118、散列120和/或其他数据存储在高速缓存110、高速缓存服务器计算机114中。
大容量存储设备512通过连接至总线510的大容量存储控制器(未示出)连接至CPU502。大容量存储设备512及其相关联的计算机可读介质为计算机架构500提供非易失性存储。虽然对此处包含的计算机可读介质的描述引用了诸如硬盘或CD-ROM驱动器之类的大容量存储设备,但是本领域的技术人员应该明白,计算机可读介质可以是可由计算机体系结构500访问的任何可用计算机存储介质或通信介质。
通信介质包括诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何传递介质。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被更改或设定的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包括在计算机可读介质的范围之内。
作为示例而非限制,计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机介质包括但不限于,RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术、CD-ROM、数字多功能盘(“DVD”)、HD-DVD、蓝光(BLU-RAY)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算机架构500访问的任何其他介质。为了权利要求书的目的,短语“计算机存储介质”及其变型不包括波、信号和/或其他瞬态和/或无形通信介质本身。
根据各实施例,计算机架构500可以使用通过诸如网络104之类的网络到远程计算机的逻辑连接来在联网环境中操作。计算机架构500可以通过连接至总线510的网络接口单元514来连接到网络104。应当领会,网络接口单元514还可以被用来连接到其它类型的网络和远程计算机系统,例如,客户机对等体112和/或其他设备。计算机架构500还可以包括用于接收和处理来自多个其他设备的输入的输入/输出控制器516,这些设备包括键盘、鼠标或者电子指示笔(未在图5中示出)。类似地,输入/输出控制器516可以向显示屏、打印机或其他类型的输出设备(也未在图5中示出)提供输出。
应当理解,本文所描述的软件组件在被加载到CPU 502中并被执行时可以将CPU502和总体计算机架构500从通用计算系统变换成为被定制为促进本文提出的功能的专用计算系统。CPU 502可从任何数目的晶体管或其它分立电路元件中构造,这些元件可以独立地或集体地呈现任何数目的状态。更具体而言,CPU 502可以响应于包含在本文所公开的软件模块中的可执行指令而作为有限状态机来操作。这些计算机可执行指令可以通过指定CPU 502如何在各状态之间转移来变换CPU 502,由此变换了构成CPU 502的晶体管或其它分立硬件元件。
对本文所提出的软件模块的编码也可变换本文所提出的计算机可读介质的物理结构。在本说明书的不同实现中,物理结构的具体转换可取决于各种因素。这样的因素的示例可以包括,但不仅限于:用于实现计算机可读介质的技术、计算机可读介质被表征为主存储器还是辅存储器等等。例如,如果计算机可读介质被实现为基于半导体的存储器,则本文所公开的软件可以通过变换半导体存储器的物理状态而在计算机可读介质上编码。例如,软件可以变换构成半导体存储器的晶体管、电容器或其它分立电路元件的状态。软件还可变换这些组件的物理状态以在其上存储数据。
作为另一示例,本文所公开的计算机可读介质可以使用磁或光技术来实现。在这些实现中,本文所提出的软件可以在磁或光介质中编码了软件时变换所述磁或光介质的物理状态。这些变换可包括更改给定磁性介质内的特定位置的磁性特征。这些变换还可以包括改变给定光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。在没有偏离本说明书的范围和精神的情况下,物理介质的其他变换也是可以的,前面提供的示例只是为了便于此讨论。
鉴于以上内容,应当理解,在计算机架构500中发生许多类型的物理变换以便存储并执行本文所提出的软件组件。还应当理解,计算机架构500可以包括其它类型的计算设备,包括:手持式计算机、嵌入式计算机系统、个人数字助理、以及本领域技术人员已知的其它类型的计算设备。还可以构想的是,计算机架构500可以不包括图5所示的全部组件,可以包括未在图5中明确示出的其它组件,或者可利用完全不同于图5所示的架构。
基于上述内容,应当领会,在此已经公开了用于高速缓存管理的技术。虽然用计算机结构特征、方法和变换动作、特定计算机器、以及计算机可读介质专用的语言描述了本文中所描述的主题,但是应当理解,所附权利要求书中所定义的本发明不必限于本文中所描述的具体特征、动作、或介质。相反,这些具体特征、动作以及介质是作为实现权利要求的示例形式而公开的。
以上所述的主题仅作为说明提供,并且不应被解释为限制。可对本文中所描述的主题作出各种修改和改变,而不必遵循示出和描述的示例实施例和应用且不背离所附权利要求书中所阐述的本发明的真正精神和范围。
Claims (35)
1.一种用于管理高速缓存的计算机实现的方法,所述计算机实现的方法包括在客户机设备处执行计算机实现的操作以用于:
在所述客户机设备处接收获取存储在服务器计算机处的数据的请求;
由所述客户机设备基于以下各项中的至少一项来确定在所述客户机设备处启用了高速缓存:
启用了用户可选择的高速缓存模式,或
所述客户机设备具有高速缓存模式;
由所述客户机设备请求存储在所述服务器计算机处的所述数据;
响应于对存储在所述服务器处的所述数据的请求,接收与所述数据相对应的散列而不是所请求的数据;
通过以下操作来搜索所述高速缓存以查找所述散列:
确定从所述服务器计算机处接收到了所述散列,所请求的散列中的每一个散列包括与所请求的数据相对应的唯一数据;以及
访问所述高速缓存;以及
响应于确定所述高速缓存不包括所述散列:
确定与所述客户机设备通信的一个或多个本地对等体是否具有与所述散列相对应的所述数据;
确定哪些本地对等体具有与所述散列相对应的所述数据的哪些部分;以及
从所标识的本地对等体请求所述数据的对应部分。
2.根据权利要求1所述的方法,其中,搜索所述高速缓存以查找所述散列包括:
从所述服务器计算机接收所述散列;以及
响应于确定所述高速缓存没有存储所述散列,生成对所述数据和对所述散列的请求,并将所述数据和所述散列存储在所述高速缓存中。
3.根据权利要求1所述的方法,其中,搜索所述高速缓存以查找所述散列包括:响应于在所述高速缓存中标识出所述散列,从所述高速缓存中获取所述数据。
4.根据权利要求3所述的方法,其中,所述高速缓存包括由所述客户机设备和客户机对等体所提供的分布式高速缓存,并且其中,从所述高速缓存中获取所述数据包括从所述客户机对等体中获取所述数据。
5.根据权利要求4所述的方法,其中,所述客户机设备和所述客户机对等体位于具有受约束的带宽的网络上。
6.根据权利要求1所述的方法,还包括:
在所述客户机设备处生成新数据;
将所述新数据以及对与所述新数据相对应的散列的请求上传到所述服务器计算机;
从所述服务器计算机接收所述散列;以及
将所述散列和所述新数据存储在所述高速缓存中。
7.一种客户机计算机系统,包括:
所述客户机计算机系统中的网络接口单元;
所述客户机计算机系统中的存储器设备,所述存储器设备包含计算机可读指令;以及
所述客户机计算机系统中的处理器,所述处理器通信地耦合到所述存储器设备和所述网络接口单元,所述处理器执行所述计算机可读指令以:
经由所述网络接口单元来接收获取存储在服务器计算机处的数据的请求;
确定在所述客户机计算机系统和所述服务器计算机处是否启用了高速缓存;
响应于基于所述客户机计算机系统和所述服务器计算机拒绝使用散列而确定在所述客户机计算机系统和所述服务器计算机处没有启用高速缓存,经由所述网络接口单元请求来自所述服务器计算机的所述数据;
响应于基于启用了用户可选择的高速缓存模式或所述客户机计算机系统具有高速缓存模式中的至少一者而确定在所述客户机计算机系统处启用了高速缓存,并基于所述服务器计算机具有所述高速缓存模式而确定在所述服务器计算机处启用了高速缓存:经由所述网络接口单元请求来自所述服务器计算机的散列,所述散列对应于所述数据;
通过以下操作来搜索高速缓存以查找所述散列:
确定从所述服务器计算机处接收到了所述散列,所请求的散列中的每一个散列包括与所请求的数据相对应的唯一数据;以及
访问所述高速缓存;
响应于确定所述高速缓存不包括所述散列:
确定与所述客户机计算机系统通信的一个或多个本地对等体是否具有与所述散列相对应的所述数据;
确定哪些本地对等体具有与所述散列相对应的所述数据的哪些部分;以及
从所标识的本地对等体请求所述数据的对应部分。
8.根据权利要求7所述的客户机计算机系统,其中,所述存储器设备还包括在由所述处理器执行时使得所述处理器进行以下操作的计算机可读指令:
确定所述高速缓存是否存储所述数据;
响应于确定所述高速缓存没有存储所述散列:生成对来自所述服务器计算机的所述数据的请求,并将所述数据和所述散列存储在所述高速缓存中。
9.根据权利要求8所述的客户机计算机系统,其中,所述存储器设备还包括在由所述处理器执行时使得所述处理器进行以下操作的计算机可读指令:响应于在所述高速缓存中标识出所述散列,从所述高速缓存中获取所述数据。
10.根据权利要求9所述的客户机计算机系统,其中,所述高速缓存包括由所述客户机计算机系统和客户机对等体所提供的分布式高速缓存,并且其中,从所述高速缓存中获取所述数据包括从所述客户机对等体中获取所述数据。
11.根据权利要求10所述的客户机计算机系统,其中,所述客户机计算机系统和所述客户机对等体位于分支机构,并且其中所述服务器计算机位于所述分支机构的远程。
12.根据权利要求7所述的客户机计算机系统,其中,所述存储器设备还包括在由所述处理器执行时使得所述处理器进行以下操作的计算机可读指令:
在所述客户机计算机系统处生成新数据;
经由所述网络接口单元将所述新数据以及对与所述新数据相对应的新散列的请求上传到所述服务器计算机;
经由所述网络接口单元从所述服务器计算机接收所述新散列;以及
将所述新散列和所述新数据存储在所述高速缓存中。
13.一种用于管理数据的高速缓存的计算机实现的方法,所述计算机实现的方法包括在服务器处执行计算机实现的操作以用于:
从客户机设备接收对散列的请求;
基于启用了用户可选择的高速缓存模式来确定在所述客户机设备处启用了高速缓存;
基于以下各项中的至少一项来确定将发送所述散列还是与所述散列相对应的数据:与所述散列的大小相比的所述数据的大小,如果所述散列还未存储在所述服务器处则生成所述散列所需要的时间,或者如果所述数据未存储在所述高速缓存中则所述客户机设备与所述服务器之间所需要的通信数量,
其中基于所需要的通信数量来确定将发送所述散列还是所述数据包括:确定如果所述数据未存储在所述高速缓存中则所述客户机与所述服务器之间所需要的通信数量;
如果确定将发送所述散列,则将所述散列发送给所述客户机设备,其中:如果对发送所述散列还是数据的确定是基于所述客户机设备与所述服务器之间所需要的通信数量的,则如果相对于发送所述数据所需要的通信数量,发送所述散列需要的通信数量较少,则发送所述散列;并且如果确定将发送所述数据,则将所述数据发送给所述客户机设备。
14.根据权利要求13所述的计算机实现的方法,其中,来自所述客户机设备的对所述散列的请求包括对数据和指示应该发送散列的标志的请求,并且所述计算机实现的操作还包括:
如果所述标志存在,则行进到确定将发送所述散列还是所述数据的操作;并且
如果所述标志不存在,则将所述数据发送给所述客户机设备。
15.根据权利要求13所述的计算机实现的方法,其中,确定将发送所述散列还是所述数据的操作包括:
将所述散列的大小与所述数据的大小进行比较;
如果发送所述数据比发送所述散列更高效,则发送所述数据;并且
如果发送所述散列比发送所述数据更高效,则发送所述散列。
16.根据权利要求15所述的计算机实现的方法,还包括:如果所述数据的大小近似所述散列的大小,则发送所述数据。
17.根据权利要求15所述的计算机实现的方法,还包括:存储标志以指示响应于来自所述客户机设备的未来请求将提供所述散列。
18.根据权利要求13所述的计算机实现的方法,其中,确定将发送所述散列还是所述数据的操作包括:
如果所述散列还未存储在所述服务器处,则确定生成所述散列所需要的时间;
如果生成所述散列并发送所述散列比发送所述数据更加时间高效,则生成所述散列并发送所述散列;并且
如果发送所述数据比生成并发送所述散列更加时间高效,则发送所述数据。
19.一种用于管理高速缓存的计算机实现的方法,包括:
由客户机设备接收获取数据的请求;
由所述客户机设备请求来自服务器计算机的所请求的数据;
响应于所述请求,从所述服务器计算机接收至少一个散列而不是所请求的数据,接收所述至少一个散列是基于以下的:根据提供所述至少一个散列所需的时间与提供所请求的数据所需的时间的比较,由所述服务器计算机确定提供所述至少一个散列是比传输所请求的数据更为高效的;
由所述客户机设备搜索分布式高速缓存以查找与所请求的数据相对应的所述至少一个散列,所述分布式高速缓存包括来自所述客户机设备和一个或多个客户机对等体中的每个的存储器的一部分,所述客户机设备和所述一个或多个客户机对等体中的每个包括所述分布式高速缓存的一部分;以及
以下操作之一:
响应于确定包括来自所述客户机设备和所述一个或多个客户机对等体中的每个的存储器的所述一部分的所述分布式高速缓存包括所述至少一个散列,访问由所述客户机设备提供的所述分布式高速缓存以及一个或多个客户机对等体,以检索所请求的数据;或者
响应于确定包括来自所述客户机设备和所述一个或多个客户机对等体中的每个的存储器的所述一部分的所述分布式高速缓存不包括所述至少一个散列,请求来自所述服务器计算机的所请求的数据。
20.根据权利要求19所述的方法,还包括:
响应于确定所述分布式高速缓存没有存储所述至少一个散列:
生成对所请求的数据的另外的请求;以及
将所述数据和所述至少一个散列存储在所述分布式高速缓存中。
21.根据权利要求19所述的方法,还包括:
响应于接收所述至少一个散列,
将所述至少一个散列添加到所述分布式高速缓存。
22.根据权利要求19所述的方法,还包括:
确定用户是否已启用了所述客户机设备的高速缓存模式;以及
响应于确定没有启用所述高速缓存模式,请求来自所述服务器计算机的所请求的数据。
23.根据权利要求19所述的方法,其中,所述客户机设备和所述一个或多个客户机对等体位于具有受约束的带宽的网络上。
24.根据权利要求19所述的方法,还包括:
确定与所述客户机设备通信的多个客户机对等体包括所请求的数据的各部分;以及
从所述多个客户机对等体中的对应客户机对等体请求所请求的数据的各部分。
25.一种用于管理高速缓存的系统,所述系统包括:
包含计算机可读指令的存储器设备;以及
与所述存储器设备通信的处理器,所述处理器在执行所述计算机可读指令时将所述系统配置成:
接收获取数据的请求;
请求来自服务器计算机的所请求的数据;
响应于所述请求,从所述服务器计算机接收至少一个散列而不是所请求的数据,接收所述至少一个散列是基于以下的:根据提供所述至少一个散列所需的时间与提供所请求的数据所需的时间的比较,由所述服务器计算机确定提供所述至少一个散列是比传输所请求的数据更为高效的;
搜索分布式高速缓存以查找与所请求的数据相对应的所述至少一个散列,所述分布式高速缓存包括来自客户机设备和一个或多个客户机对等体中的每个的存储器的一部分,所述客户机设备和所述一个或多个客户机对等体中的每个包括所述分布式高速缓存的一部分;以及
以下操作之一:
响应于确定包括来自所述客户机设备和所述一个或多个客户机对等体中的每个的存储器的所述一部分的所述分布式高速缓存包括所述至少一个散列,访问由所述客户机设备提供的所述分布式高速缓存以及一个或多个客户机对等体,以检索所请求的数据;或者
响应于确定包括来自所述客户机设备和所述一个或多个客户机对等体中的每个的存储器的所述一部分的所述分布式高速缓存不包括所述至少一个散列,请求来自所述服务器计算机的所请求的数据。
26.根据权利要求25所述的系统,其中,所述系统还被配置成:
响应于确定所述分布式高速缓存没有存储所述至少一个散列:
生成对所请求的数据的另外的请求;以及
将所述数据和所述至少一个散列存储在所述分布式高速缓存中。
27.根据权利要求25所述的系统,其中,所述系统还被配置成:
响应于接收所述至少一个散列,
将所述至少一个散列添加到所述分布式高速缓存。
28.根据权利要求25所述的系统,其中,所述系统还被配置成:
确定用户是否已启用了所述客户机设备的高速缓存模式;以及
响应于确定没有启用所述高速缓存模式,请求来自所述服务器计算机的所请求的数据。
29.根据权利要求25所述的系统,其中,所述客户机设备和所述一个或多个客户机对等体位于具有受约束的带宽的网络上。
30.根据权利要求25所述的系统,其中,所述系统还被配置成:
确定与所述客户机设备通信的多个客户机对等体包括所请求的数据的各部分;以及
从所述多个客户机对等体中的对应客户机对等体请求所请求的数据的各部分。
31.一种其上存储有计算机可读指令的存储器设备,所述计算机可读指令在由处理器执行时使得计算设备执行包括以下各项的多个操作:
接收获取数据的请求;
请求来自服务器计算机的所请求的数据;
响应于所述请求,从所述服务器计算机接收至少一个散列而不是所请求的数据,接收所述至少一个散列是基于以下的:根据提供所述至少一个散列所需的时间与提供所请求的数据所需的时间的比较,由所述服务器计算机确定提供所述至少一个散列是比传输所请求的数据更为高效的;
搜索分布式高速缓存以查找与所请求的数据相对应的所述至少一个散列,所述分布式高速缓存包括来自客户机设备和一个或多个客户机对等体中的每个的存储器的一部分,所述客户机设备和所述一个或多个客户机对等体中的每个包括所述分布式高速缓存的一部分;以及
以下操作之一:
响应于确定包括来自所述客户机设备和所述一个或多个客户机对等体中的每个的存储器的所述一部分的所述分布式高速缓存包括所述至少一个散列,访问由所述客户机设备提供的所述分布式高速缓存以及一个或多个客户机对等体,以检索所请求的数据;或者
响应于确定包括来自所述客户机设备和所述一个或多个客户机对等体中的每个的存储器的所述一部分的所述分布式高速缓存不包括所述至少一个散列,请求来自所述服务器计算机的所请求的数据。
32.根据权利要求31所述的存储器设备,其中,所述多个操作还包括:
响应于确定所述分布式高速缓存没有存储所述至少一个散列:
生成对所请求的数据的另外的请求;以及
将所述数据和所述至少一个散列存储在所述分布式高速缓存中。
33.根据权利要求31所述的存储器设备,其中,所述多个操作还包括:
响应于接收所述至少一个散列;以及
将所述至少一个散列添加到所述分布式高速缓存。
34.根据权利要求31所述的存储器设备,其中,所述多个操作还包括:
确定用户是否已启用了所述客户机设备的高速缓存模式;以及
响应于确定没有启用所述高速缓存模式,请求来自所述服务器计算机的所请求的数据。
35.根据权利要求31所述的存储器设备,其中,所述多个操作还包括:
确定与所述客户机设备通信的多个客户机对等体包括所请求的数据的各部分;以及
从所述多个客户机对等体中的对应客户机对等体请求所请求的数据的各部分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010046308.5A CN111273863B (zh) | 2012-04-05 | 2013-04-03 | 高速缓存管理 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/439,873 | 2012-04-05 | ||
US13/439,873 US10198462B2 (en) | 2012-04-05 | 2012-04-05 | Cache management |
CN201380018941.1A CN104221016A (zh) | 2012-04-05 | 2013-04-03 | 高速缓存管理 |
CN202010046308.5A CN111273863B (zh) | 2012-04-05 | 2013-04-03 | 高速缓存管理 |
PCT/US2013/035048 WO2013152057A1 (en) | 2012-04-05 | 2013-04-03 | Cache management |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380018941.1A Division CN104221016A (zh) | 2012-04-05 | 2013-04-03 | 高速缓存管理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111273863A CN111273863A (zh) | 2020-06-12 |
CN111273863B true CN111273863B (zh) | 2023-08-15 |
Family
ID=48142964
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380018941.1A Pending CN104221016A (zh) | 2012-04-05 | 2013-04-03 | 高速缓存管理 |
CN202010046308.5A Active CN111273863B (zh) | 2012-04-05 | 2013-04-03 | 高速缓存管理 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380018941.1A Pending CN104221016A (zh) | 2012-04-05 | 2013-04-03 | 高速缓存管理 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10198462B2 (zh) |
EP (1) | EP2834758A1 (zh) |
JP (2) | JP2015514274A (zh) |
KR (1) | KR102098415B1 (zh) |
CN (2) | CN104221016A (zh) |
WO (1) | WO2013152057A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10015012B2 (en) * | 2013-07-03 | 2018-07-03 | Red Hat, Inc. | Precalculating hashes to support data distribution |
US20150350369A1 (en) * | 2014-05-30 | 2015-12-03 | Qualcomm Incorporated | Method For Reducing Pre-Fetching Of Multimedia Streaming Data With Minimal Impact On Playback User Experience |
CN106445403B (zh) * | 2015-08-11 | 2020-11-13 | 张一凡 | 针对海量数据成对存储的分布式存储方法和系统 |
US10540136B2 (en) * | 2016-05-24 | 2020-01-21 | Dell Products, L.P. | Faster frame buffer rendering over a network |
US10382552B2 (en) * | 2016-12-12 | 2019-08-13 | Verizon Patent And Licensing Inc. | User device ad-hoc distributed caching of content |
US11023587B2 (en) * | 2018-06-03 | 2021-06-01 | Apple Inc. | External trust cache |
JP7533001B2 (ja) | 2020-08-07 | 2024-08-14 | 株式会社リコー | 情報処理装置、コンテンツ配信方法およびプログラム |
JP7282114B2 (ja) * | 2021-02-12 | 2023-05-26 | 株式会社日立製作所 | ストレージ装置 |
JP7327851B1 (ja) * | 2022-11-09 | 2023-08-16 | Tradfit株式会社 | 情報処理方法、プログラム及び情報処理装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101523360A (zh) * | 2006-09-29 | 2009-09-02 | 微软公司 | 安全的对等高速缓存共享 |
CN102067557A (zh) * | 2008-06-19 | 2011-05-18 | 微软公司 | 使用本地托管高速缓存和密码散列函数来减少网络通信的方法和系统 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10177510A (ja) | 1996-12-18 | 1998-06-30 | Casio Comput Co Ltd | クライアント・サーバ・システム |
JP2001014209A (ja) | 1999-06-25 | 2001-01-19 | Sharp Corp | 情報中継装置および情報中継方法、ならびに情報中継プログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6772225B1 (en) | 1999-09-30 | 2004-08-03 | International Business Machines Corporation | Policy enabled web caching |
US7043524B2 (en) * | 2000-11-06 | 2006-05-09 | Omnishift Technologies, Inc. | Network caching system for streamed applications |
US7188145B2 (en) | 2001-01-12 | 2007-03-06 | Epicrealm Licensing Llc | Method and system for dynamic distributed data caching |
CN1290027C (zh) * | 2001-08-27 | 2006-12-13 | 皇家飞利浦电子股份有限公司 | 高速缓存方法 |
US6871270B2 (en) * | 2001-12-03 | 2005-03-22 | Samsung Electronics Co., Ltd. | Device and method for minimizing puncturing-caused output delay |
JP2003323381A (ja) | 2002-05-07 | 2003-11-14 | Fuji Photo Film Co Ltd | マルチメディアコンテンツ作成装置およびマルチメディアコンテンツ作成方法 |
JP2004185263A (ja) | 2002-12-03 | 2004-07-02 | Oki Electric Ind Co Ltd | 分散協調型コンテンツ配信システム |
US7769881B2 (en) | 2003-01-24 | 2010-08-03 | Hitachi, Ltd. | Method and apparatus for peer-to peer access |
US7895338B2 (en) | 2003-03-18 | 2011-02-22 | Siemens Corporation | Meta-search web service-based architecture for peer-to-peer collaboration and voice-over-IP |
US20050015471A1 (en) * | 2003-07-18 | 2005-01-20 | Zhang Pu Paul | Secure cluster configuration data set transfer protocol |
US20060136485A1 (en) * | 2004-11-16 | 2006-06-22 | Peter Yared | Dynamic selection or modification of data management patterns |
US7600125B1 (en) * | 2004-12-23 | 2009-10-06 | Symantec Corporation | Hash-based data block processing with intermittently-connected systems |
US7636767B2 (en) * | 2005-11-29 | 2009-12-22 | Cisco Technology, Inc. | Method and apparatus for reducing network traffic over low bandwidth links |
US7529785B1 (en) * | 2006-02-28 | 2009-05-05 | Symantec Corporation | Efficient backups using dynamically shared storage pools in peer-to-peer networks |
US8151323B2 (en) * | 2006-04-12 | 2012-04-03 | Citrix Systems, Inc. | Systems and methods for providing levels of access and action control via an SSL VPN appliance |
US7526530B2 (en) | 2006-05-05 | 2009-04-28 | Adobe Systems Incorporated | System and method for cacheing web files |
GB2440762B (en) | 2006-08-11 | 2011-11-02 | Cachelogic Ltd | Content distribution network |
US8849793B2 (en) * | 2007-06-05 | 2014-09-30 | SafePeak Technologies Ltd. | Devices for providing distributable middleware data proxy between application servers and database servers |
US20090144388A1 (en) * | 2007-11-08 | 2009-06-04 | Rna Networks, Inc. | Network with distributed shared memory |
US8825758B2 (en) * | 2007-12-14 | 2014-09-02 | Microsoft Corporation | Collaborative authoring modes |
JP2009181344A (ja) | 2008-01-30 | 2009-08-13 | Canon It Solutions Inc | 情報処理装置、描画命令生成装置、情報処理システム、情報処理装置の制御方法、描画命令生成装置の制御方法及びプログラム |
US8019882B2 (en) | 2008-06-27 | 2011-09-13 | Microsoft Corporation | Content identification for peer-to-peer content retrieval |
US9065835B2 (en) | 2008-07-23 | 2015-06-23 | International Business Machines Corporation | Redirecting web content |
US9286293B2 (en) * | 2008-07-30 | 2016-03-15 | Microsoft Technology Licensing, Llc | Populating and using caches in client-side caching |
US8499120B2 (en) * | 2008-10-17 | 2013-07-30 | Seagate Technology Llc | User selectable caching management |
US8601213B2 (en) * | 2008-11-03 | 2013-12-03 | Teradata Us, Inc. | System, method, and computer-readable medium for spool cache management |
US8108620B2 (en) * | 2009-03-10 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | Cooperative caching technique |
US20120089700A1 (en) * | 2010-10-10 | 2012-04-12 | Contendo, Inc. | Proxy server configured for hierarchical caching and dynamic site acceleration and custom object and associated method |
US8863204B2 (en) * | 2010-12-20 | 2014-10-14 | Comcast Cable Communications, Llc | Cache management in a video content distribution network |
US8874697B2 (en) * | 2011-11-30 | 2014-10-28 | Red Hat, Inc. | Content download based on hashes |
-
2012
- 2012-04-05 US US13/439,873 patent/US10198462B2/en active Active
-
2013
- 2013-04-03 CN CN201380018941.1A patent/CN104221016A/zh active Pending
- 2013-04-03 CN CN202010046308.5A patent/CN111273863B/zh active Active
- 2013-04-03 KR KR1020147027963A patent/KR102098415B1/ko active IP Right Grant
- 2013-04-03 JP JP2015504692A patent/JP2015514274A/ja active Pending
- 2013-04-03 EP EP13717644.2A patent/EP2834758A1/en not_active Ceased
- 2013-04-03 WO PCT/US2013/035048 patent/WO2013152057A1/en active Application Filing
-
2017
- 2017-11-17 JP JP2017221774A patent/JP6506374B2/ja active Active
-
2019
- 2019-01-25 US US16/258,123 patent/US11226944B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101523360A (zh) * | 2006-09-29 | 2009-09-02 | 微软公司 | 安全的对等高速缓存共享 |
CN102067557A (zh) * | 2008-06-19 | 2011-05-18 | 微软公司 | 使用本地托管高速缓存和密码散列函数来减少网络通信的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104221016A (zh) | 2014-12-17 |
US11226944B2 (en) | 2022-01-18 |
JP2015514274A (ja) | 2015-05-18 |
US20190155798A1 (en) | 2019-05-23 |
WO2013152057A1 (en) | 2013-10-10 |
JP2018049653A (ja) | 2018-03-29 |
KR102098415B1 (ko) | 2020-04-07 |
KR20140143775A (ko) | 2014-12-17 |
CN111273863A (zh) | 2020-06-12 |
US20130268614A1 (en) | 2013-10-10 |
JP6506374B2 (ja) | 2019-04-24 |
EP2834758A1 (en) | 2015-02-11 |
US10198462B2 (en) | 2019-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11226944B2 (en) | Cache management | |
US11985192B2 (en) | Synchronized content library | |
US11403262B2 (en) | Local networked storage linked to remote networked storage system | |
US10303649B2 (en) | Storage media abstraction for uniform data storage | |
US20150142742A1 (en) | System and method for syncing local directories that enable file access across multiple devices | |
US11221918B2 (en) | Undo changes on a client device | |
CN109766318B (zh) | 文件读取方法及装置 | |
US20120296871A1 (en) | File managing apparatus for processing an online storage service | |
KR101666064B1 (ko) | 분산 파일 시스템에서 url정보를 이용한 데이터 관리 장치 및 그 방법 | |
US10002135B2 (en) | Simplifying the check-in of checked-out files in an ECM system | |
US10402373B1 (en) | Filesystem redirection | |
CN112749144A (zh) | 一种基于区块链的持久化文件存储系统及方法 | |
US8805901B1 (en) | Geographically distributed file system | |
CN109857719B (zh) | 分布式文件处理方法、装置、计算机设备以及存储介质 | |
US20190034282A1 (en) | Offline repopulation of cache | |
CN103067496A (zh) | 客户端缓存机制管理方法和服务器 | |
CN104978339A (zh) | 一种文件处理方法、设备和网络系统 | |
CN116974998A (zh) | 数据文件的更新方法、装置、计算机设备和存储介质 | |
US10481813B1 (en) | Device and method for extending cache operational lifetime | |
CN117171109A (zh) | 数据存储管理方法、装置、系统及存储介质 | |
JP6459707B2 (ja) | ディレクトリ情報管理装置、情報処理システム、ディレクトリ情報管理方法、および、ディレクトリ情報管理プログラム |
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 |