Network object cache engine
DC CAFCFirst Claim
1. A method, including steps of:
- receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in a cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes steps of recording said network objects in said cache memory and retrieving said network objects from said cache memory, so as to substantially minimizes a time required for retrieving said network objects from said mass storage.
12 Assignments
Litigations
1 Petition
Accused Products
Abstract
The invention provides a method and system for caching information objects transmitted using a computer network. A cache engine determines directly when and where to store those objects in a memory (such as RAM) and mass storage (such as one or more disk drives), so as to optimally write those objects to mass storage and later read them from mass storage, without having to maintain them persistently. The cache engine actively allocates those objects to memory or to disk, determines where on disk to store those objects, retrieves those objects in response to their network identifiers (such as their URLs), and determines which objects to remove from the cache so as to maintain sufficient operating space. The cache engine collects information to be written to disk in write episodes, so as to maximize efficiency when writing information to disk and so as to maximize efficiency when later reading that information from disk. The cache engine performs write episodes so as to atomically commit changes to disk during each write episode, so the cache engine does not fail in response to loss of power or storage, or other intermediate failure of portions of the cache. The cache engine also stores key system objects on each one of a plurality of disks, so as to maintain the cache holographic in the sense that loss of any subset of the disks merely decreases the amount of available cache. The cache engine also collects information to be deleted from disk in delete episodes, so as to maximize efficiency when deleting information from disk and so as to maximize efficiency when later writing to those areas having former deleted information. The cache engine responds to the addition or deletion of disks as the expansion or contraction of the amount of available cache.
-
Citations
57 Claims
-
1. A method, including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in a cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes steps of recording said network objects in said cache memory and retrieving said network objects from said cache memory, so as to substantially minimizes a time required for retrieving said network objects from said mass storage. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method, including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in a cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes steps of recording said network objects in said cache memory and retrieving said network objects from said cache memory, so as to perform at least one of;
maximizing a rate at which said network objects can be written to said mass storage, maximizing a rate at which said network objects can be erased from said mass storage, maximizing a rate at which said network objects can be retrieved from said mass storage, or minimizing a time required for retrieving said network objects from said mass storage. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A method, including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in a cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining is performed independently of a file system for said mass storage.
-
-
18. A method, including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in a cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes a step of writing a group of network objects to said mass storage in one or more write episodes, such that said write episodes are performed so as to atomically commit changes to said mass storage during each said write episode by writing modified data and control blocks to the mass storage without erasing corresponding unmodified data and control blocks and then replacing a root node so as to atomically commit the changes.
-
-
19. A method, including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in a cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes a step of deleting a group of network objects to said mass storage in one or more delete episodes, such that said delete episodes are performed so as to atomically commit changes to said mass storage during each said delete episode by writing modified control blocks to the mass storage without erasing corresponding unmodified control blocks and then replacing a root node so as to atomically commit the changes.
-
-
20. A cache engine, including:
-
a cache memory;
an interface for interfacing to a network;
a processor; and
a memory storing information including instructions, the instructions executable by said processor, the instructions including steps of;
(a) receiving a set of network objects in response to a first request to a server from a client; and
(b) maintaining said network objects in said cache memory in said cache engine, said cache engine connected via the network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes steps of recording said network objects in said cache memory and retrieving said network objects from said cache memory, so as to substantially minimizes a time required for retrieving said network objects from said mass storage. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27)
-
-
28. A cache engine, including:
-
a cache memory;
an interface for interfacing to a network;
a processor; and
a memory storing information including instructions, the instructions executable by said processor, the instructions including steps of;
(a) receiving a set of network objects in response to a first request to a server from a client; and
(b) maintaining said network objects in said cache memory in said cache engine, said cache engine connected via the network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes steps of recording said network objects in said cache memory and retrieving said network objects from said cache memory, so as to perform at least one of;
maximizing a rate at which said network objects can be written to said mass storage, maximizing a rate at which said network objects can be erased from said mass storage, maximizing a rate at which said network objects can be retrieved from said mass storage, or minimizing a time required for retrieving said network objects from said mass storage. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35)
-
-
36. A cache engine, including:
-
a cache memory;
an interface for interfacing to a network;
a processor; and
a memory storing information including instructions, the instructions executable by said processor, the instructions including steps of;
(a) receiving a set of network objects in response to a first request to a server from a client; and
(b) maintaining said network objects in said cache memory in said cache engine, said cache engine connected via the network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining is performed independently of a file system for said mass storage.
-
-
37. A cache engine, including:
-
a cache memory;
an interface for interfacing to a network;
a processor; and
a memory storing information including instructions, the instructions executable by said processor, the instructions including steps of;
(a) receiving a set of network objects in response to a first request to a server from a client; and
(b) maintaining said network objects in said cache memory in said cache engine, said cache engine connected via the network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes a step of writing a group of network objects to said mass storage in one or more write episodes, such that said write episodes are performed so as to atomically commit changes to said mass storage during each said write episode by writing modified data and control blocks to the mass storage without erasing corresponding unmodified data and control blocks and then replacing a root node so as to atomically commit the changes.
-
-
38. A cache engine, including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in a cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes a step of deleting a group of network objects to said mass storage in one or more delete episodes, such that said delete episodes are performed so as to atomically commit changes to said mass storage during each said delete episode by writing modified control blocks to the mass storage without erasing corresponding unmodified control blocks and then replacing a root node so as to atomically commit the changes.
-
-
39. A memory storing information including instructions, the instructions executable by a processor to control a cache engine, the instructions including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in the cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes steps of recording said network objects in said cache memory and retrieving said network objects from said cache memory, so as to substantially minimizes a time required for retrieving said network objects from said mass storage. - View Dependent Claims (40, 41, 42, 43, 44, 45, 46)
-
-
47. A memory storing information including instructions, the instructions executable by a processor to control a cache engine, the instructions including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in the cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes steps of recording said network objects in said cache memory and retrieving said network objects from said cache memory, so as to perform at least one of;
maximizing a rate at which said network objects can be written to said mass storage, maximizing a rate at which said network objects can be erased from said mass storage, maximizing a rate at which said network objects can be retrieved from said mass storage, or minimizing a time required for retrieving said network objects from said mass storage. - View Dependent Claims (48, 49, 50, 51, 52, 53, 54)
-
-
55. A memory storing information including instructions, the instructions executable by a processor to control a cache engine, the instructions including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in the cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining is performed independently of a file system for said mass storage.
-
-
56. A memory storing information including instructions, the instructions executable by a processor to control a cache engine, the instructions including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in the cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes a step of writing a group of network objects to said mass storage in one or more write episodes, such that said write episodes are performed so as to atomically commit changes to said mass storage during each said write episode by writing modified data and control blocks to the mass storage without erasing corresponding unmodified data and control blocks and then replacing a root node so as to atomically commit the changes.
-
-
57. A memory storing information including instructions, the instructions executable by a processor to control a cache engine, the instructions including steps of:
-
receiving a set of network objects in response to a first request to a server from a client; and
maintaining said network objects in a cache memory in the cache engine, said cache engine connected via a network to the server and the client, said cache memory including mass storage;
wherein said step of maintaining includes a step of deleting a group of network objects to said mass storage in one or more delete episodes, such that said delete episodes are performed so as to atomically commit changes to said mass storage during each said delete episode by writing modified control blocks to the mass storage without erasing corresponding unmodified control blocks and then replacing a root node so as to atomically commit the changes.
-
Specification