IP Library Granted Patent US 7,103,794
Granted Patent B2
US 7,103,794 · App. 09/093,533 · Granted Sep 5, 2006

Network object cache engine

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,103,794
App. No.
09/093,533
Granted
Sep 5, 2006
Kind
B2
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.

Claims (122)

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.

2. A method as in claims 1 , wherein said network objects include an HTML page to be retrieved from said cache memory and served to the client for display.

3. A method as in claim 1 , including a step of serving said network objects to said client in place of said server.

4. A method as in claim 3 , wherein said network objects are served to said client in place of said server in response to a second request from said client.

5. A method as in claim 3 , wherein said step of serving is responsive to a resource identifier associated with each said network object.

6. A method as in claim 3 , wherein said step of serving is responsive to a uniform resource locator associated with each said network object.

7. A method as in claim 1 , wherein said step of receiving uses a computer network.

8. A method as in claim 1 , wherein said step of receiving is responsive to protocol messages using a computer network, said protocol messages including a resource identifier for each said network object.

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.

10. A method as in claim 9 , wherein said network objects include an HTML page to be retrieved from said cache memory and served to the client for display.

11. A method as in claim 9 , including a step of serving said network objects to said client in place of said server.

12. A method as in claim 11 , wherein said network objects are served to said client in place of said server in response to a second request from said client.

13. A method as in claim 11 , wherein said step of serving is responsive to a resource identifier associated with each said network object.

14. A method as in claim 11 , wherein said step of serving is responsive to a uniform resource locator associated with each said network object.

15. A method as in claim 9 , wherein said step of receiving uses a computer network.

16. A method as in claim 9 , wherein said step of receiving is responsive to protocol messages using a computer network, said protocol messages including a resource identifier for each said network object.

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.

21. A cache engine as in claim 20 , wherein said network objects include an HTML page to be retrieved from said cache memory and served to the client for display.

22. A cache engine as in claim 20 , wherein the instructions further include a step of serving said network objects to said client in place of said server.

23. A cache engine as in claim 22 , wherein said network objects are served to said client in place of said server in response to a second request from said client.

24. A cache engine as in claim 22 , wherein said step of serving is responsive to a resource identifier associated with each said network object.

25. A cache engine as in claim 22 , wherein said step of serving is responsive to a uniform resource locator associated with each said network object.

26. A cache engine as in claim 20 , wherein said step of receiving uses a computer network.

27. A cache engine as in claim 20 , wherein said step of receiving is responsive to protocol messages using a computer network, said protocol messages including a resource identifier for each said network object.

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.

29. A cache engine as in claim 28 , wherein said network objects include an HTML page to be retrieved from said cache memory and served to the client for display.

30. A cache engine as in claim 28 , wherein the instructions further include a step of serving said network objects to said client in place of said server.

31. A cache engine as in claim 30 , wherein said network objects are served to said client in place of said server in response to a second request from said client.

32. A cache engine as in claim 30 , wherein said step of serving is responsive to a resource identifier associated with each said network object.

33. A cache engine as in claim 30 , wherein said step of serving is responsive to a uniform resource locator associated with each said network object.

34. A cache engine as in claim 28 , wherein said step of receiving uses a computer network.

35. A cache engine as in claim 28 , wherein said step of receiving is responsive to protocol messages using a computer network, said protocol messages including a resource identifier for each said network object.

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.

40. A memory as in claim 39 , wherein said network objects include an HTML page to be retrieved from said cache memory and served to the client for display.

41. A memory as in claim 39 , wherein the instructions further include a step of serving said network objects to said client in place of said server.

42. A memory as in claim 41 , wherein said network objects are served to said client in place of said server in response to a second request from said client.

43. A memory as in claim 41 , wherein said step of serving is responsive to a resource identifier associated with each said network object.

44. A memory as in claim 41 , wherein said step of serving is responsive to a uniform resource locator associated with each said network object.

45. A memory as in claim 39 , wherein said step of receiving uses a computer network.

46. A memory as in claim 39 , wherein said step of receiving is responsive to protocol messages using a computer network, said protocol messages including a resource identifier for each said network object.

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.

48. A memory as in claim 47 , wherein said network objects include an HTML page to be retrieved from said cache memory and served to the client for display.

49. A memory as in claim 47 , wherein the instructions further include a step of serving said network objects to said client in place of said server.

50. A memory as in claim 49 , wherein said network objects are served to said client in place of said server in response to a second request from said client.

51. A memory as in claim 49 , wherein said step of serving is responsive to a resource identifier associated with each said network object.

52. A memory as in claim 49 , wherein said step of serving is responsive to a uniform resource locator associated with each said network object.

53. A memory as in claim 47 , wherein said step of receiving uses a computer network.

54. A memory as in claim 47 , wherein said step of receiving is responsive to protocol messages using a computer network, said protocol messages including a resource identifier for each said network object.

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.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: SYMANTEC CORPORATION
To: CA, INC.
Reel/Frame 051144/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2016
From: BLUE COAT SYSTEMS, INC.
To: SYMANTEC CORPORATION
Reel/Frame 039851/0044 →
RELEASE OF SECURITY INTEREST Recorded Aug 1, 2016
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 039516/0929 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 30740/0181 Recorded May 29, 2015
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 035797/0280 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 27727/0144 Recorded May 29, 2015
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 035798/0006 →
SECURITY INTEREST Recorded May 22, 2015
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC, AS THE COLLATERAL AGENT
Reel/Frame 035751/0348 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jul 3, 2013
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 030740/0181 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL RECORDED AT R/F 027727/0178 Recorded Oct 16, 2012
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 029140/0170 →