US20060253461A1 - Multi-tiered caching mechanism for the storage and retrieval of content multiple versions - Google Patents

Multi-tiered caching mechanism for the storage and retrieval of content multiple versions Download PDF

Info

Publication number
US20060253461A1
US20060253461A1 US11/412,206 US41220606A US2006253461A1 US 20060253461 A1 US20060253461 A1 US 20060253461A1 US 41220606 A US41220606 A US 41220606A US 2006253461 A1 US2006253461 A1 US 2006253461A1
Authority
US
United States
Prior art keywords
cache
content
key
tier
web
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.)
Abandoned
Application number
US11/412,206
Inventor
Jeremy De Bonet
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MobiTv Inc
Original Assignee
MobiTv Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MobiTv Inc filed Critical MobiTv Inc
Priority to US11/412,206 priority Critical patent/US20060253461A1/en
Publication of US20060253461A1 publication Critical patent/US20060253461A1/en
Assigned to IDETIC, INC. reassignment IDETIC, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DEBONET, JEREMY S.
Assigned to MOBITV, INC. reassignment MOBITV, INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: IDETIC, INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Definitions

  • This invention generally relates to storage and retrieval of electronic entities. More particularly, the invention relates to the use of multi-tiered caches for storing and retrieving objects, wherein groups of objects may be associated with each other, such as in the storage of multiple versions of Web content on a network transformation proxy.
  • an associative array an object that is to be stored is associated with a key.
  • the object is stored in a particular location and the location is identified by the associated key.
  • associative arrays There are various implementations of associative arrays. For example, databases, file systems and caches are associative arrays. Caches, in particular, are of interest here.
  • Caches are associative arrays that provide local storage of data. “Local,” as used here, is somewhat relative. In the case of caches that are coupled to microprocessors to allow them to operate more quickly and efficiently, “local” may mean that the cache comprises memory manufactured on the same chips as the microprocessors. In the case of caches that are used in Web proxys, however, “local” may mean that the cache is implemented in a disk drive within the proxy housing.
  • Caching proxys store and retrieve Web content such as Web pages using the URLs associated with the Web pages as the respective keys.
  • Web content such as Web pages using the URLs associated with the Web pages as the respective keys.
  • One of the problems that may arise in this situation, however, is that there may be a number of different Web pages that have the same URL.
  • the substance of the Web pages may be approximately the same, but they may each be adapted for viewing on a different type of device (e.g., a desktop computer or a Web-enabled cellular phone).
  • the key may therefore need to include additional information in order to uniquely identify the Web page that has to be retrieved.
  • the key may therefore incorporate other characteristics of the Web page, such as cookies or the type of browser for which the page is designed.
  • the caching implemented in prior art proxys is typically flat. In other words, there is a single cache with multiple entries. Each cache entry contains a Web page associated with a corresponding key. As noted above, the key may incorporate both the URL and other characteristics that are necessary to uniquely identify the cached content. Thus, if the proxy needs to store 1000 Web pages having different URLs, 1000 cache entries would be required. If the proxy were required to store 10 different versions of each of these Web pages, 10,000 cache entries would be required.
  • lookup time can vary from O(n) to O(log(n)), even to O(1) (constant time). No benefit is derived from the similarity of the entries (i.e., the fact that ten of the entries may simply be different versions of the same Web page).
  • the invention comprises systems and methods for improved performance in the storing and retrieving of objects.
  • the invention comprises a multi-tiered caching system in which cache entries can be looked up using a plurality of keys.
  • the lowest tier of caches stores the objects, while higher tiers store references to lower tiers (such as the tier which stores the objects).
  • Each of the keys is used to look up an entry in a different tier of the cache.
  • An exemplary embodiment is implemented in a network proxy.
  • the network transformation proxy is configured to handle communications between a Web server and one or more clients (e.g., Web browsers). Consequently, the network transformation proxy may operate more efficiently if it is configured to cache web pages that are served to the clients.
  • the network transformation proxy is configured to store multiple versions of each web page, wherein each version corresponds to, for example, a different client device, each having its own display characteristics and capabilities. Rather than storing all of the different versions of the web pages in a flat cache, the web pages are stored in a multi-tiered cache.
  • the web pages are stored in a two-tier cache in which the URLs of the web pages serve as keys for entries in the first tier of the cache, and the versions of the web pages serve as keys for entries in the second tier of the cache (which actually contains a plurality of caches).
  • the URL of the desired page and the device type of the client can be identified from the request.
  • the network transformation proxy uses the URL as a key to index into a first-tier cache.
  • the entry corresponding to this key (the URL) contains an object which identifies a second tier cache.
  • the network transformation proxy uses the second key (the device type) to index into the identified second-tier cache.
  • the entry of the identified second-tier cache which corresponds to the second key contains an object which is the desired web page. This web page can then be retrieved and served to client.
  • An alternative embodiment comprises a method for storing and retrieving objects in a multi-tiered cache.
  • Each object to be stored has a plurality of keys associated with it. Each key is used to index into a cache in a different tier. Every cache in all the tiers, except for those in the last tier, content objects which refer to caches in the subsequent tier.
  • the caches in the last tier store the objects themselves, instead of references to other caches. Alternatively, the caches in the last tier may contain references to the stored objects rather than the objects themselves.
  • storing an object in the multi-tier cache comprises storing an entry in a first-tier cache containing a first key and a reference to a second-tier cache, possibly repeating this for additional tiers (e.g., storing an entry in a second-tier cache comprising a second key and a reference to a third-tier cache), and storing the object in a lowest-tier cache with a last one of the keys.
  • Retrieving the object comprises indexing into a first-tier cache using a first key to get a reference to a second-tier cache, and repeating this step for lower tiers, until the last tier is reached, at which point a last of the keys is used to index into the last-tier cache to retrieve the object.
  • Another embodiment of the invention comprises a software application.
  • the software application is embodied in a computer-readable medium such as a floppy disk, CD-ROM, DVD-ROM, RAM, ROM, database schemas and the like.
  • the computer readable medium contains instructions which are configured to cause a computer to execute a method which is generally as described above.
  • the computer readable medium may comprise a RAM or other memory which forms part of a computer system. The computer system would thereby be enabled to perform a method in accordance with the present disclosure and is believed to be within the scope of the appended claims.
  • FIG. 1 a diagram illustrating an exemplary architecture of a network-based system in accordance with one embodiment of the invention.
  • FIG. 2 is a diagram illustrating the basic configuration of a computer suitable for use as a network transformation proxy in accordance with one embodiment of the invention.
  • FIG. 3 is a diagram illustrating a multi-tiered cache structure in accordance with one embodiment of the invention.
  • FIG. 4 is a flow diagram illustrating a generalized method applicable to a N-tier cache structure in accordance with one embodiment of the invention.
  • the invention comprises systems and methods for improved performance in the storing and retrieving of objects.
  • the invention comprises a multi-tiered caching system in which cache entries can be looked up using a plurality of keys.
  • the lowest tier of caches stores the objects, while higher tiers store references to lower tiers (such as the tier which stores the objects).
  • Each of the keys is used to look up an entry in a different tier of the cache.
  • An exemplary embodiment is implemented in a network transformation proxy.
  • the transformation proxy is configured to intercept and manipulate communications between a Web server and one or more clients (e.g., Web browsers). Consequently, the network transformation proxy may operate more efficiently if it is configured to cache web pages that are served to the clients.
  • the network transformation proxy is configured to generate multiple versions of every web page, wherein each version corresponds to, for example, different optimizations for each type of client device, each having its own display characteristics and capabilities.
  • the web page versions are stored in a multi-tiered cache. More specifically, the web pages are stored in a two-tier cache in which the URLs of the web pages serve as keys for entries in the first tier of the cache, and the devices for which the pages have been transformed serve as keys for entries in the second tier of caches.
  • the URL of the desired page and the device type of the client can be identified from the request.
  • the network transformation proxy uses the URL as a key to index into a first-tier cache.
  • the entry corresponding to this key contains an object which is an identifier of a cache in the second tier.
  • the network transformation proxy uses the second key (the device type) to index into the identified cache in the second tier.
  • the entry of the identified second-tier cache which corresponds to the second key contains an object which is the desired web page. This web page can then be retrieved and served to client.
  • the preferred embodiment of the invention operates in the context of a network environment.
  • the network and its components are employed to distribute Web content (e.g., web pages) from one or more servers to one or more clients.
  • Web content e.g., web pages
  • FIG. 1 a diagram illustrating an exemplary architecture is shown.
  • the architecture comprises a client 12 which is coupled to a network transformation proxy 14 , which is in turn coupled to a Web server 16 .
  • Network transformation proxy 14 includes a cache subsystem 18 .
  • Client 12 is coupled to proxy 14 via a first network 13 .
  • Proxy 14 is coupled to Web server 16 by a second network 15 .
  • networks 13 and 15 comprises the Internet.
  • the other of these networks may comprise a network which is either internal or external to a particular enterprise. It should be noted, however, that the coupling of client 12 , proxy 14 and Web server 16 need not be configured in any particular manner for the purposes of the invention.
  • a proxy handles communication between a client device or program, such as a Web browser, and a server device or program, such as a Web server.
  • the proxy handles the clients' requests for Web content, as well as the Web content provided by the Web server in response to these requests.
  • the proxy is responsible for emulating the Web server and thereby reducing the loading on the system (both on the Web server and on the network itself). The proxy does this by storing some of the content provided by the Web server and, when possible, providing this stored content to clients in response to requests for the content. In this manner, the proxy relieves the Web server of the burden of serving a portion of the clients' requests.
  • the network transformation proxy is configured to perform transformations of Web content provided by a server.
  • the transformations may depend upon the client making the request for the content and the manner in which the request is made.
  • the transformations may comprise modifications of the contents to optimize it for use on a particular type of client device.
  • Web pages may be adapted to the capabilities of different display devices (e.g., color reduction or black-and-white conversion may be performed on images in the web pages).
  • the proxy may generate multiple versions of a particular web page (or other Web content).
  • the proxy may also perform transformations that make more substantive modifications to the content, such as inserting different advertisements for different clients. The proxy then needs to store these different versions of the Web content.
  • the network transformation proxy uses information both on the types of transformation performed on the page and on the version provided by the source server.
  • a version cache key also may indicate the parameter values used in a transformation. For example, if the network transformation proxy performs color reduction on an image, the key could include the number of colors to which the image is reduced.
  • the proxy in accordance with the present disclosure provides a fast and efficient mechanism for storing and retrieving the Web content, even though the multiple versions of the content increase the total amount of information that has to be stored.
  • FIG. 2 a diagram illustrating the basic configuration of a computer suitable for use as a network transformation proxy in accordance with one embodiment of the invention be shown.
  • Server 14 is implemented in a computer system 100 .
  • Computer system 100 includes a central processing unit (CPU) 112 , read-only memory (ROM) 114 , random access memory (RAM) 116 , hard disk drive (HD) 118 and input output device (I/O) 120 .
  • Computer system 100 may have more than one CPU, ROM, random, hard disk drive, input-output device or other hardware components.
  • Computer system 100 is nevertheless depicted as having only one of each type of component. It should be noted that the system illustrated in FIG. 2 is a simplification of an exemplary hardware configuration, and many other alternative configurations are possible.
  • ROM 114 ROM 114 , RAM 116 or hard disk drive 118
  • the software applications may comprise program instructions that are configured to cause the data processor in which they execute to perform the methods described herein. These instructions may be embodied in (stored on) internal storage devices such as ROM 114 , RAM 116 or hard disk drive 118 , other, and external storage devices, or storage media readable by a data processor such as computer system 100 , or even CPU 112 . Such media may include, for example, floppy disks, CD-ROMs, DVD ROMs, magnetic tape, optical storage media, and the like.
  • the computer-executable instructions may be lines of compiled C ++ , Java, or other language code.
  • Other architectures may be used.
  • the functions of any one of the computers may be performed by a different computer shown in FIG. 2 .
  • a computer program or its software components with such code may be embodied in more than one data processing system readable medium in more than one computer.
  • the various software components may reside on a single computer or on any combination of separate computers. In alternative embodiments, some or all of the software components may reside on the same computer. For example, one or more the software component(s) of the proxy computer 100 could reside on a client computer or server computer, or both. In still another embodiment, the proxy computer itself may not be required if the functions performed by the proxy computer are merged into a client computer or server computer. In such an embodiment, the client computer and server computer may be directionally coupled to the same network.
  • Communications between any of the client, server and proxy computers can be accomplished using electronic, optical, radio-frequency, or other signals.
  • the client computer may convert the signals to a human understandable form when sending a communication to the user and may convert input from a human to appropriate electronic, optical, radio-frequency, or other signals to be used by, the proxy or server computers.
  • the server computer may convert the signals to a human understandable form when sending a communication to the operator and may convert input from a human to appropriate electronic, optical, radio-frequency, or other signals to be used by the computers.
  • the proxy is responsible for storing information previously provided by the Web server so that this information can be provided to clients in response to their requests.
  • This information is stored in the cache subsystem of the proxy.
  • the cache subsystem actually comprises a plurality of caches that are organized in two or more tiers.
  • the upper and intermediate tiers reference caches in lower tiers.
  • the lowest level tier actually stores the desired information.
  • the information stored in the cache subsystem is accessed by accessing each of these tiers in turn.
  • cache subsystem 18 comprises a first tier 22 and a second tier 24 .
  • the first tier 22 actually comprises a single cache 30 having multiple entries (e.g., 31 - 33 ).
  • Second tier 24 comprises a plurality of caches (e.g., 40 , 50 , 60 ).
  • Each entry in each of the caches includes a key and an object.
  • the key is used to identify a desired entry into cache.
  • the object is the desired information that is stored in the cache.
  • the keys for entries (e.g. 35 ) in first tier cache 26 comprise URLs (uniform resource locators).
  • the objects (e.g. 36 ) for the entries comprise references to caches in the second tier 24 .
  • object 36 of first-tier cache entry 31 is a reference to second-tier cache 40 .
  • Cache 40 (as well as other second-tier caches) is very similar, in that each entry (e.g., 41 , 42 , 43 ) includes a key and an object. Because cache 40 is in the lowest tier of the cache structure, however, the objects contained in its cache entries comprise objects of the type that cache subsystem 18 is designed to store (e.g., Web pages). If cache subsystem 18 had more than two tiers, the objects contained in caches (e.g., 40 ) in the second tier 24 would comprise references to caches in a third tier. This third tier could be the lowest tier, or it could be yet another intermediate tier in which cached objects comprise references to caches in subsequent tiers. Thus, the structure is expandable to any number, N, of tiers.
  • the method employed in the use of this cache structure to retrieve stored objects is summarized in the flow diagram of FIG. 4 .
  • the flow diagram of FIG. 4 represents the generalized method applicable to an N-tier cache structure. As shown in this figure, a first key is used to index into a first structure to retrieve a reference to a second-tier cache. This may be repeated, depending upon the number of tiers, N, in the cache structure. For the last (Nth) tier, the cache is indexed using the Nth key to retrieve the stored object.
  • keys in the first-tier cache 26 comprise the names (e.g., URLs) of the respective content stored therein.
  • Objects in the first-tier cache 26 comprise references to caches in second-tier 24 .
  • Keys in the second-tier caches are based on parameters that specify a different version of the content identified by the URLs.
  • Objects in the second-tier caches comprise the Web content stored by cache subsystem 18 . In combination, they keys of the first- and second-tier caches can be used to store or retrieve any version of any piece of content stored in cache subsystem 18 .
  • each cache uses a key to store a value.
  • the functionality of each cache is similar.
  • the caches may comprise any caching or associative memory structure.
  • One embodiment of the current invention is a multi-tiered caching system.
  • the current invention uses a two-tiered caching system.
  • the first tier a key based on content name is used to identify one of many secondary caches.
  • a particular version of the content specified in the first tier key is identified with a key that encapsulates the information specifying its version.
  • CacheOf ⁇ Key, Content> is a caching data structure that stores and retrieves content via association with key.
  • the first tier cache (Level — 1_Cache) is a cache of caches, in which a key based on the content-name is used to store and retrieve a second tier cache (Level — 2_Cache).
  • the second tier cache is a standard cache that associates the description of the content version with the appropriate content version.
  • the second tier cache key does not need to encapsulate the content-name, as all items, in each second tier cache are different versions of the same content—specifically, the content identified by Content_Name.
  • the second tier cache which stores a key consisting of a version and a value consisting of a Web page, is similar to existing art in this field.
  • the first tier cache which stores a key consisting of a URL and a value consisting of a secondary cache, is unique in that it stores caches.
  • the first tier cache (Level — 1_Cache) is based on the name (e.g., URL) of the content, and it points to a second tier cache.
  • the second tier cache (corresponding to Level — 2_Cache) is based on the type and parameter settings of the transformations that have been applied to the content.
  • the first tier cache (corresponding to Level — 1_Cache described in the simple embodiment above) is keyed using an MD5 Sum of the content URL.
  • the MD5 algorithm developed by Professor Ronald L. Rivest of MIT, is a commonly used one-way function, with the property that it is extraordinarily unlikely that two non-equal inputs will yield the same result. This algorithm makes keys that identify data more efficient.
  • the second tier cache contains multiple versions of the content identified by the URL.
  • the proxy may create these multiple versions by performing parameterized transformations on the Web content.
  • the second tier cache is keyed based on an MD5 Sum of the transformation name and its parameters. Each key identifies the version of the content transformed using those settings.
  • Level_2_Cache >
  • the preferred embodiment uses C++ templates to construct caches within the multi-tier cache structure.
  • a C++ template makes it unnecessary to write separate bodies of code to accomplish similar tasks. It makes the tasks abstract, allowing one C++ object to perform multiple tasks.
  • keys and values of any type can be assigned to the template.
  • a C++ template makes it unnecessary to write two separate bodies of code for the first and second tier caches.
  • the key and value types for the two different caches can both fit within the structure of the same C++ template. Exemplary systems and methods for using C++ templates in this manner are described in detail in U.S. patent application Ser. No. 10/345,593, by inventors Jeremy S. de Bonet, Todd A. Stiers, Jeffrey R. Annison, Phillip Alvelda VII and Paul M. Scanlan, filed on Jan. 16, 2003 and entitled “A Design for Storage and Retrieval of Arbitrary Content and Application Data.”
  • a caching proxy may store 10 separate versions each of 1,000 URLs.
  • the URLs would not need to be stored as 10,000 separate entities using 10,000 separate keys. Instead, the URLs could be stored as only 1,000 separate entities using 1,000 separate keys.
  • the proxy When performing a lookup for a specific version of a specific page, the proxy would need to search only 1,000 URLs, then 10 versions of that URL. This lookup would require a search of only 1,010 separate entities instead of 10,000.
  • the current invention yields a way to store data that may be common to all the content. For example, the date the content was created or various other HTTP headers may be common across all versions (as in the case of a transforming proxy), and the current invention offers a common place to store this information. The information does not need to be stored independently for each version of the content, and if any changes occur, they can be made to multiple versions of the content at the same time.
  • Additional keys that could be used to index into the caches of these tiers could include other identifiers, such as device type, browser, or payment level.

