US20160241667A1 - Extended http object cache system and method - Google Patents
Extended http object cache system and method Download PDFInfo
- Publication number
- US20160241667A1 US20160241667A1 US15/047,594 US201615047594A US2016241667A1 US 20160241667 A1 US20160241667 A1 US 20160241667A1 US 201615047594 A US201615047594 A US 201615047594A US 2016241667 A1 US2016241667 A1 US 2016241667A1
- Authority
- US
- United States
- Prior art keywords
- response
- proxy
- server
- transfer protocol
- hypertext transfer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H04L67/2842—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/062—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H04L67/42—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/18—Information format or content conversion, e.g. adaptation by the network of the transmitted or received information for the purpose of wireless delivery to users or terminals
Definitions
- the disclosed embodiments relate generally to object caching and more particularly, but not exclusively, to methods and systems for an Extended Hypertext Transfer Protocol (HTTP) Object Cache.
- HTTP Extended Hypertext Transfer Protocol
- HTTP caching is described in RFC 2616 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html).
- An HTTP client such as a web browser, makes an HTTP Request “R” to a web server.
- the HTTP client can store the response RR in its cache.
- the HTTP client informs the web server that the HTTP client already has a cached response along with some metadata about the cached response, as part of the HTTP request headers of R.
- the web server uses the rules described in RFC 2616 to decide if the cached response at the client is fresh or if it has gone stale. If the cached response at the client is fresh, the web server returns a ‘304 Not Modified’ response to inform the client to continue to use the cached response. If the cached response at the client is stale, the web server sends the new response “RR_UPDATED”.
- RFC 2616 describes the rules and protocol support for HTTP caching, including headers, response codes, expiration mechanisms, etc.
- Etag header When a web server sends a HTTP response RR for a HTTP request R, the web server can include an Etag header in the response header of the RR, for example “Etag: Etag-String”, to indicate that Etag-String is the value of the Etag header.
- the Etag-String is a small opaque string, and can represent a signature for the Contents of the RR (Contents of RR referred to as CRR henceforth). If the CRR does not change, the Etag in the RR does not change. If the CRR changes, then the web server creates a new Etag ETAG_UPDATED and includes that in RR_UPDATED.
- the HTTP client can cache the RR locally.
- the client makes a subsequent request R for the same resource, the client mentions the Etag in one of the request headers (for example, using a “if-none-match: Etag” header field).
- the web server checks if the current Etag for the response RR matches what the client has provided. If yes, the server knows that the client has the correct version of the object and sends a ‘304 not modified’ response, which is just a few bytes in length. If the Etag does not match, the server sends the complete response RR_UPDATED along with the new Etag ETAG_UPDATED so the client can update its cache.
- Modern web browsers support the Etag mechanism. Many web sites also provide Etags for their content, but this is typically for static files and not for dynamically generated content. Several web sites do not support Etag even for static content, since supporting Etags is optional and requires additional work to be done by the web administrator.
- dynamically generated content is also cacheable. For example, if someone were to look up the timetable of trains from Boston to New York, the web server might fetch this information from a database dynamically, but the response will be same every time (unless there is a change in schedule which causes the response to change).
- An Extended HTTP Object Cache system disclosed herein allows caching of HTTP responses RR where the response headers do not include the Etag header to indicate whether CRR has changed, but the CRR has not changed.
- the disclosed Extended HTTP Object Cache system allows caching of dynamically generated content as well as static content that does not include an ETag in the response headers.
- Extended HTTP Object Cache is applicable in all situations, it is more relevant where the ‘last mile’ connectivity does not have high bandwidth. Examples of low bandwidth ‘last mile’ include cellular data, public shared wireless fidelity (Wi-Fi) hot spots such as airports etc.
- Wi-Fi public shared wireless fidelity
- the Extended HTTP Object Cache drastically cuts down the data transferred in the last mile.
- the disclosed system is available in two modes—double-ended and single-ended.
- FIG. 1 is a top-level block diagram illustrating one embodiment of an Extended HTTP Object Cache system operating in double-ended mode.
- FIG. 2 is a block diagram illustrating an alternative embodiment of the Extended HTTP Object Cache system of FIG. 1 , wherein the system is run in a single ended mode.
- FIG. 3 is a flow chart illustrating one embodiment for processing an HTTP Request from the Application by the Client Proxy of FIG. 1 .
- FIG. 4 is a flow chart illustrating one embodiment for processing an HTTP Request from the Client Proxy on the Server Proxy of FIG. 1 .
- FIG. 5 is a flow chart illustrating one embodiment for processing the Server Proxy Response RR and sending the response to the Application of FIG. 1 .
- FIG. 6 is a flow chart illustrating one embodiment for processing an HTTP Request from the Application and sending the Response to the Application of FIG. 2 .
- a Client 10 is any computer or mobile device that can connect to the Internet and request HTTP objects using an Application 11 running on the Client 10 .
- the Application 11 can also include Web Browsers and applications that make network requests.
- a Destination Server 14 is a web server serving the HTTP requests.
- the Client Extended HTTP Proxy 12 is the client side of the disclosed system and runs on the Client 10 .
- the Client Extended HTTP Proxy 12 can be referred to as ‘Client Proxy’ 12 .
- the Application 11 on the Client machine 10 use the ‘Client Proxy’ 12 as a standard HTTP Proxy as defined in RFC 2068 (https://www.ietf.org/rfc/rfc2068.txt).
- a Server Extended Object Caching Proxy 13 is an enhanced HTTP Proxy that adds the server side of the disclosed system.
- the Server Extended Object Caching Proxy 13 can be referred to as ‘Server Proxy’ 13 .
- the Client 10 As an example with reference to FIG. 1 , consider the Client 10 to be a mobile device using a shared Wi-Fi in a public location trying to access a hotel-booking site (e.g., the Destination Server 14 ) to make a reservation.
- the Client 10 has a slow network connection to the Internet (the last mile).
- the Server Proxy 13 is a machine on a network (e.g., cloud computing), which has a very fast network connection to the Internet.
- data exchange rate between the Server Proxy 13 and the Destination Server 14 is much less than the data exchange rate between the Client 10 and the Destination Server 14 .
- the Application 11 makes an HTTP request R
- the request R is intercepted by the Client Proxy 12 .
- the Client Proxy 12 then forwards the request R to the Server Proxy 13 .
- the Server Proxy 13 fetches the response RR from the Destination Server 14 and sends the response RR back to the Client Proxy 12 , which in turn responds to the Application 11 .
- FIG. 3 is a flow chart illustrating one embodiment for handling the HTTP Request R on the client side, in double ended mode, using the system of FIG. 1 .
- the Application 11 sends the HTTP Request R to the Client Proxy 12 .
- the Client Proxy 12 determines whether it has a cached response RR for the Request R in its local cache.
- step 17 if the response RR is found to be fresh according to the RFC specifications, then in step 18 , the Client Proxy 12 immediately sends the response RR to the Application 11 .
- step 17 if the cached response RR is found to be stale, then in step 19 , the Client Proxy 12 fetches the response header X-ActEtag from the cached RR and adds it to the HTTP Request R. Then in step 20 , the Client Proxy 12 forwards this request to the Server Proxy 13 and fetches the response RR.
- step 16 if the Client Proxy 12 did not find a cached response RR for the request R, the Client Proxy 12 forwards the request R to the Server Proxy 13 and fetches a new response RR.
- step 21 the response RR from the Server Proxy 13 is processed as described in FIG. 5 .
- FIG. 4 One embodiment of processing the request R on the Server Proxy 13 in double ended mode is illustrated in FIG. 4 .
- the HTTP Request R is received from the Client Proxy 12 by the Server Proxy 13 .
- the Server Proxy 13 checks if the request R contains a header field “X-ActEtag: value”. If the header field “X-ActEtag: value” is not found in R, in step 29 , the Server Proxy 13 fetches the response RR from the Destination Server 14 and then in step 28 , the Server Proxy 13 sends the response RR to the Client Proxy 12 .
- the Server Proxy 13 first fetches the response RR from the destination server 14 . Then in step 25 , the Server Proxy 13 computes a hash digest (for example, an MD5 digest) “hash” of the Contents of RR (CRR).
- a hash digest for example, an MD5 digest
- the Server Proxy 13 checks if the computed “hash” is same as “value” that was present in the X-ActEtag header value. If the “hash” is same as “value”, the Server Proxy 13 knows that the CRR at the Client Proxy 12 is same as what the Destination Server 14 sent and so in step 27 , the Server Proxy 13 sends a “304 Act Not Modified” response to the Client Proxy 12 .
- the Server Proxy 13 instead of sending the whole CRR, which can be a large file, only a few bytes of “304 Act Not Modified” are sent over the last mile to the Client Proxy 12 , thus making it possible to cache RFC-non-cacheable content. A large data transfer thus can be avoided in the last mile leading to increased speed of fetching the content and data savings on the last mile.
- FIG. 5 is a flow chart of handling of the HTTP Response RR from the Server Proxy 13 on the Client Proxy 12 , in double ended mode of FIG. 1 (step 21 of FIG. 3 ).
- the Client Proxy 12 received the HTTP response RR from the Server Proxy 13 .
- the Client Proxy 12 checks if the response code RC is 200 OK. If yes, the Client Proxy 12 computes a hash digest (for example, an MD5 digest) “hash” of the Contents of RR (CRR).
- the Client Proxy 12 and the Server Proxy 13 use the mechanism of step 25 to compute the “hash” value.
- step 32 the Client Proxy 12 then adds a response header “X-ActEtag: hash” to the response header of RR. Then, in step 33 , the Client Proxy 12 updates its local cache with this response RR, and sends RR to the Application 11 .
- step 31 if the response code RC is not 200 OK, then in step 34 , the Client Proxy 12 checks if the response code RC is 304 . In step 35 , the Client Proxy 12 then checks if response code RC is “304 Act Not Modified”. If yes, the Client Proxy 12 takes this as an indication from the Server Proxy 13 that the response RR in its cache is same as what the Destination Server 14 sent, and so in step 36 , the Client Proxy 12 fetches the response RR from its local cache and sends RR to the Application 11 .
- step 35 if the response code RC is not “304 Act Modified”, then the Client Proxy 12 understands that the Destination Server itself has sent a “304 Not Modified” and so in step 37 , sends “304 Not Modified” to the Application 11 .
- step 34 if the response code RC does not contain 304 , the Client Proxy 12 forwards the response RR from the Server Proxy 13 to the Application 11 .
- the computation of the “hash” and addition of X-ActEtag header can be done on the Server Proxy 13 instead of the Client Proxy 12 based on other considerations such as client and server compute power.
- FIG. 6 is a flow chart of one embodiment for handling the HTTP Request R in single ended mode.
- a difference between the double-ended mode in FIG. 1 and single-ended mode in FIG. 2 is that in single ended mode, there is no ‘Client Proxy’ 12 running on the Client 10 .
- the system of FIG. 2 uses the Client Application cache and the standard Etag header that is part of the HTTP Object Caching RFC mentioned earlier.
- the Application 11 sends the HTTP Request R to the Server Proxy 13 in step 38 .
- the Server Proxy 13 checks if there is a request header “if-none-match: act-hashvalue” in the request R. If the answer in step 39 is yes, the Server Proxy 13 then fetches the response RR from the Destination Server 14 in step 40 .
- step 44 the Server Proxy computes a hash digest “hash” of the contents of the response, in same manner as step 25 of the double ended system.
- step 45 the Server Proxy 13 checks if “hash” matches “hashvalue” from the request Etag header. If the answer in step 45 is yes, the Server Proxy 13 realizes that the Application 11 has the same CRR as sent by the Destination Server 14 and so in step 46 , the Server Proxy sends a “304 Not Modified” response to the client.
- step 45 if the “hash” does not match “hashvalue” from the request Etag header, then the Server Proxy 13 realizes that the response from the Destination Server 14 is newer than what the Application 11 has in its cache. So, in step 42 , the Server Proxy 13 adds an “Etag:act-hash” header to the response RR from the Destination Server 14 and sends the response to the Application 11 in step 43 .
- the Server Proxy 13 is avoiding transmission of the complete response from the Destination Server 14 when the Application 11 has the same content in its local cache as the content from the Destination Server 14 . Instead the Server Proxy 13 sends only a few bytes containing “304 Not Modified” so the Application 11 can use the response from its cache. The size of the data transfer thus can be reduced in the last mile leading to increased speed of fetching the content and data savings on the last mile.
Abstract
An Extended Object Cache system for reducing network traffic and methods for making and using the same. The Extended Object Cache system allows caching of HTTP responses where the response headers do not include Etag headers to indicate whether contents of the response have changed, but the contents have not changed. The system allows caching of dynamically generated content as well as static content that does not include an ETag in the response headers.
Description
- This application claims priority to U.S. provisional patent application, Ser. No. 62/117,879, filed Feb. 18, 2015. Priority to the provisional patent application is expressly claimed, and the disclosure of the provisional application is hereby incorporated herein by reference in its entirety and for all purposes.
- The following United States nonprovisional patent applications are fully owned by the assignee of the present application and are filed on the same date herewith. The disclosure of the nonprovisional patent applications are hereby incorporated herein by reference in their entireties and for all purposes:
- “MULTI-STAGE ACCELERATION SYSTEM AND METHOD,” Attorney Matter No. 29955.4001, filed Feb. 18, 2016; and
- “SYSTEM AND METHOD TO ELIMINATE DUPLICATE BYTE PATTERNS IN NETWORK STREAMS,” Attorney Matter No. 29955.4002, filed Feb. 18, 2016.
- A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
- The disclosed embodiments relate generally to object caching and more particularly, but not exclusively, to methods and systems for an Extended Hypertext Transfer Protocol (HTTP) Object Cache.
- HTTP caching is described in RFC 2616 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html). An HTTP client, such as a web browser, makes an HTTP Request “R” to a web server. When the web server returns a response “RR” to the HTTP client, the HTTP client can store the response RR in its cache. When the client subsequently makes the same request R, the HTTP client informs the web server that the HTTP client already has a cached response along with some metadata about the cached response, as part of the HTTP request headers of R. Based on the HTTP request headers (for example, If-Modified-Since, If-Match), the web server uses the rules described in RFC 2616 to decide if the cached response at the client is fresh or if it has gone stale. If the cached response at the client is fresh, the web server returns a ‘304 Not Modified’ response to inform the client to continue to use the cached response. If the cached response at the client is stale, the web server sends the new response “RR_UPDATED”. RFC 2616 describes the rules and protocol support for HTTP caching, including headers, response codes, expiration mechanisms, etc.
- One of these HTTP caching mechanisms is an Etag header. When a web server sends a HTTP response RR for a HTTP request R, the web server can include an Etag header in the response header of the RR, for example “Etag: Etag-String”, to indicate that Etag-String is the value of the Etag header. The Etag-String is a small opaque string, and can represent a signature for the Contents of the RR (Contents of RR referred to as CRR henceforth). If the CRR does not change, the Etag in the RR does not change. If the CRR changes, then the web server creates a new Etag ETAG_UPDATED and includes that in RR_UPDATED.
- The HTTP client can cache the RR locally. When the client makes a subsequent request R for the same resource, the client mentions the Etag in one of the request headers (for example, using a “if-none-match: Etag” header field). The web server checks if the current Etag for the response RR matches what the client has provided. If yes, the server knows that the client has the correct version of the object and sends a ‘304 not modified’ response, which is just a few bytes in length. If the Etag does not match, the server sends the complete response RR_UPDATED along with the new Etag ETAG_UPDATED so the client can update its cache.
- Modern web browsers support the Etag mechanism. Many web sites also provide Etags for their content, but this is typically for static files and not for dynamically generated content. Several web sites do not support Etag even for static content, since supporting Etags is optional and requires additional work to be done by the web administrator.
- In practice, dynamically generated content is also cacheable. For example, if someone were to look up the timetable of trains from Boston to New York, the web server might fetch this information from a database dynamically, but the response will be same every time (unless there is a change in schedule which causes the response to change).
- An Extended HTTP Object Cache system disclosed herein allows caching of HTTP responses RR where the response headers do not include the Etag header to indicate whether CRR has changed, but the CRR has not changed. The disclosed Extended HTTP Object Cache system allows caching of dynamically generated content as well as static content that does not include an ETag in the response headers.
- Though the Extended HTTP Object Cache is applicable in all situations, it is more relevant where the ‘last mile’ connectivity does not have high bandwidth. Examples of low bandwidth ‘last mile’ include cellular data, public shared wireless fidelity (Wi-Fi) hot spots such as airports etc. The Extended HTTP Object Cache drastically cuts down the data transferred in the last mile.
- The disclosed system is available in two modes—double-ended and single-ended.
-
FIG. 1 is a top-level block diagram illustrating one embodiment of an Extended HTTP Object Cache system operating in double-ended mode. -
FIG. 2 is a block diagram illustrating an alternative embodiment of the Extended HTTP Object Cache system ofFIG. 1 , wherein the system is run in a single ended mode. -
FIG. 3 is a flow chart illustrating one embodiment for processing an HTTP Request from the Application by the Client Proxy ofFIG. 1 . -
FIG. 4 is a flow chart illustrating one embodiment for processing an HTTP Request from the Client Proxy on the Server Proxy ofFIG. 1 . -
FIG. 5 is a flow chart illustrating one embodiment for processing the Server Proxy Response RR and sending the response to the Application ofFIG. 1 . -
FIG. 6 is a flow chart illustrating one embodiment for processing an HTTP Request from the Application and sending the Response to the Application ofFIG. 2 . - It should be noted that the figures are not drawn to scale and that elements of similar structures or functions are generally represented by like reference numerals for illustrative purposes throughout the figures. It also should be noted that the figures are only intended to facilitate the description of the preferred embodiments. The figures do not illustrate every aspect of the described embodiments and do not limit the scope of the present disclosure.
- Turning to
FIG. 1 , aClient 10 is any computer or mobile device that can connect to the Internet and request HTTP objects using anApplication 11 running on theClient 10. TheApplication 11 can also include Web Browsers and applications that make network requests. ADestination Server 14 is a web server serving the HTTP requests. The Client ExtendedHTTP Proxy 12 is the client side of the disclosed system and runs on theClient 10. For simplicity, the ClientExtended HTTP Proxy 12 can be referred to as ‘Client Proxy’ 12. TheApplication 11 on theClient machine 10 use the ‘Client Proxy’ 12 as a standard HTTP Proxy as defined in RFC 2068 (https://www.ietf.org/rfc/rfc2068.txt). A Server ExtendedObject Caching Proxy 13 is an enhanced HTTP Proxy that adds the server side of the disclosed system. For simplicity, the Server ExtendedObject Caching Proxy 13 can be referred to as ‘Server Proxy’ 13. - As an example with reference to
FIG. 1 , consider theClient 10 to be a mobile device using a shared Wi-Fi in a public location trying to access a hotel-booking site (e.g., the Destination Server 14) to make a reservation. TheClient 10 has a slow network connection to the Internet (the last mile). The Server Proxy 13 is a machine on a network (e.g., cloud computing), which has a very fast network connection to the Internet. Thus, data exchange rate between theServer Proxy 13 and theDestination Server 14 is much less than the data exchange rate between theClient 10 and theDestination Server 14. When theApplication 11 makes an HTTP request R, the request R is intercepted by theClient Proxy 12. TheClient Proxy 12 then forwards the request R to theServer Proxy 13. TheServer Proxy 13 fetches the response RR from theDestination Server 14 and sends the response RR back to theClient Proxy 12, which in turn responds to theApplication 11. -
FIG. 3 is a flow chart illustrating one embodiment for handling the HTTP Request R on the client side, in double ended mode, using the system ofFIG. 1 . Instep 15, theApplication 11 sends the HTTP Request R to theClient Proxy 12. Instep 16, TheClient Proxy 12 determines whether it has a cached response RR for the Request R in its local cache. - If yes, in
step 17, if the response RR is found to be fresh according to the RFC specifications, then instep 18, theClient Proxy 12 immediately sends the response RR to theApplication 11. Instep 17, if the cached response RR is found to be stale, then instep 19, theClient Proxy 12 fetches the response header X-ActEtag from the cached RR and adds it to the HTTP Request R. Then instep 20, theClient Proxy 12 forwards this request to theServer Proxy 13 and fetches the response RR. - However, returning to step 16, if the
Client Proxy 12 did not find a cached response RR for the request R, theClient Proxy 12 forwards the request R to theServer Proxy 13 and fetches a new response RR. Instep 21, the response RR from theServer Proxy 13 is processed as described inFIG. 5 . - One embodiment of processing the request R on the
Server Proxy 13 in double ended mode is illustrated inFIG. 4 . Turning toFIG. 4 , instep 22, the HTTP Request R is received from theClient Proxy 12 by theServer Proxy 13. Instep 23, theServer Proxy 13 checks if the request R contains a header field “X-ActEtag: value”. If the header field “X-ActEtag: value” is not found in R, instep 29, theServer Proxy 13 fetches the response RR from theDestination Server 14 and then instep 28, theServer Proxy 13 sends the response RR to theClient Proxy 12. On the other hand, if the Request R contains a header “X-ActEtag: value”, instep 24, theServer Proxy 13 first fetches the response RR from thedestination server 14. Then instep 25, theServer Proxy 13 computes a hash digest (for example, an MD5 digest) “hash” of the Contents of RR (CRR). - In
step 26, theServer Proxy 13 checks if the computed “hash” is same as “value” that was present in the X-ActEtag header value. If the “hash” is same as “value”, theServer Proxy 13 knows that the CRR at theClient Proxy 12 is same as what theDestination Server 14 sent and so instep 27, theServer Proxy 13 sends a “304 Act Not Modified” response to theClient Proxy 12. Advantageously, instead of sending the whole CRR, which can be a large file, only a few bytes of “304 Act Not Modified” are sent over the last mile to theClient Proxy 12, thus making it possible to cache RFC-non-cacheable content. A large data transfer thus can be avoided in the last mile leading to increased speed of fetching the content and data savings on the last mile. -
FIG. 5 is a flow chart of handling of the HTTP Response RR from theServer Proxy 13 on theClient Proxy 12, in double ended mode ofFIG. 1 (step 21 ofFIG. 3 ). Instep 30, theClient Proxy 12 received the HTTP response RR from theServer Proxy 13. Instep 31, theClient Proxy 12 checks if the response code RC is 200 OK. If yes, theClient Proxy 12 computes a hash digest (for example, an MD5 digest) “hash” of the Contents of RR (CRR). TheClient Proxy 12 and theServer Proxy 13 use the mechanism ofstep 25 to compute the “hash” value. Instep 32, theClient Proxy 12 then adds a response header “X-ActEtag: hash” to the response header of RR. Then, instep 33, theClient Proxy 12 updates its local cache with this response RR, and sends RR to theApplication 11. - In
step 31, if the response code RC is not 200 OK, then instep 34, theClient Proxy 12 checks if the response code RC is 304. Instep 35, theClient Proxy 12 then checks if response code RC is “304 Act Not Modified”. If yes, theClient Proxy 12 takes this as an indication from theServer Proxy 13 that the response RR in its cache is same as what theDestination Server 14 sent, and so instep 36, theClient Proxy 12 fetches the response RR from its local cache and sends RR to theApplication 11. Instep 35, if the response code RC is not “304 Act Modified”, then theClient Proxy 12 understands that the Destination Server itself has sent a “304 Not Modified” and so instep 37, sends “304 Not Modified” to theApplication 11. Instep 34, if the response code RC does not contain 304, theClient Proxy 12 forwards the response RR from theServer Proxy 13 to theApplication 11. - In an alternative embodiment, the computation of the “hash” and addition of X-ActEtag header can be done on the
Server Proxy 13 instead of theClient Proxy 12 based on other considerations such as client and server compute power. -
FIG. 6 is a flow chart of one embodiment for handling the HTTP Request R in single ended mode. A difference between the double-ended mode inFIG. 1 and single-ended mode inFIG. 2 is that in single ended mode, there is no ‘Client Proxy’ 12 running on theClient 10. The system ofFIG. 2 uses the Client Application cache and the standard Etag header that is part of the HTTP Object Caching RFC mentioned earlier. In single ended mode, theApplication 11 sends the HTTP Request R to theServer Proxy 13 instep 38. Instep 39, theServer Proxy 13 checks if there is a request header “if-none-match: act-hashvalue” in the request R. If the answer instep 39 is yes, theServer Proxy 13 then fetches the response RR from theDestination Server 14 instep 40. - Then in
step 44, the Server Proxy computes a hash digest “hash” of the contents of the response, in same manner asstep 25 of the double ended system. Instep 45, theServer Proxy 13 checks if “hash” matches “hashvalue” from the request Etag header. If the answer instep 45 is yes, theServer Proxy 13 realizes that theApplication 11 has the same CRR as sent by theDestination Server 14 and so instep 46, the Server Proxy sends a “304 Not Modified” response to the client. Instep 45, if the “hash” does not match “hashvalue” from the request Etag header, then theServer Proxy 13 realizes that the response from theDestination Server 14 is newer than what theApplication 11 has in its cache. So, instep 42, theServer Proxy 13 adds an “Etag:act-hash” header to the response RR from theDestination Server 14 and sends the response to theApplication 11 instep 43. - In the single ended mode, the
Server Proxy 13 is avoiding transmission of the complete response from theDestination Server 14 when theApplication 11 has the same content in its local cache as the content from theDestination Server 14. Instead theServer Proxy 13 sends only a few bytes containing “304 Not Modified” so theApplication 11 can use the response from its cache. The size of the data transfer thus can be reduced in the last mile leading to increased speed of fetching the content and data savings on the last mile. - It should be noted here that for the sake of clarity, the diagrams do not show handling of other HTTP response codes such as 404, 503 etc. These response codes are handled by the
Server Proxy 13 andClient Proxy 12 as described in RFC 2068 (https://www.ietforg/rfc/rfc2068.txt). - The described embodiments are susceptible to various modifications and alternative forms, and specific examples thereof have been shown by way of example in the drawings and are herein described in detail. It should be understood, however, that the described embodiments are not to be limited to the particular forms or methods disclosed, but to the contrary, the present disclosure is to cover all modifications, equivalents, and alternatives.
Claims (13)
1. A method for reducing network traffic between an application and a destination server, comprising:
intercepting a network request from the application via a client proxy;
forwarding the network request to a server proxy;
receiving a network response from the destination server at the server proxy;
determining at the server proxy whether the network response is the same as a cached response at the client proxy; and
transmitting a ‘304 Act Not Modified’ response to the client proxy if the cached response at the client proxy is the same as the network response, otherwise transmitting the network response to the client proxy to transmit the network response to the application.
2. The method of claim 1 , wherein said intercepting the network request comprises intercepting a Hypertext Transfer Protocol request.
3. The method of claim 1 , further comprising computing a hash digest of the network responses to identify if a selected network response has changed.
4. The method of claim 1 , further comprising maintaining a cache of network responses at the client proxy.
5. The method of claim 4 , further comprising adding a Hypertext Transfer Protocol header “X-ActEtag: value” to a selected network response before storing the selected network response in the cache at client proxy.
6. The method of claim 5 , further comprising updating the X-ActEtag header via at least one of the client proxy and the server proxy.
7. The method of claim 4 , wherein said forwarding the network request to the server proxy comprises adding a Hypertext Transfer Protocol header “X-ActEtag: value” to the network request when there is a stale cached response in the cache at the client proxy.
8. The method of claim 7 , further comprising computing a hash digest of the a selected network response and comparing the hash digest with the value from the header “X-ActEtag: value” of the network Request to determine if the cached response at the client is same as the selected network response from the destination server.
9. The method of claim 1 , further comprising fetching the cached response from the cache based on said transmitting the ‘304 Act Not Modified’ response and sending the cached response to the application.
10. A method for reducing Hypertext Transfer Protocol traffic between an application and a destination server, comprising:
intercepting a Hypertext Transfer Protocol request from the application via a server proxy;
receiving a Hypertext Transfer Protocol response from the destination server at the server proxy;
determining at the server proxy whether the Hypertext Transfer Protocol response is same as a cached response at the application; and
transmitting a ‘304 Not Modified’ response to the application if the cached response at is the same as the Hypertext Transfer Protocol response, otherwise transmitting the Hypertext Transfer Protocol response to the application.
11. The method of claim 10 , further comprising computing a hash digest of the Hypertext Transfer Protocol response to identify if a selected Hypertext Transfer Protocol response has changed.
12. The method of claim 11 , further comprising adding a Hypertext Transfer Protocol header “Etag: act-hashvalue” to a selected Hypertext Transfer Protocol response before sending the Hypertext Transfer Protocol response to the application.
13. The method of claim 12 , further comprising comparing a hashvalue from the “Etag: act-hashvalue” header with the computed hash digest of the Hypertext Transfer Protocol response from the destination server to determine if the cached response at the application is the same as the Hypertext Transfer Protocol response from the destination server and sending a ‘304 Not Modified’ Hypertext Transfer Protocol response if the hashvalue and the computed hash value of the Hypertext Transfer Protocol response are the same.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/047,594 US20160241667A1 (en) | 2015-02-18 | 2016-02-18 | Extended http object cache system and method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562117879P | 2015-02-18 | 2015-02-18 | |
US15/047,594 US20160241667A1 (en) | 2015-02-18 | 2016-02-18 | Extended http object cache system and method |
Publications (1)
Publication Number | Publication Date |
---|---|
US20160241667A1 true US20160241667A1 (en) | 2016-08-18 |
Family
ID=56621545
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/047,587 Active 2036-05-06 US10158742B2 (en) | 2015-02-18 | 2016-02-18 | Multi-stage acceleration system and method |
US15/047,591 Active - Reinstated 2036-05-22 US10063665B2 (en) | 2015-02-18 | 2016-02-18 | System and method to eliminate duplicate byte patterns in network streams |
US15/047,594 Abandoned US20160241667A1 (en) | 2015-02-18 | 2016-02-18 | Extended http object cache system and method |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/047,587 Active 2036-05-06 US10158742B2 (en) | 2015-02-18 | 2016-02-18 | Multi-stage acceleration system and method |
US15/047,591 Active - Reinstated 2036-05-22 US10063665B2 (en) | 2015-02-18 | 2016-02-18 | System and method to eliminate duplicate byte patterns in network streams |
Country Status (1)
Country | Link |
---|---|
US (3) | US10158742B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11222020B2 (en) | 2019-08-21 | 2022-01-11 | International Business Machines Corporation | Deduplicated data transmission |
US20220286494A1 (en) * | 2021-03-05 | 2022-09-08 | Zscaler, Inc. | Cached web probes for monitoring user experience |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11256798B2 (en) | 2014-03-19 | 2022-02-22 | Bluefin Payment Systems Llc | Systems and methods for decryption as a service |
US9461973B2 (en) | 2014-03-19 | 2016-10-04 | Bluefin Payment Systems, LLC | Systems and methods for decryption as a service |
DK3790301T3 (en) | 2014-03-19 | 2022-07-04 | Bluefin Payment Sys Llc | SYSTEMS AND METHODS FOR MANUFACTURING FINGERPRINTS FOR ENCRYPTION DEVICES |
US10158735B2 (en) * | 2015-08-07 | 2018-12-18 | Sonicwall Inc. | Read-ahead on signed connections with unsigning, inline, transparent proxies |
US11451441B2 (en) * | 2016-01-12 | 2022-09-20 | Fastly, Inc. | Management of edge dictionary containers in content nodes of a content delivery network |
US11323535B2 (en) * | 2016-03-01 | 2022-05-03 | Fastly, Inc. | Management of edge dictionaries in a content delivery network |
US9667619B1 (en) * | 2016-10-14 | 2017-05-30 | Akamai Technologies, Inc. | Systems and methods for utilizing client side authentication to select services available at a given port number |
US10819749B2 (en) | 2017-04-21 | 2020-10-27 | Netskope, Inc. | Reducing error in security enforcement by a network security system (NSS) |
US11711350B2 (en) | 2017-06-02 | 2023-07-25 | Bluefin Payment Systems Llc | Systems and processes for vaultless tokenization and encryption |
US11070534B2 (en) | 2019-05-13 | 2021-07-20 | Bluefin Payment Systems Llc | Systems and processes for vaultless tokenization and encryption |
WO2018223130A1 (en) | 2017-06-02 | 2018-12-06 | Bluefin Payment Systems Llc | Systems and methods for managing a payment terminal via a web browser |
US10505918B2 (en) * | 2017-06-28 | 2019-12-10 | Cisco Technology, Inc. | Cloud application fingerprint |
US11087179B2 (en) | 2018-12-19 | 2021-08-10 | Netskope, Inc. | Multi-label classification of text documents |
WO2020180123A1 (en) * | 2019-03-06 | 2020-09-10 | Samsung Electronics Co., Ltd. | Method and system for mpquic over qsocks in wireless network |
US11856022B2 (en) | 2020-01-27 | 2023-12-26 | Netskope, Inc. | Metadata-based detection and prevention of phishing attacks |
US11765618B2 (en) * | 2020-03-20 | 2023-09-19 | Nokia Technologies Oy | Wireless communication system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130124621A1 (en) * | 2007-10-15 | 2013-05-16 | Viasat, Inc. | Methods and systems for implementing a cache model in a prefetching system |
US20130198313A1 (en) * | 2012-01-30 | 2013-08-01 | International Business Machines Corporation | Using entity tags (etags) in a hierarchical http proxy cache to reduce network traffic |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5889860A (en) * | 1996-11-08 | 1999-03-30 | Sunhawk Corporation, Inc. | Encryption system with transaction coded decryption key |
US8103783B2 (en) | 2007-03-12 | 2012-01-24 | Citrix Systems, Inc. | Systems and methods of providing security and reliability to proxy caches |
US8370424B2 (en) | 2007-06-22 | 2013-02-05 | Aol Inc. | Systems and methods for caching and serving dynamic content |
US7809820B2 (en) | 2007-07-17 | 2010-10-05 | Microsoft Corporation | Optimizing encrypted wide area network traffic |
US7870105B2 (en) | 2007-11-20 | 2011-01-11 | Hitachi, Ltd. | Methods and apparatus for deduplication in storage system |
US8700892B2 (en) | 2010-03-19 | 2014-04-15 | F5 Networks, Inc. | Proxy SSL authentication in split SSL for client-side proxy agent resources with content insertion |
US10102242B2 (en) * | 2010-12-21 | 2018-10-16 | Sybase, Inc. | Bulk initial download of mobile databases |
US9201652B2 (en) * | 2011-05-03 | 2015-12-01 | Qualcomm Incorporated | Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy |
US10120692B2 (en) | 2011-07-28 | 2018-11-06 | Qualcomm Incorporated | Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form |
US9910904B2 (en) * | 2011-08-30 | 2018-03-06 | International Business Machines Corporation | Replication of data objects from a source server to a target server |
US8681813B2 (en) * | 2011-11-29 | 2014-03-25 | Wyse Technology L.L.C. | Bandwidth optimization for remote desktop protocol |
US20140304464A1 (en) * | 2013-04-03 | 2014-10-09 | Lsi Corporation | Methods and systems for performing deduplication in a data storage system |
-
2016
- 2016-02-18 US US15/047,587 patent/US10158742B2/en active Active
- 2016-02-18 US US15/047,591 patent/US10063665B2/en active Active - Reinstated
- 2016-02-18 US US15/047,594 patent/US20160241667A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130124621A1 (en) * | 2007-10-15 | 2013-05-16 | Viasat, Inc. | Methods and systems for implementing a cache model in a prefetching system |
US20130198313A1 (en) * | 2012-01-30 | 2013-08-01 | International Business Machines Corporation | Using entity tags (etags) in a hierarchical http proxy cache to reduce network traffic |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11222020B2 (en) | 2019-08-21 | 2022-01-11 | International Business Machines Corporation | Deduplicated data transmission |
US20220286494A1 (en) * | 2021-03-05 | 2022-09-08 | Zscaler, Inc. | Cached web probes for monitoring user experience |
US11563665B2 (en) * | 2021-03-05 | 2023-01-24 | Zscaler, Inc. | Detecting web probes versus regular traffic through a proxy including encrypted traffic |
US11647067B2 (en) * | 2021-03-05 | 2023-05-09 | Zscaler, Inc. | Cached web probes for monitoring user experience |
Also Published As
Publication number | Publication date |
---|---|
US20160241479A1 (en) | 2016-08-18 |
US20160241528A1 (en) | 2016-08-18 |
US10158742B2 (en) | 2018-12-18 |
US10063665B2 (en) | 2018-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160241667A1 (en) | Extended http object cache system and method | |
US7552220B2 (en) | System and method to refresh proxy cache server objects | |
US10326853B2 (en) | Method and apparatus for reducing network resource transmission size using delta compression | |
US20050117558A1 (en) | Method for reducing data transport volume in data networks | |
US9807190B2 (en) | Distributed caching system with subscription based notification of cache invalidations | |
US10404820B2 (en) | Systems and methods for controlling cacheability and privacy of objects | |
US8010670B2 (en) | Meta-data based method for local cache utilization | |
US7660844B2 (en) | Network service system and program using data processing | |
KR101026210B1 (en) | System and method for processing extensible markup languagexml documents | |
US20150100664A1 (en) | Systems and methods for caching content with notification-based invalidation with extension to clients | |
US6912591B2 (en) | System and method for patch enabled data transmissions | |
US20080235326A1 (en) | Methods and Apparatus for Accelerating Web Browser Caching | |
EP1908248B1 (en) | A method for communicating state information between a server and a mobile device browser with version handling | |
US20230075806A1 (en) | System and method for content retrieval from remote network regions | |
US20110066676A1 (en) | Method and system for reducing web page download time | |
EP1907922B1 (en) | A method for detecting state changes between data stored in a first computing device and data received from a second computing device | |
US10397360B2 (en) | Systems and methods for caching HTTP POST requests and responses | |
US9253278B2 (en) | Using entity tags (ETags) in a hierarchical HTTP proxy cache to reduce network traffic | |
US20150032803A1 (en) | Method and apparatus for reducing loading time of web pages | |
WO2017080459A1 (en) | Method, device and system for caching and providing service contents and storage medium | |
US8788612B1 (en) | Cache based enhancement to optimization protocol | |
US20150006623A1 (en) | Method and System for Transmitting Network File | |
US20240028583A1 (en) | Distributed data processing | |
US20070153783A1 (en) | Methods, systems, and products for condensing messages | |
US20130007369A1 (en) | Transparent Cache for Mobile Users |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ACTMOBILE NETWORKS, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KULKARNI, PANKAJ G.;RAGHAVENDRA, PHANIRAJ M.;PADINJEREDIL, RAKESH;AND OTHERS;SIGNING DATES FROM 20160719 TO 20160722;REEL/FRAME:042511/0837 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |