IP Library Granted Patent US 10,313,475
Granted Patent B2
US 10,313,475 · App. 15/489,433 · Granted Jun 4, 2019

Internet-based proxy service for responding to server offline errors

Inventors: Lee Hahn Holloway (Santa Cruz, CA); Matthew Browning Prince (San Francisco, CA)
Assignee: CLOUDFLARE, INC.
H04L67/2861H04L61/1511H04L63/0209H04L63/0884H04L63/145H04L67/2838H04L67/2842
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 10,313,475
App. No.
15/489,433
Granted
Jun 4, 2019
Kind
B2
Abstract

A proxy server receives from a client device a request for a network resource that is hosted at an origin server for a domain. The request is received at the proxy server as a result of a DNS request for the domain resolving to the proxy server. The origin server is one of multiple origin servers that belong to different domains that resolve to the proxy server and are owned by different entities. The proxy server transmits the request to the origin server. Responsive to determining that the origin server is offline, the proxy server determines whether the requested resource is available in cache. If it is in cache, the proxy server retrieves the requested resource from the cache and transmits the requested resource to the client device.

Claims (74)

1. A method in a proxy server for responding to server offline errors, comprising:

receiving, from a client device, a request to perform an action on an identified resource hosted at an origin server for a domain, wherein the request is received at the proxy server as a result of a DNS (Domain Name System) request for the domain resolving to the proxy server, and wherein the origin server is one of a plurality of origin servers that belong to different domains that resolve to the proxy server and are owned by different entities;

transmitting the request to the origin server; and

responsive to determining that the origin server is offline, performing the following:

determining that the requested resource is available in cache,

retrieving the requested resource from the cache,

transmitting an offline browsing cookie to the client device for the domain such that when a subsequent request is received from the client device for a resource of the domain that includes the offline browsing cookie, a cached version of the requested resource will be served instead of querying the origin server, and

transmitting the requested resource to the client device.

2. The method of claim 1 , wherein determining that the origin server is offline includes one of: receiving a response from the origin server that indicates that the origin server is offline, and determining that the origin server has failed to respond to the request.

3. The method of claim 1 , wherein responsive to determining that the origin server is offline, further performing:

responsive to determining that the requested resource is an HTML page, rewriting the HTML page to indicate that it is a cached copy of the HTML page.

4. The method of claim 1 , wherein responsive to determining that the origin server is offline, further performing:

responsive to determining that the requested resource is an HTML page, modifying the requested resource to include an automatic server query script which, when executed by a client network application of the client device, automatically causes a query to be transmitted to the origin server to determine whether it is online.

5. The method of claim 4 , wherein the automatic server query script, when executed by the client network application of the client device, automatically and periodically queries the origin server to determine whether the origin server is online.

6. The method of claim 4 , wherein the automatic server query script, when executed by the client network application of the client device, automatically and periodically queries the proxy server to query the origin server to determine whether the origin server is online.

7. The method of claim 6 , further comprising:

receiving a query request from the client device as a result of the automatic server query script executing;

querying the origin server;

responsive to receiving a response from the origin server, deleting the offline browser cookie.

8. The method of claim 1 , further comprising:

receiving, from the client device, a subsequent request for an identified resource hosted at the origin server for the domain, wherein the subsequent request includes the offline browsing cookie;

retrieving the requested resource of the subsequent request from the cache instead of querying the origin server; and

transmitting the requested resource of the subsequent request to the client device.

9. A proxy server to respond to server offline errors, comprising:

a memory to store instructions;

a processor coupled with the memory to process the stored instructions to:

receive, from a client device, a request to perform an action on an identified resource hosted at an origin server for a domain, wherein the request is received at the proxy server as a result of a DNS (Domain Name System) request for the domain resolving to the proxy server, and wherein the origin server is one of a plurality of origin servers that belong to different domains that resolve to the proxy server and are owned by different entities;

transmit the request to the origin server;

determine whether the origin server is offline; and

responsive to a determination that the origin server is offline, perform the following:

determine that the requested resource is available in cache,

retrieve the requested resource from the cache,

transmit an offline browsing cookie to the client device for the domain such that when a subsequent request is received from the client device for a resource of the domain that includes the offline browsing cookie, a cached version of the requested resource is to be served instead of querying the origin server, and

transmit the requested resource to the client device.

10. The proxy server of claim 9 , wherein the determination that the origin server is offline includes the processor to process the stored instructions to perform one of: receive a response from the origin server that indicates that the origin server is offline, and determine that the origin server has failed to respond to the request.

11. The proxy server of claim 9 , wherein responsive to the determination that the origin server is offline, the processor to process the stored instructions to further perform:

determine that the requested resource is an HTML page;

responsive to the determination that the requested resource is an HTML page, rewrite the HTML page to indicate that it is a cached copy of the HTML page.

12. The proxy server of claim 9 , wherein responsive to the determination that the origin server is offline, the processor to process the stored instructions to further perform:

determine that the requested resource is an HTML page;

responsive to the determination that the requested resource is an HTML page, modify the requested resource to include an automatic server query script which, when executed by a client network application of the client device, automatically causes a query to be transmitted to the origin server to determine whether it is online.

13. The proxy server of claim 12 , wherein the automatic server query script, when executed by the client network application of the client device, automatically and periodically queries the origin server to determine whether the origin server is online.

14. The proxy server of claim 12 , wherein the automatic server query script, when executed by the client network application of the client device, automatically and periodically queries the proxy server to query the origin server to determine whether the origin server is online.

15. The proxy server of claim 14 , wherein the processor is further to process the stored instructions to:

receive a query request from the client device as a result of the automatic server query script executing;

query the origin server;

responsive to receipt of a response from the origin server, delete the offline browser cookie.

16. The proxy server of claim 9 , wherein the processor is further to process the stored instructions to:

receive, from the client device, a subsequent request for an identified resource hosted at the origin server for the domain, wherein the subsequent request includes the offline browsing cookie;

retrieve the requested resource of the subsequent request from the cache instead of querying the origin server; and

transmit the requested resource of the subsequent request to the client device.

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

receiving, from a client device, a request to perform an action on an identified resource hosted at an origin server for a domain, wherein the request is received at the proxy server as a result of a DNS (Domain Name System) request for the domain resolving to the proxy server, and wherein the origin server is one of a plurality of origin servers that belong to different domains that resolve to the proxy server and are owned by different entities;

transmitting the request to the origin server; and

responsive to determining that the origin server is offline, performing the following:

determining that the requested resource is available in cache,

retrieving the requested resource from the cache,

transmitting an offline browsing cookie to the client device for the domain such that when a subsequent request is received from the client device for a resource of the domain that includes the offline browsing cookie, a cached version of the requested resource will be served instead of querying the origin server, and

transmitting the requested resource to the client device.

18. The non-transitory machine-readable storage medium of claim 17 , wherein determining that the origin server is offline includes one of: receiving a response from the origin server that indicates that the origin server is offline, and determining that the origin server has failed to respond to the request.

19. The non-transitory machine-readable storage medium of claim 17 , wherein responsive to determining that the origin server is offline, further performing:

responsive to determining that the requested resource is an HTML page, rewriting the HTML page to indicate that it is a cached copy of the HTML page.

20. The non-transitory machine-readable storage medium of claim 17 , wherein responsive to determining that the origin server is offline, further performing:

responsive to determining that the requested resource is an HTML page, modifying the requested resource to include an automatic server query script which, when executed by a client network application of the client device, automatically causes a query to be transmitted to the origin server to determine whether it is online.

21. The non-transitory machine-readable storage medium of claim 20 , wherein the automatic server query script, when executed by the client network application of the client device, automatically and periodically queries the origin server to determine whether the origin server is online.

22. The non-transitory machine-readable storage medium of claim 20 , wherein the automatic server query script, when executed by the client network application of the client device, automatically and periodically queries the proxy server to query the origin server to determine whether the origin server is online.

23. The non-transitory machine-readable storage medium of claim 22 , wherein the operations further comprise:

receiving a query request from the client device as a result of the automatic server query script executing;

querying the origin server;

responsive to receiving a response from the origin server, deleting the offline browser cookie.

24. The non-transitory machine-readable storage medium of claim 17 , wherein the operations further comprise:

receiving, from the client device, a subsequent request for an identified resource hosted at the origin server for the domain, wherein the subsequent request includes the offline browsing cookie;

retrieving the requested resource of the subsequent request from the cache instead of querying the origin server; and

transmitting the requested resource of the subsequent request to the client device.

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 Dec 13, 2018
From: HOLLOWAY, LEE HAHN; PRINCE, MATTHEW BROWNING
To: CLOUDFLARE, INC.
Reel/Frame 047770/0221 →
Continuity (4)
Continuation 14728962 · Jun 2, 2015
Continuation 12939931 · Nov 4, 2010
Provisional Application 61397721 · Apr 1, 2010
Related Publication 20170223132A1 · Aug 3, 2017
Cited By (1)
US 12,250,232