Abstract

Systems and methods for improved performance in the storing and retrieving of objects. In one embodiment, the invention comprises a multi-tiered caching system implemented in a network transformation proxy. The proxy performs transformations on Web content received from a Web server and stores the transformed content in the caching system. The lowest tier of caches stores the content as cache objects, while higher tiers store references to lower tiers (such as the tier which stores the objects) as their cache objects. Cache entries are looked up using a plurality of keys. Each of the keys is used to look up an entry in a different tier of the cache.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This is a continuation application of a pending U.S. patent application Ser. No. 10/345,886, filed Jan. 16, 2003, which claims priority to U.S. Provisional Patent Application No. 60/349,553, entitled “A Multi-Tiered Caching Mechanism for the Storage and Retrieval of Content Multiple Versions,” by Jeremy S. de Bonet, filed Jan. 18, 2002, U.S. Provisional Patent Application No. 60/349,344, entitled “Modular Plug-In Transaction Processing Architecture” by de Bonet et al., filed Jan. 18, 2002 and U.S. Provisional Patent Application No. 60/349,424, entitled “Network Proxy Platform that Simultaneously Supports Data Transformation, Storage, and Manipulation for Multiple Protocols” by de Bonet et al., filed on Jan. 18, 2002, which are hereby fully incorporated by reference herein. Additionally, U.S. patent application Ser. No. 10/342,113, entitled “Method and System of Performing Transactions Using Shared Resources and Different Applications,” by de Bonet et al., filed Jan. 14, 2003 is incorporated by reference herein.
  • BACKGROUND OF INVENTION
  • 1. Technical Field
  • This invention generally relates to storage and retrieval of electronic entities. More particularly, the invention relates to the use of multi-tiered caches for storing and retrieving objects, wherein groups of objects may be associated with each other, such as in the storage of multiple versions of Web content on a network transformation proxy.
  • 2. Related Art
  • There are numerous methods for storing data. One such way is through the use of an associative array. In an associative array, an object that is to be stored is associated with a key. The object is stored in a particular location and the location is identified by the associated key. When it is desired to retrieve the object, it is only necessary to look up the key, which identifies the location of the object.
  • There are various implementations of associative arrays. For example, databases, file systems and caches are associative arrays. Caches, in particular, are of interest here.
  • Caches are associative arrays that provide local storage of data. “Local,” as used here, is somewhat relative. In the case of caches that are coupled to microprocessors to allow them to operate more quickly and efficiently, “local” may mean that the cache comprises memory manufactured on the same chips as the microprocessors. In the case of caches that are used in Web proxys, however, “local” may mean that the cache is implemented in a disk drive within the proxy housing.
  • Caching proxys store and retrieve Web content such as Web pages using the URLs associated with the Web pages as the respective keys. One of the problems that may arise in this situation, however, is that there may be a number of different Web pages that have the same URL. For example, the substance of the Web pages may be approximately the same, but they may each be adapted for viewing on a different type of device (e.g., a desktop computer or a Web-enabled cellular phone). The key may therefore need to include additional information in order to uniquely identify the Web page that has to be retrieved. The key may therefore incorporate other characteristics of the Web page, such as cookies or the type of browser for which the page is designed.
  • The caching implemented in prior art proxys is typically flat. In other words, there is a single cache with multiple entries. Each cache entry contains a Web page associated with a corresponding key. As noted above, the key may incorporate both the URL and other characteristics that are necessary to uniquely identify the cached content. Thus, if the proxy needs to store 1000 Web pages having different URLs, 1000 cache entries would be required. If the proxy were required to store 10 different versions of each of these Web pages, 10,000 cache entries would be required.
  • Because the cache is flat, the time and/or the memory required to store and retrieve entries in the cache increases with the number of entries. Depending on the data structure used, lookup time can vary from O(n) to O(log(n)), even to O(1) (constant time). No benefit is derived from the similarity of the entries (i.e., the fact that ten of the entries may simply be different versions of the same Web page).
  • Further, when a flat caching structure is used to store multiple versions of content, there is no way to handle sets of associated content. For instance, there is no way to store data that is common to all the associated content (e.g., storing HTTP headers or other information that is common to multiple versions of the same web page). The common information simply has to be stored for each of the separate versions. Similarly, there is no way to handle these sets of associated content as a group. For example, if it is desired to update every version of an obsolete Web page, there is no way to take a single action that affects all of the versions—they have to be individually located in the cache structure and updated.
  • It should be noted that, while multi-tiered storage mechanisms exist for databases, these are distinct from cache structures. Databases are not designed to be used as functional libraries inside of other programs. In databases systems, trees and multi-level storage and retrieval structures must be explicitly constructed by database programmers and, because of the effort, expense and overhead of implementing a database system, this technology is not applicable to high performance cache retrieval.
  • SUMMARY OF THE INVENTION
  • One or more of the problems outlined above may be solved by the various embodiments of the invention. Broadly speaking, the invention comprises systems and methods for improved performance in the storing and retrieving of objects. In one embodiment, the invention comprises a multi-tiered caching system in which cache entries can be looked up using a plurality of keys. The lowest tier of caches stores the objects, while higher tiers store references to lower tiers (such as the tier which stores the objects). Each of the keys is used to look up an entry in a different tier of the cache.
  • An exemplary embodiment is implemented in a network proxy. The network transformation proxy is configured to handle communications between a Web server and one or more clients (e.g., Web browsers). Consequently, the network transformation proxy may operate more efficiently if it is configured to cache web pages that are served to the clients. In this embodiment, the network transformation proxy is configured to store multiple versions of each web page, wherein each version corresponds to, for example, a different client device, each having its own display characteristics and capabilities. Rather than storing all of the different versions of the web pages in a flat cache, the web pages are stored in a multi-tiered cache. More specifically, the web pages are stored in a two-tier cache in which the URLs of the web pages serve as keys for entries in the first tier of the cache, and the versions of the web pages serve as keys for entries in the second tier of the cache (which actually contains a plurality of caches). When a client requests a web page, the URL of the desired page and the device type of the client can be identified from the request. The network transformation proxy uses the URL as a key to index into a first-tier cache. The entry corresponding to this key (the URL) contains an object which identifies a second tier cache. The network transformation proxy uses the second key (the device type) to index into the identified second-tier cache. The entry of the identified second-tier cache which corresponds to the second key contains an object which is the desired web page. This web page can then be retrieved and served to client.
  • An alternative embodiment comprises a method for storing and retrieving objects in a multi-tiered cache. Each object to be stored has a plurality of keys associated with it. Each key is used to index into a cache in a different tier. Every cache in all the tiers, except for those in the last tier, content objects which refer to caches in the subsequent tier. The caches in the last tier store the objects themselves, instead of references to other caches. Alternatively, the caches in the last tier may contain references to the stored objects rather than the objects themselves. Thus, storing an object in the multi-tier cache comprises storing an entry in a first-tier cache containing a first key and a reference to a second-tier cache, possibly repeating this for additional tiers (e.g., storing an entry in a second-tier cache comprising a second key and a reference to a third-tier cache), and storing the object in a lowest-tier cache with a last one of the keys. Retrieving the object comprises indexing into a first-tier cache using a first key to get a reference to a second-tier cache, and repeating this step for lower tiers, until the last tier is reached, at which point a last of the keys is used to index into the last-tier cache to retrieve the object.
  • Another embodiment of the invention comprises a software application. The software application is embodied in a computer-readable medium such as a floppy disk, CD-ROM, DVD-ROM, RAM, ROM, database schemas and the like. The computer readable medium contains instructions which are configured to cause a computer to execute a method which is generally as described above. It should be noted that the computer readable medium may comprise a RAM or other memory which forms part of a computer system. The computer system would thereby be enabled to perform a method in accordance with the present disclosure and is believed to be within the scope of the appended claims.
  • Numerous additional embodiments are also possible.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Other objects and advantages of the invention may become apparent upon reading the following detailed description and upon reference to the accompanying drawings.
  • FIG. 1, a diagram illustrating an exemplary architecture of a network-based system in accordance with one embodiment of the invention.
  • FIG. 2 is a diagram illustrating the basic configuration of a computer suitable for use as a network transformation proxy in accordance with one embodiment of the invention.
  • FIG. 3 is a diagram illustrating a multi-tiered cache structure in accordance with one embodiment of the invention.
  • FIG. 4 is a flow diagram illustrating a generalized method applicable to a N-tier cache structure in accordance with one embodiment of the invention.
  • While the invention is subject to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and the accompanying detailed description. It should be understood, however, that the drawings and detailed description are not intended to limit the invention to the particular embodiment which is described. This disclosure is instead intended to cover all modifications, equivalents and alternatives falling within the scope of the present invention as defined by the appended claims.
  • DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT
  • A preferred embodiment of the invention is described below. It should be noted that this and any other embodiments described below are exemplary and are intended to be illustrative of the invention rather than limiting.
  • Broadly speaking, the invention comprises systems and methods for improved performance in the storing and retrieving of objects. In one embodiment, the invention comprises a multi-tiered caching system in which cache entries can be looked up using a plurality of keys. The lowest tier of caches stores the objects, while higher tiers store references to lower tiers (such as the tier which stores the objects). Each of the keys is used to look up an entry in a different tier of the cache.
  • An exemplary embodiment is implemented in a network transformation proxy. The transformation proxy is configured to intercept and manipulate communications between a Web server and one or more clients (e.g., Web browsers). Consequently, the network transformation proxy may operate more efficiently if it is configured to cache web pages that are served to the clients. In this embodiment, the network transformation proxy is configured to generate multiple versions of every web page, wherein each version corresponds to, for example, different optimizations for each type of client device, each having its own display characteristics and capabilities. Rather than storing all of the different versions of the web pages in a flat cache, the web page versions are stored in a multi-tiered cache. More specifically, the web pages are stored in a two-tier cache in which the URLs of the web pages serve as keys for entries in the first tier of the cache, and the devices for which the pages have been transformed serve as keys for entries in the second tier of caches.
  • When a client requests a web page, the URL of the desired page and the device type of the client can be identified from the request. The network transformation proxy uses the URL as a key to index into a first-tier cache. The entry corresponding to this key (the URL) contains an object which is an identifier of a cache in the second tier. The network transformation proxy uses the second key (the device type) to index into the identified cache in the second tier. The entry of the identified second-tier cache which corresponds to the second key contains an object which is the desired web page. This web page can then be retrieved and served to client.
  • While the preferred embodiment is implemented in a network transformation proxy, it should be noted that the invention can be generalized to multi-tier caches in any of a variety of systems. Thus, even though the present disclosure focuses primarily on the implementation of the invention in a network transformation proxy, this is intended to be exemplary, rather than limiting.
  • The preferred embodiment of the invention operates in the context of a network environment. The network and its components are employed to distribute Web content (e.g., web pages) from one or more servers to one or more clients. Referring to FIG. 1, a diagram illustrating an exemplary architecture is shown.
  • As depicted in FIG. 1, the architecture comprises a client 12 which is coupled to a network transformation proxy 14, which is in turn coupled to a Web server 16. Network transformation proxy 14 includes a cache subsystem 18. Client 12 is coupled to proxy 14 via a first network 13. Proxy 14 is coupled to Web server 16 by a second network 15. It is contemplated that at least one of networks 13 and 15 comprises the Internet. The other of these networks may comprise a network which is either internal or external to a particular enterprise. It should be noted, however, that the coupling of client 12, proxy 14 and Web server 16 need not be configured in any particular manner for the purposes of the invention.
  • A proxy handles communication between a client device or program, such as a Web browser, and a server device or program, such as a Web server. In a Web-based system, the proxy handles the clients' requests for Web content, as well as the Web content provided by the Web server in response to these requests. In handling these communications, the proxy is responsible for emulating the Web server and thereby reducing the loading on the system (both on the Web server and on the network itself). The proxy does this by storing some of the content provided by the Web server and, when possible, providing this stored content to clients in response to requests for the content. In this manner, the proxy relieves the Web server of the burden of serving a portion of the clients' requests.
  • In a preferred embodiment, the network transformation proxy is configured to perform transformations of Web content provided by a server. The transformations may depend upon the client making the request for the content and the manner in which the request is made. The transformations may comprise modifications of the contents to optimize it for use on a particular type of client device. For example, Web pages may be adapted to the capabilities of different display devices (e.g., color reduction or black-and-white conversion may be performed on images in the web pages). Thus, the proxy may generate multiple versions of a particular web page (or other Web content). The proxy may also perform transformations that make more substantive modifications to the content, such as inserting different advertisements for different clients. The proxy then needs to store these different versions of the Web content.
  • To create and identify different versions of a Web page, the network transformation proxy uses information both on the types of transformation performed on the page and on the version provided by the source server. A version cache key also may indicate the parameter values used in a transformation. For example, if the network transformation proxy performs color reduction on an image, the key could include the number of colors to which the image is reduced. The proxy in accordance with the present disclosure provides a fast and efficient mechanism for storing and retrieving the Web content, even though the multiple versions of the content increase the total amount of information that has to be stored.
  • Referring to FIG. 2, a diagram illustrating the basic configuration of a computer suitable for use as a network transformation proxy in accordance with one embodiment of the invention be shown. Server 14 is implemented in a computer system 100. Computer system 100 includes a central processing unit (CPU) 112, read-only memory (ROM) 114, random access memory (RAM) 116, hard disk drive (HD) 118 and input output device (I/O) 120. Computer system 100 may have more than one CPU, ROM, random, hard disk drive, input-output device or other hardware components. Computer system 100 is nevertheless depicted as having only one of each type of component. It should be noted that the system illustrated in FIG. 2 is a simplification of an exemplary hardware configuration, and many other alternative configurations are possible.
  • Portions of the methods described herein may be implemented in suitable software applications that may reside within memories such as ROM 114, RAM 116 or hard disk drive 118. The software applications may comprise program instructions that are configured to cause the data processor in which they execute to perform the methods described herein. These instructions may be embodied in (stored on) internal storage devices such as ROM 114, RAM 116 or hard disk drive 118, other, and external storage devices, or storage media readable by a data processor such as computer system 100, or even CPU 112. Such media may include, for example, floppy disks, CD-ROMs, DVD ROMs, magnetic tape, optical storage media, and the like.
  • In an illustrative embodiment of the invention, the computer-executable instructions may be lines of compiled C++, Java, or other language code. Other architectures may be used. For example, the functions of any one of the computers may be performed by a different computer shown in FIG. 2. Additionally, a computer program or its software components with such code may be embodied in more than one data processing system readable medium in more than one computer.
  • In the hardware configuration above, the various software components may reside on a single computer or on any combination of separate computers. In alternative embodiments, some or all of the software components may reside on the same computer. For example, one or more the software component(s) of the proxy computer 100 could reside on a client computer or server computer, or both. In still another embodiment, the proxy computer itself may not be required if the functions performed by the proxy computer are merged into a client computer or server computer. In such an embodiment, the client computer and server computer may be directionally coupled to the same network.
  • Communications between any of the client, server and proxy computers can be accomplished using electronic, optical, radio-frequency, or other signals. For example, when a user is at a client computer, the client computer may convert the signals to a human understandable form when sending a communication to the user and may convert input from a human to appropriate electronic, optical, radio-frequency, or other signals to be used by, the proxy or server computers. Similarly, when an operator is at the server computer, the server computer may convert the signals to a human understandable form when sending a communication to the operator and may convert input from a human to appropriate electronic, optical, radio-frequency, or other signals to be used by the computers.
  • As explained above, the proxy is responsible for storing information previously provided by the Web server so that this information can be provided to clients in response to their requests. This information is stored in the cache subsystem of the proxy. The cache subsystem actually comprises a plurality of caches that are organized in two or more tiers. The upper and intermediate tiers reference caches in lower tiers. The lowest level tier actually stores the desired information. The information stored in the cache subsystem is accessed by accessing each of these tiers in turn.
  • Referring to FIG. 3, a diagram illustrating a multi-tiered cache structure in accordance with one embodiment of the invention is shown. As depicted in this figure, cache subsystem 18 comprises a first tier 22 and a second tier 24. The first tier 22 actually comprises a single cache 30 having multiple entries (e.g., 31-33). Second tier 24 comprises a plurality of caches (e.g., 40, 50, 60).
  • Each entry in each of the caches includes a key and an object. The key is used to identify a desired entry into cache. The object is the desired information that is stored in the cache. Because cache subsystem 18 is designed to store Web content, the keys for entries (e.g. 35) in first tier cache 26 comprise URLs (uniform resource locators). The objects (e.g. 36) for the entries comprise references to caches in the second tier 24. For example, object 36 of first-tier cache entry 31 is a reference to second-tier cache 40.
  • Cache 40 (as well as other second-tier caches) is very similar, in that each entry (e.g., 41, 42, 43) includes a key and an object. Because cache 40 is in the lowest tier of the cache structure, however, the objects contained in its cache entries comprise objects of the type that cache subsystem 18 is designed to store (e.g., Web pages). If cache subsystem 18 had more than two tiers, the objects contained in caches (e.g., 40) in the second tier 24 would comprise references to caches in a third tier. This third tier could be the lowest tier, or it could be yet another intermediate tier in which cached objects comprise references to caches in subsequent tiers. Thus, the structure is expandable to any number, N, of tiers.
  • The method employed in the use of this cache structure to retrieve stored objects is summarized in the flow diagram of FIG. 4. The flow diagram of FIG. 4 represents the generalized method applicable to an N-tier cache structure. As shown in this figure, a first key is used to index into a first structure to retrieve a reference to a second-tier cache. This may be repeated, depending upon the number of tiers, N, in the cache structure. For the last (Nth) tier, the cache is indexed using the Nth key to retrieve the stored object.
  • In the context of the preferred embodiment, in which the cache subsystem is implemented in a network transformation proxy, keys in the first-tier cache 26 comprise the names (e.g., URLs) of the respective content stored therein. Objects in the first-tier cache 26 comprise references to caches in second-tier 24. Keys in the second-tier caches are based on parameters that specify a different version of the content identified by the URLs. Objects in the second-tier caches comprise the Web content stored by cache subsystem 18. In combination, they keys of the first- and second-tier caches can be used to store or retrieve any version of any piece of content stored in cache subsystem 18.
  • In a simple embodiment of the current invention, two different caches, or as many caches as are needed, each use a key to store a value. The functionality of each cache is similar. The caches may comprise any caching or associative memory structure.
  • One embodiment of the current invention is a multi-tiered caching system. In a simple embodiment, the current invention uses a two-tiered caching system. In the first tier, a key based on content name is used to identify one of many secondary caches. Within the secondary cache, a particular version of the content specified in the first tier key is identified with a key that encapsulates the information specifying its version. Programmatically, this can be thought of as:
    Level_1_Cache := CacheOf<
     f(Content_Name),
     Level_2_Cache
    >
    Level _2_Cache := CacheOf<
     g(Description_Of_Content_Version),
     Content_Version
    >
  • The abstract functions f( ) and g( ) convert their arguments into a compact and easily matchable key. In the preferred embodiment, an MD5 sum is used, but any (approximately) unique encoding could be used. CacheOf<Key, Content> is a caching data structure that stores and retrieves content via association with key.
  • The first tier cache (Level1_Cache) is a cache of caches, in which a key based on the content-name is used to store and retrieve a second tier cache (Level2_Cache). The second tier cache is a standard cache that associates the description of the content version with the appropriate content version. Significantly, the second tier cache key does not need to encapsulate the content-name, as all items, in each second tier cache are different versions of the same content—specifically, the content identified by Content_Name.
  • The second tier cache, which stores a key consisting of a version and a value consisting of a Web page, is similar to existing art in this field. However, the first tier cache, which stores a key consisting of a URL and a value consisting of a secondary cache, is unique in that it stores caches.
  • In a preferred embodiment, the first tier cache (Level1_Cache) is based on the name (e.g., URL) of the content, and it points to a second tier cache. The second tier cache (corresponding to Level2_Cache) is based on the type and parameter settings of the transformations that have been applied to the content.
  • In the preferred embodiment, the first tier cache (corresponding to Level1_Cache described in the simple embodiment above) is keyed using an MD5 Sum of the content URL. The MD5 algorithm, developed by Professor Ronald L. Rivest of MIT, is a commonly used one-way function, with the property that it is extraordinarily unlikely that two non-equal inputs will yield the same result. This algorithm makes keys that identify data more efficient.
  • The second tier cache contains multiple versions of the content identified by the URL. The proxy may create these multiple versions by performing parameterized transformations on the Web content. The second tier cache is keyed based on an MD5 Sum of the transformation name and its parameters. Each key identifies the version of the content transformed using those settings.
  • Using the MD5 sum function, this structure can be described as:
    Level_1_Cache := OneCacheOf<
     MD5Sum(URL),
     Level_2_Cache
    >
    Level_2_Cache := OneCacheOf<
     MD5Sum(Transformation_Parameters),
     Transform(Content, Transformation_Parameters)
    >
  • The preferred embodiment uses C++ templates to construct caches within the multi-tier cache structure. A C++ template makes it unnecessary to write separate bodies of code to accomplish similar tasks. It makes the tasks abstract, allowing one C++ object to perform multiple tasks. To accomplish a specific task, keys and values of any type can be assigned to the template. In the case of the present system, a C++ template makes it unnecessary to write two separate bodies of code for the first and second tier caches. The key and value types for the two different caches can both fit within the structure of the same C++ template. Exemplary systems and methods for using C++ templates in this manner are described in detail in U.S. patent application Ser. No. 10/345,593, by inventors Jeremy S. de Bonet, Todd A. Stiers, Jeffrey R. Annison, Phillip Alvelda VII and Paul M. Scanlan, filed on Jan. 16, 2003 and entitled “A Design for Storage and Retrieval of Arbitrary Content and Application Data.”
  • Using multi-tiered caching makes cache lookups more efficient. For example, a caching proxy may store 10 separate versions each of 1,000 URLs. Using the current invention, the URLs would not need to be stored as 10,000 separate entities using 10,000 separate keys. Instead, the URLs could be stored as only 1,000 separate entities using 1,000 separate keys. When performing a lookup for a specific version of a specific page, the proxy would need to search only 1,000 URLs, then 10 versions of that URL. This lookup would require a search of only 1,010 separate entities instead of 10,000.
  • Further, the current invention yields a way to store data that may be common to all the content. For example, the date the content was created or various other HTTP headers may be common across all versions (as in the case of a transforming proxy), and the current invention offers a common place to store this information. The information does not need to be stored independently for each version of the content, and if any changes occur, they can be made to multiple versions of the content at the same time.
  • Also, since all versions of a Web page are stored together in a single cache, a developer can manipulate, dump, or delete them together, without needing to identify each one individually.
  • Developers can extend this cache beyond two tiers. Additional keys that could be used to index into the caches of these tiers could include other identifiers, such as device type, browser, or payment level.
  • As the diversity between network clients grows, so does the need for creating multiple versions of content, each optimized for a different type of client. Before this invention, no method existed to organize this multi-versioned content into a single, unified caching structure.
  • The benefits and advantages which may be provided by the present invention have been described above with regard to specific embodiments. These benefits and advantages, and any elements or limitations that may cause them to occur or to become more pronounced are not to be construed as critical, required, or essential features of any or all of the claims. As used herein, the terms ‘comprises,’ ‘comprising,’ or any other variations thereof, are intended to be interpreted as non-exclusively including the elements or limitations which follow those terms. Accordingly, a system, method, or other embodiment that comprises a set of elements is not limited to only those elements, and may include other elements not expressly listed or inherent to the claimed embodiment.
  • While the present invention has been described with reference to particular embodiments, it should be understood that the embodiments are illustrative and that the scope of the invention is not limited to these embodiments. Many variations, modifications, additions and improvements to the embodiments described above are possible. It is contemplated that these variations, modifications, additions and improvements fall within the scope of the invention as detailed within the following claims.

