IP Library Granted Patent US 9,516,130
Granted Patent B1
US 9,516,130 · App. 14/857,735 · Granted Dec 6, 2016

Canonical API parameters

Inventor: John Graham-Cumming (London, GB)
Assignee: CLOUDFLARE, INC.
H04L67/2842H04L67/42
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 9,516,130
App. No.
14/857,735
Granted
Dec 6, 2016
Kind
B1
Abstract

A caching system receives a request Uniform Resource Identifier (URI) that includes multiple parameters. The request URI is modified to create a canonical request URI including: ordering the parameters by name while keeping a relative order of any of the parameters that have a same name but different value; normalizing a case of the parameters; and removing any of the parameters that are determined to have no effect on a resource that corresponds to the request URI. The modified request URI is hashed thereby creating a hash value. The hash value is used to determine whether the resource that corresponds to the request URI is available in cache.

Claims (69)

1. A method in a caching system, comprising:

receiving a request Uniform Resource Identifier (URI) that includes a plurality of parameters;

modifying the request URI to create a canonical request URI including performing the following:

ordering the plurality of parameters by name while keeping a relative order of any of the plurality of parameters that have a same name but different value;

normalizing a case of the plurality of parameters;

removing any of the plurality of parameters that are determined to have no effect on a resource that corresponds to the request URI;

removing any meaningless character from the request URI; and

removing any meaningless whitespace from the request URI;

hashing the modified request URI to create a hash value; and

determining, using the hash value of the modified request URI, whether the resource that corresponds to the request URI is available in cache through a lookup using the hash value of the modified URI.

2. The method of claim 1 , further comprising:

responsive to determining that the resource that corresponds to the request URI is not available in cache, performing the following:

retrieving the resource;

returning the resource to a source of the request, and

associating the resource in cache with the hash value.

3. The method of claim 1 , further comprising:

responsive to determining that the resource that corresponds to the request URI is available in cache, performing the following:

retrieving the resource from cache, and

returning the resource to a source of the request.

4. The method of claim 1 , further comprising:

accessing a configuration file that defines one or more parameters that have no effect on the resource to determine that there is at least one parameter that has no effect on the resource.

5. The method of claim 1 , wherein the ordering of the plurality of parameters is done by one of alphabetical order and lexicographical order.

6. A non-transitory machine-readable storage medium that provides instructions that, when executed by a processor, cause said processor to perform operations comprising:

receiving a request Uniform Resource Identifier (URI) that includes a plurality of parameters;

modifying the request URI to create a canonical request URI including performing the following:

ordering the plurality of parameters by name while keeping a relative order of any of the plurality of parameters that have a same name but different value;

normalizing a case of the plurality of parameters;

removing any of the plurality of parameters that are determined to have no effect on a resource that corresponds to the request URI;

removing any meaningless character from the request URI; and

removing any meaningless whitespace from the request URI;

hashing the modified request URI to create a hash value;

and

determining, using the hash value of the modified request URI, whether the resource that corresponds to the request URI is available in cache through a lookup using the hash value of the modified URI.

7. The non-transitory machine-readable storage medium of claim 6 that provides further instructions that, when executed by the processor, cause said processor to perform operations comprising:

responsive to determining that the resource that corresponds to the request URI is not available in cache, performing the following:

retrieving the resource;

returning the resource to a source of the request, and

associating the resource in cache with the hash value.

8. The non-transitory machine-readable storage medium of claim 6 that provides further instructions that, when executed by the processor, cause said processor to perform operations comprising:

responsive to determining that the resource that corresponds to the request URI is available in cache, performing the following:

retrieving the resource from cache, and

returning the resource to a source of the request.

9. The non-transitory machine-readable storage medium of claim 6 that provides further instructions that, when executed by the processor, cause said processor to perform operations comprising:

accessing a configuration file that defines one or more parameters that have no effect on the resource to determine that there is at least one parameter that has no effect on the resource.

10. The non-transitory machine-readable storage medium of claim 6 , wherein the ordering of the plurality of parameters is done by one of alphabetical order and lexicographical order.

11. A caching system, comprising;

a processor;

a non-transitory machine-readable storage medium coupled with the processor that stores instructions that, when executed by the processor, cause said processor to perform the following:

receive a request Uniform Resource Identifier (URI) that includes a plurality of parameters;

modify the request URI to create a canonical request URI including performing the following:

order the plurality of parameters by name while keeping a relative order of any of the plurality of parameters that have a same name but different value;

normalize a case of the plurality of parameters;

remove any of the plurality of parameters that are determined to have no effect on a resource that corresponds to the request URI;

remove any meaningless character from the request URI; and

remove any meaningless whitespace from the request URI;

hash the modified request URI to create a hash value; and

determine, using the hash value of the modified request URI, whether the resource that corresponds to the request URI is available in cache through a lookup using the hash value of the modified URI.

12. The caching system of claim 11 , wherein the non-transitory machine-readable storage medium further stores instructions that, when executed by the processor, cause said processor to perform the following:

responsive to a determination that the resource that corresponds to the request URI is not available in cache, perform the following:

retrieve the resource;

return the resource to a source of the request, and

associate the resource in cache with the hash value.

13. The caching system of claim 11 , wherein the non-transitory machine-readable storage medium further stores instructions that, when executed by the processor, cause said processor to perform the following:

responsive to a determination that the resource that corresponds to the request URI is available in cache, perform the following:

retrieve the resource from cache, and

return the resource to a source of the request.

14. The caching system of claim 11 , wherein the non-transitory machine-readable storage medium further stores instructions that, when executed by the processor, cause said processor to perform the following:

access a configuration file that defines one or more parameters that have no effect on the resource to determine that there is at least one parameter that has no effect on the resource.

15. The caching system of claim 11 , wherein the ordering of the plurality of parameters is done by one of alphabetical order and lexicographical order.

Assignments (2)
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2015
From: GRAHAM-CUMMING, JOHN
To: CLOUDFLARE, INC.
Reel/Frame 036604/0459 →