IP Library Granted Patent US 8,275,829
Granted Patent B2
US 8,275,829 · App. 12/506,587 · Granted Sep 25, 2012

Systems and methods of prefetching objects for caching using QoS

Assignee: Citrix Systems, Inc.
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 8,275,829
App. No.
12/506,587
Filed
Jul 21, 2009
Granted
Sep 25, 2012
Kind
B2
Art Unit
2454
USPC
709/233
Abstract

The present solution provides a variety of techniques for accelerating and optimizing network traffic, such as HTTP based network traffic. The solution described herein provides techniques in the areas of proxy caching, protocol acceleration, domain name resolution acceleration as well as compression improvements. In some cases, the present solution provides various prefetching and/or prefreshening techniques to improve intermediary or proxy caching, such as HTTP proxy caching. In other cases, the present solution provides techniques for accelerating a protocol by improving the efficiency of obtaining and servicing data from an originating server to server to clients. In another cases, the present solution accelerates domain name resolution more quickly. As every HTTP access starts with a URL that includes a hostname that must be resolved via domain name resolution into an IP address, the present solution helps accelerate HTTP access. In some cases, the present solution improves compression techniques by prefetching non-cacheable and cacheable content to use for compressing network traffic, such as HTTP. The acceleration and optimization techniques described herein may be deployed on the client as a client agent or as part of a browser, as well as on any type and form of intermediary device, such as an appliance, proxying device or any type of interception caching and/or proxying device.

Claims (28)

1. A method for prefetching an object responsive to utilization of a connection, the method comprising:

(a) storing in a cache, by an appliance, an object from a server communicated to a client;

(b) determining, by the appliance, that utilization of a transport layer connection established between the appliance and the server is below a predetermined threshold;

(c) prefetching, by the appliance, the object from the server via the transport layer connection in response to the determination and storing the prefetched object in the cache.

2. The method of claim 1 , wherein step (c) further comprises maintaining the utilization of the connection below the predetermined threshold while prefetching the object.

3. The method of claim 1 , wherein step (c) further comprises prefetching the object from the server according to a transmission rate to maintain utilization of bandwidth by the connection within the predetermined threshold.

4. The method of claim 1 , wherein step (b) further comprises determining utilization of the connection by determining that an availability of bandwidth of the connection is below the predetermined threshold.

5. The method of claim 1 , wherein step (b) further comprises determining that a response time of a response from the server to a request from the appliance is below the predetermined threshold.

6. The method of claim 1 , wherein step (b) further comprises determining that a number of prefetching requests in a queue waiting to be transmitted to the server is below the predetermined threshold.

7. The method of claim 1 , wherein step (b) further comprises determining that a queue of prefetching packets transitioned from empty to non-empty.

8. The method of claim 1 , wherein step (b) further comprises determining that a number of active connections of the appliance is below the predetermined threshold.

9. The method of claim 1 , wherein step (b) further comprises determining that a number of active users communicating with the appliance is below the predetermined threshold.

10. The method of claim 1 , wherein step (b) further comprises determining that a number of outstanding requests to the server awaiting responses from the server is below the predetermined threshold.

11. The method of claim 1 , wherein step (c) further comprises generating, by the appliance, a request for the object, the request identified as a speculative request.

12. A system for prefetching an object responsive to utilization of a connection, the system comprising:

a cache of an appliance storing an object from a server communicated to a client;

a detector determining that utilization of a transport layer connection established between the appliance and the server is below a predetermined threshold; and

a prefetcher prefetching the object from the server via the transport layer connection in response to the determination, the prefetched object is stored in the cache.

13. The system of claim 12 , wherein the appliance maintains the utilization of the connection below the predetermined threshold while prefetching the object.

14. The system of claim 12 , wherein the prefetcher prefetches the object from the server according to a transmission rate to maintain utilization of bandwidth of the connection within the predetermined threshold.

15. The system of claim 14 , wherein the prefetcher generates a request to an object server for the object, the request identified as a speculative request.

16. The system of claim 12 , wherein the detector determines utilization of the connection by determining that an availability of bandwidth of the connection is below the predetermined threshold.

17. The system of claim 12 , wherein the detector determines utilization of the connection by determining that a response time of a response from the server to a request from the appliance is below the predetermined threshold.

18. The system of claim 12 , wherein the detector determines utilization of the connection by determining that a number of prefetching requests in a queue waiting to be transmitted to the server is below the predetermined threshold.

19. The system of claim 12 , wherein the detector determines utilization of the connection by determining that a queue of prefetching packets transitioned from empty to non-empty.

20. The system of claim 12 , wherein the detector determines utilization of the connection by determining that a number of active connections of the appliance is below the predetermined threshold.

21. The system of claim 12 , wherein the detector determines utilization of the connection by determining that a number of number of active users communicating with the appliance is below the predetermined threshold.

22. The system of claim 12 , wherein the detector determines utilization of the connection by determining that a number of outstanding requests to the server awaiting responses from the server is below the predetermined threshold.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2012
From: PLAMONDON, ROBERT
To: CITRIX SYSTEMS, INC.
Reel/Frame 028831/0170 →
Continuity (2)
Continuation 11685133 · Mar 12, 2007
Related Publication 20090287842A1 · Nov 19, 2009