Claims (21)

1-33. (canceled)
34. A multi-tiered caching system for storing Web content, comprising:
a plurality of caches organized in (n+1) tiers;
wherein each entry in an nth tier cache comprises a content-name key and a reference object;
wherein said content-name key identifies said Web content;
wherein said reference object references a (n+1)th tier cache storing said Web content;
wherein each entry in said (n+1)th tier cache comprises a version cache key and a content object;
wherein said content object stores a version of said Web content; and
wherein said version cache key specifies said version.
35. The multi-tiered caching system of claim 34, wherein said (n+1)th cache stores multiple versions of said Web content.
36. The multi-tiered caching system of claim 34, wherein said Web content comprises a Web page and wherein said (n+1)th cache stores multiple versions of said Web page.
37. The multi-tiered caching system of claim 36, wherein said multiple versions are generated by a network transformation proxy as a result of performing one or more transformations on said Web page.
38. The multi-tiered caching system of claim 34, wherein said version cache key encapsulates a parameterized transformation performed on said Web content and wherein said version of said Web content results from said parameterized transformation.
39. The multi-tiered caching system of claim 34, wherein said content-name key comprises a name for said Web content.
40. The multi-tiered caching system of claim 39, wherein said Web content comprises a Web page and wherein said content-name key comprises a uniform resource locator (URL) corresponding to said Web page.
41. The multi-tiered caching system of claim 34, further comprises a plurality of (n+1) tier caches, wherein each of said plurality of (n+1)th tier caches comprises multiple entries corresponding to multiple versions of a content object identified by a single content-name key stored in said nth tier cache.
42. The multi-tiered caching system of claim 34, wherein said (n+1)th tier cache is configured to store shared information that is common to all entries of said (n+1)th tier cache.
43. The multi-tiered caching system of claim 34, wherein all entries in a cache selected from said plurality of caches are manipulatible via a combined operation.
44. A method for retrieving content from a multi-tiered caching system, comprising:
identifying at least two keys associated with said content, wherein said at least two keys comprise a first key and a second key, where said first key identifies a name of said content, wherein said second key specifies a version of said content, and wherein said first key and said second key reside in different tiers of said multi-tiered caching system;
utilizing said first key to locate a cache in which multiple versions of said content are stored; and
utilizing said second key to obtain said version of said content.
45. The method of claim 44, wherein the step of utilizing said first key to locate a cache further comprises looking up a first object associated with said first key, wherein said cache is a (n+1)th tier cache, wherein said first object identifying said (n+1)th tier cache, wherein said second key resides in said (n+1)th tier cache, and wherein said first key and said first object reside in an nth tier cache.
46. The method of claim 44, wherein said content comprises a Web page and wherein said first key comprises a uniform resource locator (URL) of said Web page.
47. The method of claim 46, wherein said cache stores multiple versions of said Web page identified by said URL.
48. The method of claim 47, wherein the step of utilizing said first key to locate a cache comprises:
looking up a first entry in an nth tier cache that stores said URL, wherein said first entry contains said first key and a corresponding first object, and wherein said first object comprises a reference to said cache, wherein said cache is a (n+1)th tier cache; and
locating said (n+1)th tier cache using said reference.
49. The method of claim 48, wherein the step of utilizing said second key to obtain said version of said content comprises:
looking up a second entry in said (n+1)th tier cache that stores multiple versions of said Web page identified by said URL, wherein said second entry contains said second key and a corresponding second object, and wherein said second object comprises said version of said Web page; and
retrieving said version of said Web page.
50. A software product embodied in a computer-readable medium carrying computer-executable instructions implementing a method of caching and retrieving content via a multi-tiered cache system, wherein said computer-executable instructions comprise:
code for performing one or more transformations on said content, said one or more transformations generating multiple versions of said content;
code for generating a plurality of keys associated with said transformations and said content;
code for storing said plurality of keys and said multiple versions of said content in said multi-tiered cache system; and
code for utilizing at least two keys to retrieve a portion of said content from said multi-tiered cache system, wherein said at least two keys comprise a first key and a second key, where said first key identifies a name of said content, wherein said second key specifies a version of said content, and wherein said first key and said second key reside in different tiers of said multi-tiered cache system.
51. The software product of claim 50, wherein said computer-executable instructions further comprise:
code for looking up a first object associated with said first key in a first entry of an nth tier cache;
code for accessing a (n+1)th tier cache identified by said first object; and
code for looking up a second object associated with said second key in a second entry of said a (n+1)th tier cache.
52. The software product of claim 51, wherein said portion of said content comprises a Web page, wherein said second object comprises a version of said Web page, and wherein said first key comprises a uniform resource locator (URL) of said Web page.
53. The software product of claim 51, wherein said computer-executable instructions further comprise:
code for manipulating all entries in said (n+1)th tier cache via a combined operation.
US11/412,206 2002-01-18 2006-04-26 Multi-tiered caching mechanism for the storage and retrieval of content multiple versions Abandoned US20060253461A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/412,206 US20060253461A1 (en) 2002-01-18 2006-04-26 Multi-tiered caching mechanism for the storage and retrieval of content multiple versions

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US34934402P 2002-01-18 2002-01-18
US34942402P 2002-01-18 2002-01-18
US34955302P 2002-01-18 2002-01-18
US10/345,886 US7130872B2 (en) 2002-01-18 2003-01-16 Multi-tiered caching mechanism for the storage and retrieval of content multiple versions
US11/412,206 US20060253461A1 (en) 2002-01-18 2006-04-26 Multi-tiered caching mechanism for the storage and retrieval of content multiple versions

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/345,886 Continuation US7130872B2 (en) 2002-01-18 2003-01-16 Multi-tiered caching mechanism for the storage and retrieval of content multiple versions

Publications (1)

Publication Number Publication Date
US20060253461A1 true US20060253461A1 (en) 2006-11-09

Family

ID=27617820

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/345,886 Expired - Fee Related US7130872B2 (en) 2002-01-18 2003-01-16 Multi-tiered caching mechanism for the storage and retrieval of content multiple versions
US11/412,206 Abandoned US20060253461A1 (en) 2002-01-18 2006-04-26 Multi-tiered caching mechanism for the storage and retrieval of content multiple versions

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/345,886 Expired - Fee Related US7130872B2 (en) 2002-01-18 2003-01-16 Multi-tiered caching mechanism for the storage and retrieval of content multiple versions

Country Status (4)

Country Link
US (2) US7130872B2 (en)
EP (1) EP1502207A2 (en)
AU (1) AU2003209249A1 (en)
WO (1) WO2003062995A2 (en)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161578A1 (en) * 2005-01-19 2006-07-20 Siegel Hilliard B Method and system for providing annotations of a digital work
US20060200503A1 (en) * 2005-03-03 2006-09-07 Nokia Corporation Modifying back-end web server documents at an intermediary server using directives
US20070174485A1 (en) * 2006-01-24 2007-07-26 Novell, Inc. Content distribution via keys
US20110099265A1 (en) * 2009-10-23 2011-04-28 International Business Machines Corporation Defining enforcing and governing performance goals of a distributed caching infrastructure
US20110153770A1 (en) * 2009-10-23 2011-06-23 International Business Machines Corporation Dynamic structural management of a distributed caching infrastructure
US8234282B2 (en) 2007-05-21 2012-07-31 Amazon Technologies, Inc. Managing status of search index generation
US8352449B1 (en) 2006-03-29 2013-01-08 Amazon Technologies, Inc. Reader device content indexing
US8378979B2 (en) 2009-01-27 2013-02-19 Amazon Technologies, Inc. Electronic device with haptic feedback
US8417772B2 (en) 2007-02-12 2013-04-09 Amazon Technologies, Inc. Method and system for transferring content from the web to mobile devices
US20130185387A1 (en) * 2011-12-23 2013-07-18 Akamai Technologies, Inc. Host/path-based data differencing in an overlay network using a compression and differencing engine
US8571535B1 (en) 2007-02-12 2013-10-29 Amazon Technologies, Inc. Method and system for a hosted mobile management service architecture
US8725565B1 (en) 2006-09-29 2014-05-13 Amazon Technologies, Inc. Expedited acquisition of a digital item following a sample presentation of the item
US8793575B1 (en) 2007-03-29 2014-07-29 Amazon Technologies, Inc. Progress indication for a digital work
US8832584B1 (en) 2009-03-31 2014-09-09 Amazon Technologies, Inc. Questions on highlighted passages
US8954444B1 (en) 2007-03-29 2015-02-10 Amazon Technologies, Inc. Search and indexing on a user device
US9087032B1 (en) 2009-01-26 2015-07-21 Amazon Technologies, Inc. Aggregation of highlights
US9116657B1 (en) 2006-12-29 2015-08-25 Amazon Technologies, Inc. Invariant referencing in digital works
US9158741B1 (en) 2011-10-28 2015-10-13 Amazon Technologies, Inc. Indicators for navigating digital works
US9275052B2 (en) 2005-01-19 2016-03-01 Amazon Technologies, Inc. Providing annotations of a digital work
US20160112511A1 (en) * 2014-10-20 2016-04-21 Microsoft Corporation Pre-fetch cache for visualization modification
US9495322B1 (en) 2010-09-21 2016-11-15 Amazon Technologies, Inc. Cover display
US9564089B2 (en) 2009-09-28 2017-02-07 Amazon Technologies, Inc. Last screen rendering for electronic book reader
US9672533B1 (en) 2006-09-29 2017-06-06 Amazon Technologies, Inc. Acquisition of an item based on a catalog presentation of items

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004302564A (en) * 2003-03-28 2004-10-28 Hitachi Ltd Name service providing method, execution device of the same, and processing program of the same
US8224964B1 (en) 2004-06-30 2012-07-17 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
US7437364B1 (en) * 2004-06-30 2008-10-14 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
US7565423B1 (en) * 2004-06-30 2009-07-21 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
US8676922B1 (en) 2004-06-30 2014-03-18 Google Inc. Automatic proxy setting modification
US7587398B1 (en) * 2004-06-30 2009-09-08 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
GB2416879B (en) 2004-08-07 2007-04-04 Surfcontrol Plc Device resource access filtering system and method
GB2418999A (en) * 2004-09-09 2006-04-12 Surfcontrol Plc Categorizing uniform resource locators
GB2418037B (en) 2004-09-09 2007-02-28 Surfcontrol Plc System, method and apparatus for use in monitoring or controlling internet access
GB2418108B (en) 2004-09-09 2007-06-27 Surfcontrol Plc System, method and apparatus for use in monitoring or controlling internet access
US8167722B2 (en) 2005-05-11 2012-05-01 Qualcomm Atheros, Inc Distributed processing system and method
US20070055663A1 (en) * 2005-09-02 2007-03-08 Microsoft Corporation Programmatic response for detected variants of HTTP requests
US9455844B2 (en) 2005-09-30 2016-09-27 Qualcomm Incorporated Distributed processing system and method
US8150938B1 (en) * 2006-06-21 2012-04-03 Qurio Holdings, Inc. Profile aware mediating server
US8102863B1 (en) 2006-06-27 2012-01-24 Qurio Holdings, Inc. High-speed WAN to wireless LAN gateway
US7657611B2 (en) * 2006-10-30 2010-02-02 Google Inc. Content request optimization
US8239491B1 (en) * 2006-10-30 2012-08-07 Google Inc. Content request optimization
US8065275B2 (en) * 2007-02-15 2011-11-22 Google Inc. Systems and methods for cache optimization
US8812651B1 (en) 2007-02-15 2014-08-19 Google Inc. Systems and methods for client cache awareness
US8015174B2 (en) * 2007-02-28 2011-09-06 Websense, Inc. System and method of controlling access to the internet
US8687487B2 (en) 2007-03-26 2014-04-01 Qualcomm Incorporated Method and system for communication between nodes
KR20100081030A (en) * 2009-01-05 2010-07-14 삼성전자주식회사 Mobile terminal having oled and method for controlling power thereof
US8346869B2 (en) * 2009-04-13 2013-01-01 Microsoft Corporation Granular data synchronization for editing multiple data objects
US9130972B2 (en) 2009-05-26 2015-09-08 Websense, Inc. Systems and methods for efficient detection of fingerprinted data and information
US8306858B2 (en) 2010-07-14 2012-11-06 Google Inc. Consolidated content item request for multiple environments
US8849775B2 (en) * 2010-12-15 2014-09-30 Yahoo! Inc. Caching web documents in two or more caches
US9647748B1 (en) 2013-01-21 2017-05-09 Rockwell Collins, Inc. Global broadband antenna system
US9535755B2 (en) * 2012-03-09 2017-01-03 Google Inc. Tiers of data storage for web applications and browser extensions
US20150081964A1 (en) * 2012-05-01 2015-03-19 Hitachi, Ltd. Management apparatus and management method of computing system
US9750079B1 (en) * 2013-01-21 2017-08-29 Rockwell Collins, Inc. Hybrid satellite radio system
US9942299B2 (en) * 2013-03-15 2018-04-10 Yottaa Inc. System and method for managing multiple variants of an HTTP object
US10621277B2 (en) 2013-03-16 2020-04-14 Transform Sr Brands Llc E-Pub creator
US20150134661A1 (en) * 2013-11-14 2015-05-14 Apple Inc. Multi-Source Media Aggregation
US9582160B2 (en) 2013-11-14 2017-02-28 Apple Inc. Semi-automatic organic layout for media streams
US9489104B2 (en) 2013-11-14 2016-11-08 Apple Inc. Viewable frame identification
CN105446909A (en) * 2014-08-29 2016-03-30 国际商业机器公司 Caching management method and system
AU2017250805B2 (en) 2016-04-15 2018-11-08 BR Invention Holding, LLC Mobile medicine communication platform and methods and uses thereof
CN111125138B (en) * 2019-12-26 2023-08-25 深圳前海环融联易信息科技服务有限公司 Method, device, computer equipment and storage medium for polling query data
JP2022032683A (en) * 2020-08-13 2022-02-25 富士フイルムビジネスイノベーション株式会社 Relay device and program

Citations (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5497434A (en) * 1992-05-05 1996-03-05 Acorn Computers Limited Image data compression
US5825917A (en) * 1994-09-30 1998-10-20 Sanyo Electric Co., Ltd. Region-based image processing method, image processing apparatus and image communication apparatus
US5860100A (en) * 1996-10-07 1999-01-12 International Business Machines Corporation Pipelined flushing of a high level cache and invalidation of lower level caches
US5893155A (en) * 1994-07-01 1999-04-06 The Board Of Trustees Of The Leland Stanford Junior University Cache memory for efficient data logging
US5991773A (en) * 1996-04-30 1999-11-23 Brother Kogyo Kabushiki Kaisha Information terminal unit with history management functions
US6005979A (en) * 1997-01-13 1999-12-21 Hewlett-Packard Co. System of data compression by subsampling, and preferably adaptive trim accounting, for sending images to a printer
US6009192A (en) * 1996-12-19 1999-12-28 Xerox Corporation Color correction of a compressed image
US6085198A (en) * 1998-06-05 2000-07-04 Sun Microsystems, Inc. Integrated three-tier application framework with automated class and table generation
US6192382B1 (en) * 1997-09-24 2001-02-20 Mediaone Group, Inc. Method and system for web site construction using HTML fragment caching
US6256712B1 (en) * 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6289358B1 (en) * 1998-04-15 2001-09-11 Inktomi Corporation Delivering alternate versions of objects from an object cache
US20020004917A1 (en) * 1998-06-08 2002-01-10 Michael Malcolm Network object cache engine
US6397217B1 (en) * 1999-03-04 2002-05-28 Futuretense, Inc. Hierarchical caching techniques for efficient dynamic page generation
US6405223B1 (en) * 1998-01-15 2002-06-11 International Business Machines Corporation System for personal storage of different web source versions
US20020073110A1 (en) * 2000-12-12 2002-06-13 Edouard Duvillier Version collection technique implemented on an intrinsic versioning information storage and retrieval system
US6412008B1 (en) * 1999-01-28 2002-06-25 International Business Machines Corporation System and method for cooperative client/server customization of web pages
US20020107995A1 (en) * 2001-01-18 2002-08-08 Lars Skaringer Method and device for providing downloaded objects to an application
US20020143899A1 (en) * 2001-03-30 2002-10-03 Antonio Di Perna Providing access to present and past digital artefacts
US20020156800A1 (en) * 1998-12-01 2002-10-24 Lucent Technologies Inc. Method and apparatus for persistent access to Web resources using relative time-stamps
US6473833B1 (en) * 1999-07-30 2002-10-29 International Business Machines Corporation Integrated cache and directory structure for multi-level caches
US6502108B1 (en) * 1999-10-25 2002-12-31 International Business Machines Corporation Cache-failure-tolerant data storage system storing data objects with version code equipped metadata tokens
US20030074429A1 (en) * 2001-10-05 2003-04-17 Gieseke Eric James Object oriented provisioning server
US20030093645A1 (en) * 2001-11-14 2003-05-15 Wong Thomas K. Methods and apparatus for implementing host-based object storage schemes
US6591337B1 (en) * 1999-04-05 2003-07-08 Lsi Logic Corporation Method and apparatus for caching objects in a disparate management environment
US6605120B1 (en) * 1998-12-10 2003-08-12 International Business Machines Corporation Filter definition for distribution mechanism for filtering, formatting and reuse of web based content
US6675261B2 (en) * 2000-12-22 2004-01-06 Oblix, Inc. Request based caching of data store data
US6675214B2 (en) * 1998-05-13 2004-01-06 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient storage and retrieval of objects in and from an object storage device
US6708196B1 (en) * 1994-04-15 2004-03-16 Microsoft Corporation Method and system for caching presentation data
US6732237B1 (en) * 2000-08-29 2004-05-04 Oracle International Corporation Multi-tier caching system
US6757708B1 (en) * 2000-03-03 2004-06-29 International Business Machines Corporation Caching dynamic content
US6779030B1 (en) * 1997-10-06 2004-08-17 Worldcom, Inc. Intelligent network
US6785769B1 (en) * 2001-08-04 2004-08-31 Oracle International Corporation Multi-version data caching
US6813690B1 (en) * 2001-06-12 2004-11-02 Network Appliance, Inc. Caching media data using content-sensitive identifiers
US20050080768A1 (en) * 2003-10-10 2005-04-14 International Business Machines Corporation Methods and apparatus for dynamic service discovery from Web services representation chain
US6886013B1 (en) * 1997-09-11 2005-04-26 International Business Machines Corporation HTTP caching proxy to filter and control display of data in a web browser
US6981096B1 (en) * 1998-10-02 2005-12-27 International Business Machines Corporation Mapping and logic for combining L1 and L2 directories and/or arrays
US7051274B1 (en) * 1999-06-24 2006-05-23 Microsoft Corporation Scalable computing system for managing annotations

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2361332A (en) 2000-04-13 2001-10-17 Int Computers Ltd Electronic content store
CA2342558A1 (en) * 2000-05-30 2001-11-30 Lucent Technologies, Inc. Internet archive service providing persistent access to web resources
WO2002008940A2 (en) 2000-07-20 2002-01-31 Johnson Rodney D Information archival and retrieval system for internetworked computers

Patent Citations (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5497434A (en) * 1992-05-05 1996-03-05 Acorn Computers Limited Image data compression
US6708196B1 (en) * 1994-04-15 2004-03-16 Microsoft Corporation Method and system for caching presentation data
US5893155A (en) * 1994-07-01 1999-04-06 The Board Of Trustees Of The Leland Stanford Junior University Cache memory for efficient data logging
US5825917A (en) * 1994-09-30 1998-10-20 Sanyo Electric Co., Ltd. Region-based image processing method, image processing apparatus and image communication apparatus
US5991773A (en) * 1996-04-30 1999-11-23 Brother Kogyo Kabushiki Kaisha Information terminal unit with history management functions
US5860100A (en) * 1996-10-07 1999-01-12 International Business Machines Corporation Pipelined flushing of a high level cache and invalidation of lower level caches
US6009192A (en) * 1996-12-19 1999-12-28 Xerox Corporation Color correction of a compressed image
US6005979A (en) * 1997-01-13 1999-12-21 Hewlett-Packard Co. System of data compression by subsampling, and preferably adaptive trim accounting, for sending images to a printer
US6256712B1 (en) * 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6886013B1 (en) * 1997-09-11 2005-04-26 International Business Machines Corporation HTTP caching proxy to filter and control display of data in a web browser
US6192382B1 (en) * 1997-09-24 2001-02-20 Mediaone Group, Inc. Method and system for web site construction using HTML fragment caching
US6779030B1 (en) * 1997-10-06 2004-08-17 Worldcom, Inc. Intelligent network
US6405223B1 (en) * 1998-01-15 2002-06-11 International Business Machines Corporation System for personal storage of different web source versions
US6289358B1 (en) * 1998-04-15 2001-09-11 Inktomi Corporation Delivering alternate versions of objects from an object cache
US6675214B2 (en) * 1998-05-13 2004-01-06 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient storage and retrieval of objects in and from an object storage device
US6085198A (en) * 1998-06-05 2000-07-04 Sun Microsystems, Inc. Integrated three-tier application framework with automated class and table generation
US20020004917A1 (en) * 1998-06-08 2002-01-10 Michael Malcolm Network object cache engine
US6981096B1 (en) * 1998-10-02 2005-12-27 International Business Machines Corporation Mapping and logic for combining L1 and L2 directories and/or arrays
US20020156800A1 (en) * 1998-12-01 2002-10-24 Lucent Technologies Inc. Method and apparatus for persistent access to Web resources using relative time-stamps
US6605120B1 (en) * 1998-12-10 2003-08-12 International Business Machines Corporation Filter definition for distribution mechanism for filtering, formatting and reuse of web based content
US6412008B1 (en) * 1999-01-28 2002-06-25 International Business Machines Corporation System and method for cooperative client/server customization of web pages
US6397217B1 (en) * 1999-03-04 2002-05-28 Futuretense, Inc. Hierarchical caching techniques for efficient dynamic page generation
US6591337B1 (en) * 1999-04-05 2003-07-08 Lsi Logic Corporation Method and apparatus for caching objects in a disparate management environment
US7051274B1 (en) * 1999-06-24 2006-05-23 Microsoft Corporation Scalable computing system for managing annotations
US6473833B1 (en) * 1999-07-30 2002-10-29 International Business Machines Corporation Integrated cache and directory structure for multi-level caches
US6502108B1 (en) * 1999-10-25 2002-12-31 International Business Machines Corporation Cache-failure-tolerant data storage system storing data objects with version code equipped metadata tokens
US6757708B1 (en) * 2000-03-03 2004-06-29 International Business Machines Corporation Caching dynamic content
US6732237B1 (en) * 2000-08-29 2004-05-04 Oracle International Corporation Multi-tier caching system
US20020073110A1 (en) * 2000-12-12 2002-06-13 Edouard Duvillier Version collection technique implemented on an intrinsic versioning information storage and retrieval system
US6675261B2 (en) * 2000-12-22 2004-01-06 Oblix, Inc. Request based caching of data store data
US20020107995A1 (en) * 2001-01-18 2002-08-08 Lars Skaringer Method and device for providing downloaded objects to an application
US20020143899A1 (en) * 2001-03-30 2002-10-03 Antonio Di Perna Providing access to present and past digital artefacts
US6813690B1 (en) * 2001-06-12 2004-11-02 Network Appliance, Inc. Caching media data using content-sensitive identifiers
US6785769B1 (en) * 2001-08-04 2004-08-31 Oracle International Corporation Multi-version data caching
US20030074429A1 (en) * 2001-10-05 2003-04-17 Gieseke Eric James Object oriented provisioning server
US20030093645A1 (en) * 2001-11-14 2003-05-15 Wong Thomas K. Methods and apparatus for implementing host-based object storage schemes
US20050080768A1 (en) * 2003-10-10 2005-04-14 International Business Machines Corporation Methods and apparatus for dynamic service discovery from Web services representation chain

Cited By (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161578A1 (en) * 2005-01-19 2006-07-20 Siegel Hilliard B Method and system for providing annotations of a digital work
US10853560B2 (en) 2005-01-19 2020-12-01 Amazon Technologies, Inc. Providing annotations of a digital work
US9275052B2 (en) 2005-01-19 2016-03-01 Amazon Technologies, Inc. Providing annotations of a digital work
US8131647B2 (en) 2005-01-19 2012-03-06 Amazon Technologies, Inc. Method and system for providing annotations of a digital work
US20060200503A1 (en) * 2005-03-03 2006-09-07 Nokia Corporation Modifying back-end web server documents at an intermediary server using directives
US8688856B2 (en) * 2006-01-24 2014-04-01 Novell, Inc. Techniques for managing a network delivery path of content via a key
US20070174485A1 (en) * 2006-01-24 2007-07-26 Novell, Inc. Content distribution via keys
US8352449B1 (en) 2006-03-29 2013-01-08 Amazon Technologies, Inc. Reader device content indexing
US8725565B1 (en) 2006-09-29 2014-05-13 Amazon Technologies, Inc. Expedited acquisition of a digital item following a sample presentation of the item
US9672533B1 (en) 2006-09-29 2017-06-06 Amazon Technologies, Inc. Acquisition of an item based on a catalog presentation of items
US9292873B1 (en) 2006-09-29 2016-03-22 Amazon Technologies, Inc. Expedited acquisition of a digital item following a sample presentation of the item
US9116657B1 (en) 2006-12-29 2015-08-25 Amazon Technologies, Inc. Invariant referencing in digital works
US8417772B2 (en) 2007-02-12 2013-04-09 Amazon Technologies, Inc. Method and system for transferring content from the web to mobile devices
US8571535B1 (en) 2007-02-12 2013-10-29 Amazon Technologies, Inc. Method and system for a hosted mobile management service architecture
US9219797B2 (en) 2007-02-12 2015-12-22 Amazon Technologies, Inc. Method and system for a hosted mobile management service architecture
US9313296B1 (en) 2007-02-12 2016-04-12 Amazon Technologies, Inc. Method and system for a hosted mobile management service architecture
US8954444B1 (en) 2007-03-29 2015-02-10 Amazon Technologies, Inc. Search and indexing on a user device
US9665529B1 (en) 2007-03-29 2017-05-30 Amazon Technologies, Inc. Relative progress and event indicators
US8793575B1 (en) 2007-03-29 2014-07-29 Amazon Technologies, Inc. Progress indication for a digital work
US8656040B1 (en) 2007-05-21 2014-02-18 Amazon Technologies, Inc. Providing user-supplied items to a user device
US8700005B1 (en) 2007-05-21 2014-04-15 Amazon Technologies, Inc. Notification of a user device to perform an action
US9568984B1 (en) 2007-05-21 2017-02-14 Amazon Technologies, Inc. Administrative tasks in a media consumption system
US8341513B1 (en) 2007-05-21 2012-12-25 Amazon.Com Inc. Incremental updates of items
US8965807B1 (en) 2007-05-21 2015-02-24 Amazon Technologies, Inc. Selecting and providing items in a media consumption system
US8990215B1 (en) 2007-05-21 2015-03-24 Amazon Technologies, Inc. Obtaining and verifying search indices
US9479591B1 (en) 2007-05-21 2016-10-25 Amazon Technologies, Inc. Providing user-supplied items to a user device
US8341210B1 (en) 2007-05-21 2012-12-25 Amazon Technologies, Inc. Delivery of items for consumption by a user device
US8266173B1 (en) 2007-05-21 2012-09-11 Amazon Technologies, Inc. Search results generation and sorting
US9178744B1 (en) 2007-05-21 2015-11-03 Amazon Technologies, Inc. Delivery of items for consumption by a user device
US8234282B2 (en) 2007-05-21 2012-07-31 Amazon Technologies, Inc. Managing status of search index generation
US9888005B1 (en) 2007-05-21 2018-02-06 Amazon Technologies, Inc. Delivery of items for consumption by a user device
US9087032B1 (en) 2009-01-26 2015-07-21 Amazon Technologies, Inc. Aggregation of highlights
US8378979B2 (en) 2009-01-27 2013-02-19 Amazon Technologies, Inc. Electronic device with haptic feedback
US8832584B1 (en) 2009-03-31 2014-09-09 Amazon Technologies, Inc. Questions on highlighted passages
US9564089B2 (en) 2009-09-28 2017-02-07 Amazon Technologies, Inc. Last screen rendering for electronic book reader
US20120215877A1 (en) * 2009-10-23 2012-08-23 International Business Machines Corporation Dynamic structural management of a distributed caching infrastructure
US20110099265A1 (en) * 2009-10-23 2011-04-28 International Business Machines Corporation Defining enforcing and governing performance goals of a distributed caching infrastructure
US9390146B2 (en) * 2009-10-23 2016-07-12 International Business Machines Corporation Dynamic structural management of a distributed caching infrastructure
US10042772B2 (en) * 2009-10-23 2018-08-07 International Business Machines Corporation Dynamic structural management of a distributed caching infrastructure
US20110153770A1 (en) * 2009-10-23 2011-06-23 International Business Machines Corporation Dynamic structural management of a distributed caching infrastructure
US9767031B2 (en) * 2009-10-23 2017-09-19 International Business Machines Corporation Dynamic structural management of a distributed caching infrastructure
US20160378670A1 (en) * 2009-10-23 2016-12-29 International Business Machines Corporation Dynamic structural management of a distributed caching infrastructure
US9760405B2 (en) * 2009-10-23 2017-09-12 International Business Machines Corporation Defining enforcing and governing performance goals of a distributed caching infrastructure
US9495322B1 (en) 2010-09-21 2016-11-15 Amazon Technologies, Inc. Cover display
US9158741B1 (en) 2011-10-28 2015-10-13 Amazon Technologies, Inc. Indicators for navigating digital works
US20130185387A1 (en) * 2011-12-23 2013-07-18 Akamai Technologies, Inc. Host/path-based data differencing in an overlay network using a compression and differencing engine
US9112826B2 (en) * 2011-12-23 2015-08-18 Akamai Technologies, Inc. Data differencing across peers in an overlay network
US9912784B2 (en) * 2011-12-23 2018-03-06 Akamai Technologies, Inc. Data differencing across peers in an overlay network
US20160205221A1 (en) * 2011-12-23 2016-07-14 Akamai Technologies, Inc. Data differencing across peers in an overlay network
US20180262596A1 (en) * 2011-12-23 2018-09-13 Akamai Technologies, Inc. Data differencing across peers in an overlay network
US10951739B2 (en) * 2011-12-23 2021-03-16 Akamai Technologies, Inc. Data differencing across peers in an overlay network
US10038749B2 (en) * 2014-10-20 2018-07-31 Microsoft Technology Licensing, Llc Pre-fetch cache for visualization modification
US20160112511A1 (en) * 2014-10-20 2016-04-21 Microsoft Corporation Pre-fetch cache for visualization modification

Also Published As

Publication number Publication date
WO2003062995A2 (en) 2003-07-31
EP1502207A2 (en) 2005-02-02
AU2003209249A1 (en) 2003-09-02
WO2003062995A3 (en) 2004-11-04
US7130872B2 (en) 2006-10-31
US20030167257A1 (en) 2003-09-04

Similar Documents

Publication Publication Date Title
US7130872B2 (en) Multi-tiered caching mechanism for the storage and retrieval of content multiple versions
US7103593B2 (en) System and method for retrieving information from disparate information sources in a decentralized manner and integrating the information in accordance with a distributed domain model/ontology
US9703885B2 (en) Systems and methods for managing content variations in content delivery cache
US7334087B2 (en) Context-sensitive caching
US7440964B2 (en) Method, device and software for querying and presenting search results
US6763362B2 (en) Method and system for updating a search engine
US7475058B2 (en) Method and system for providing a distributed querying and filtering system
US6564251B2 (en) Scalable computing system for presenting customized aggregation of information
US10331504B2 (en) Method and system for extending application programming interfaces
US20040162822A1 (en) Method and apparatus for converting in-line database queries to stored procedures
US20050246717A1 (en) Database System with Methodology for Providing Stored Procedures as Web Services
JP2006107446A (en) Batch indexing system and method for network document
US8521696B2 (en) Structure of an alternative evaluator for directory operations
KR20040068108A (en) Method and system for network caching
US20020107986A1 (en) Methods and systems for replacing data transmission request expressions
CN100514309C (en) System and method of storing and searching objects through multi-tiered cache memory
CA2537269C (en) Method, device and software for querying and presenting search results
US6915293B2 (en) Method and system for nested SQL functions for net.data on workstations

Legal Events

Date Code Title Description
AS Assignment

Owner name: IDETIC, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DEBONET, JEREMY S.;REEL/FRAME:019236/0175

Effective date: 20011116

AS Assignment

Owner name: MOBITV, INC., CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:IDETIC, INC.;REEL/FRAME:019237/0024

Effective date: 20050824

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION