US20200073905A1 - Technologies for cross-device shared web resource cache - Google Patents
Technologies for cross-device shared web resource cache Download PDFInfo
- Publication number
- US20200073905A1 US20200073905A1 US16/348,409 US201616348409A US2020073905A1 US 20200073905 A1 US20200073905 A1 US 20200073905A1 US 201616348409 A US201616348409 A US 201616348409A US 2020073905 A1 US2020073905 A1 US 2020073905A1
- Authority
- US
- United States
- Prior art keywords
- web resource
- response
- shared cache
- cached
- cached web
- 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
- 238000005516 engineering process Methods 0.000 title abstract description 6
- 230000004044 response Effects 0.000 claims abstract description 331
- 238000010200 validation analysis Methods 0.000 claims description 35
- 238000004891 communication Methods 0.000 claims description 27
- 238000000034 method Methods 0.000 description 81
- 230000006870 function Effects 0.000 description 11
- 238000012544 monitoring process Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000013515 script Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
-
- 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
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
Definitions
- Web browsers are a popular platform for application development for many types of computing devices.
- the user experience for web applications may be significantly impacted by network conditions including network availability, bandwidth, and/or latency.
- Typical browsers may provide a single-device or a single-user cache for web resources such as images, scripts, and other remote resources.
- FIG. 1 is a simplified block diagram of at least one embodiment of a system for a cross-device shared web resource cache
- FIG. 2 is a simplified block diagram of at least one embodiment of various environments that may be established by the system of FIG. 1 ;
- FIG. 3 is a simplified flow diagram of at least one embodiment of a method for shared cache discovery that may be executed by a client computing device of FIGS. 1-2 ;
- FIG. 4 is a simplified flow diagram of at least one embodiment of a method for cached resource retrieval that may be executed by the client computing device of FIGS. 1-2 ;
- FIG. 5 is a simplified flow diagram of at least one embodiment of a method for device registration that may be executed by a shared cache computing device of FIGS. 1-2 ;
- FIG. 6 is a simplified flow diagram of at least one embodiment of a method for cached resource installation that may be executed by the shared cache computing device of FIGS. 1-2 ;
- FIG. 7 is a simplified flow diagram of at least one embodiment of a method for cached resource retrieval that may be executed by the shared cache computing device of FIGS. 1-2 .
- references in the specification to “one embodiment,” “an embodiment,” “an illustrative embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may or may not necessarily include that particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
- items included in a list in the form of “at least one of A, B, and C” can mean (A); (B); (C); (A and B); (A and C); (B and C); or (A, B, and C).
- items listed in the form of “at least one of A, B, or C” can mean (A); (B); (C); (A and B); (A and C); (B and C); or (A, B, and C).
- the disclosed embodiments may be implemented, in some cases, in hardware, firmware, software, or any combination thereof.
- the disclosed embodiments may also be implemented. as instructions carried by or stored on one or more transitory or non-transitory machine-readable (e.g., computer-readable) storage media, which may be read and executed by one or more processors.
- a machine-readable storage medium may be embodied as any storage device, mechanism, or other physical structure for storing or transmitting information in a form readable by a machine (e.g., a volatile or non-volatile memory, a media disc, or other media device).
- a system 100 for cross-device web resource caching includes multiple computing devices 102 in communication with one or more remote web servers 104 over a network 108 .
- a computing device 102 may search for other, nearby computing devices 102 that provide a shared web cache service.
- the shared cache may be shared between computing devices 102 on the same local subnetwork or computing devices 102 connected by a short-range communication protocol.
- a web browser or web application of a shared cache client computing device 102 may determine whether web resources 106 downloaded from a remote web server 104 have been designated as cacheable by the web developer and, if so, install the resource in a shared cache.
- Web browsers or web applications executed by other computing devices 102 may request and download cached web resources from the shared cache client computing device 102 .
- the system 100 may enable effective utilization of network resources and avoid contention for network resources by client devices, reduce access latency and network bandwidth requirements, and improve performance and power consumption. Additionally, the system 100 allows web resources to be cached and shared among client devices at the browser level. The system 100 may provide simplicity and flexibility by allowing the web developer and the browser to configure caching, without requiring configuration of proxy servers. Also, web resources may be cached and shared without requiring modification to existing web pages or web applications. The system 100 may also provide an improved offline experience for times when an external network connection is unavailable.
- Each computing device 102 may be embodied as any type of computation or computer device capable of performing the functions described herein, including, without limitation, a computer, a desktop computer, a workstation, a server, a laptop computer, a notebook computer, a tablet computer, a mobile computing device, a wearable computing device, a network appliance, a web appliance, a distributed computing system, a processor-based system, and/or a consumer electronic device.
- a computing device 102 illustratively includes a processor 120 , an input/output subsystem 122 , a memory 124 , a data storage device 126 , and a communication subsystem 128 .
- the computing device 102 may include other or additional components, such as those commonly found in a desktop computer (e.g., various input/output devices), in other embodiments. Additionally, in some embodiments, one or more of the illustrative components may be incorporated in, or otherwise form a portion of, another component. For example, the memory 124 , or portions thereof, may be incorporated in the processor 120 in some embodiments.
- the processor 120 may be embodied as any type of processor capable of performing the functions described herein.
- the processor 120 may be embodied as a single or multi-core processor(s), digital signal processor, microcontroller, or other processor or processing/controlling circuit.
- the memory 124 may be embodied as any type of volatile or non-volatile memory or data storage capable of performing the functions described herein. In operation, the memory 124 may store various data and software used during operation of the computing device 102 such as operating systems, applications, programs, libraries, and drivers.
- the memory 124 is communicatively coupled to the processor 120 via the I/O subsystem 122 , which may be embodied as circuitry and/or components to facilitate input/output operations with the processor 120 , the memory 124 , and other components of the computing device 102 .
- the I/O subsystem 122 may be embodied as, or otherwise include, memory controller hubs, input/output control hubs, platform controller hubs, integrated control circuitry, firmware devices, communication links (i.e., point-to-point links, bus links, wires, cables, light guides, printed circuit board traces, etc.) and/or other components and subsystems to facilitate the input/output operations.
- the I/O subsystem 122 may form a portion of a system-on-a-chip (SoC) and be incorporated, along with the processor 120 , the memory 124 , and other components of the computing device 102 , on a single integrated circuit chip.
- SoC system-on-a-chip
- the data storage device 126 may be embodied as any type of device or devices configured for short-term or long-term storage of data such as, for example, memory devices and circuits, memory cards, hard disk drives, solid-state drives, or other data storage devices.
- the communication subsystem 128 of the computing device 102 may be embodied as any communication circuit, device, or collection thereof, capable of enabling communications between the computing device 102 and other remote devices over a network.
- the communication subsystem 128 may he configured to use any one or more communication technology (e.g., wired or wireless communications) and associated protocols (e.g., Ethernet, Bluetooth®, Wi-Fi® WiMAX, etc.) to effect such communication.
- the computing device 102 may be capable of short-range wireless communications with one or more other computing devices 102 .
- the computing device 102 may also include one or more peripheral devices 130 .
- the peripheral devices 130 may include any number of additional input/output devices, interface devices, and/or other peripheral devices.
- the peripheral devices 130 may include a display, touch screen, graphics circuitry, keyboard, mouse, speaker system, microphone, network interface, and/or other input/output devices, interface devices, and/or peripheral devices.
- the remote web server 104 may he embodied as any type of computation or computer device capable of performing the functions described herein, including, without limitation, a computer, a multiprocessor system, a server, a rack-mounted server, a blade server, a network appliance, a distributed computing system, a processor-based system, and/or a consumer electronic device.
- the remote web server 104 may be embodied as a single server computing device or a collection of servers and associated devices.
- the remote web server 104 may be embodied as a “virtual server” formed from multiple computing devices distributed across the network 108 and operating in a public or private cloud. Accordingly, although the remote web server 104 is illustrated in FIG.
- the remote web server 104 may be embodied as multiple devices cooperating together to facilitate the functionality described below.
- the remote web server 104 may include a processor, an I/O subsystem, a memory, a data storage device, a communication subsystem, and/or other components and devices commonly found in a server or similar computing device.
- Those individual components of the remote web server 104 may be similar to the corresponding components of the computing device 102 , the description of which is applicable to the corresponding components of the remote web server 104 and is not repeated herein so as not to obscure the present disclosure.
- the computing device 102 and the remote web server 104 may be configured to transmit and receive data with each other and/or other devices of the system 100 over the network 108 .
- the network 108 may be embodied as any number of various wired and/or wireless networks.
- the network 108 may be embodied as, or otherwise include, a wired or wireless local area network (LAN), a wired or wireless wide area network (WAN), a cellular network, and/or a publicly-accessible, global network such as the Internet or RF network.
- the network 108 may include any number of additional devices, such as additional computers, routers, and switches, to facilitate communications among the devices of the system 100 .
- a client device 102 a establishes an environment 200 during operation.
- the illustrative environment 200 includes a registration agent 202 and a browser cache agent 206 .
- the various components of the environment 200 may be embodied as hardware, firmware, software, or a combination thereof.
- one or more of the components of the environment 200 may be embodied as circuitry or collection of electrical devices (e.g., registration agent circuitry 202 and/or browser cache agent circuitry 206 ).
- one or more of the registration agent circuitry 202 and/or the browser cache agent circuitry 206 may form a portion of one or more of the processor 120 , the I/O subsystem 122 , and/or other components of the computing device 102 . Additionally, in some embodiments, one or more of the illustrative components may form a portion of another component and/or one or more of the illustrative components may be independent of one another.
- the registration agent 202 is configured to scan for a shared cache device 102 b in local proximity to the client computing device 102 a.
- the client device 102 a may, for example, scan a local network for the shared cache device 102 b or scan for the shared cache device 102 b via a short-range communication protocol.
- the registration agent 202 is further configured to register with the shared cache device 102 b in response to the scan and store authentication credentials associated with the shared cache device 102 b in response to registering with the shared cache device 102 b.
- the authentication credentials may be stored, for example, in an authentication database 204 .
- the browser cache agent 206 is configured to request a cached web resource from the shared cache device 102 b in response to storing the authentication credentials associated with the shared cache device 102 b.
- the browser cache agent 206 may be configured to determine whether a web resource is designated as cacheable and, if cacheable, request the cached web resource that corresponds to the web resource.
- the browser cache agent 206 is further configured to receive, from the shared cache device 102 b, a found response that indicates that the cached web resource was found by the shared cache device 102 b and to receive the cached web resource from the shared cache device 102 b in response to receiving the found response.
- the browser cache agent 206 may be further configured to determine whether validation of the cached web resource is required in response receiving the cached web resource.
- the browser cache agent 206 is configured to send a request to a remote web server 104 to validate that the cached web resource has not been modified in response to determining that validation of the cached web resource is required and to receive a response from the remote web server 104 .
- the browser cache agent 206 is further configured to determine whether the cached web resource has been modified based on the response from the remote web server 104 and to send a message to the shared cache device 102 b indicating that the cached web resource has been modified in response to determining that the cached web resource has been modified.
- the browser cache agent 206 may be further configured to receive, from the shared cache device 102 b, a no-permission response that indicates that the client device 102 a was not validated, and to raise a web browser event in response to receiving the no-permission response.
- the browser cache agent 206 may be further configured to receive, from the shared cache device 102 b, a not-found response that indicates that the cached web resource was not found by the shared cache device 102 b or an expired response that indicates that the cached web resource is expired.
- the browser cache agent 206 may be further configured to request a web resource 106 that corresponds to the cached web resource from a remote web server 104 in response to receiving the not-found response or the expired response.
- a shared cache device 102 b establishes an environment 220 during operation.
- the illustrative environment 220 includes a registration agent 222 , a shared cache agent 226 , and a browser cache agent 230 .
- the various components of the environment 220 may be embodied as hardware, firmware, software, or a combination thereof.
- one or more of the components of the environment 220 may be embodied as circuitry or collection of electrical devices (e.g., registration agent circuitry 222 , shared cache agent circuitry 226 , and/or browser cache agent circuitry 230 ).
- one or more of the registration agent circuitry 222 , the shared cache agent circuitry 226 , and/or the browser cache agent circuitry 230 may form a portion of one or more of the processor 120 , the I/O subsystem 122 , and/or other components of the shared cache device 102 b. Additionally, in some embodiments, one or more of the illustrative components may form a portion of another component and/or one or more of the illustrative components may be independent of one another.
- the registration agent 222 is configured to register a client device 102 a with the shared cache device 102 b and store authentication credentials associated with the client device 102 a in response to registering the client device 102 a.
- the authentication credentials may be stored in, for example, an authentication database 224 .
- the shared cache agent 226 is configured to receive a request for a cached web resource from the client device 102 a in response to storing the authentication credentials.
- the request is associated with an origin of the cached web resource.
- the shared cache agent 226 is further configured to determine whether a cached web resource associated with an origin that matches the request is installed in a shared cache 228 of the shared cache device 102 b in response to receiving the request.
- the shared cache agent 226 is further configured to send a found response to the client device 102 a if a matching cached web resource is installed in the shared cache 228 and to send the cached web resource to the client device 102 a in response to sending the found response.
- the shared cache agent 226 may be further configured to determine whether the cached web resource is expired in response to determining that the cached web resource associated with the origin that matches the request is installed in the shared cache 228 and to send an expired response to the client device 102 a in response to determining that the cached web resource is expired.
- the shared cache agent 226 is configured to remove the cached web resource from the shared cache 228 in response to determining that the cached web resource is expired.
- the shared cache agent 226 may be further configured to send a not-found response to the client device 102 a in response to determining that the cached web resource associated with the origin that matches the request is not installed in the shared cache 228 .
- the shared cache agent 226 may be further configured to determine whether the client device 102 a is validated in response receiving of the request for the cached web resource and to send a no-permission response to the client device 102 a in response to determining that the client device 102 a is not validated.
- the browser cache agent 230 is configured to download a web resource 106 from a remote web server 104 .
- the web resource 106 is associated with an origin.
- the browser cache agent 230 is configured to determine whether the web resource 106 is designated as cacheable in response to downloading the web resource 106 , and to install the web resource 106 in the shared cache 228 as the cached web resource in response to determining that the web resource is designated as cacheable.
- the cached web resource is indicative of the origin associated with the web resource 106 .
- the shared cache agent 226 may be further configured to determine whether the web resource 106 is designated as requiring validation in response to downloading the web resource. Sending the cached web resource to the client device 102 a may include sending metadata associated with the cached web resource that indicates that the cached web resource requires validation. The shared cache agent 226 may be further configured to receive a message from the client device 102 a that indicates that the cached web resource has been modified and to remove the cached web resource from the shared cache 228 in response to receiving the message from the client device 102 a.
- a single computing device 102 may perform the roles of both the client device 102 a and the shared cache device 102 b.
- a single computing device 102 may establish part or all of both environments 200 , 220 .
- a client device 102 a may execute a method 300 for shared cache discovery. It should be appreciated that, in some embodiments, the operations of the method 300 may be performed by one or more modules of the environment 200 of the client device 102 a as shown in FIG. 2 .
- the method 300 begins in block 302 , in which the client device 102 a scans for a nearby shared cache device 102 b.
- the client device 102 a may scan for the nearby shared cache device 102 b using any appropriate network service discovery protocol or other discovery protocol.
- the client device 102 a scans a local-area network for the shared cache device 102 b.
- the client device 102 a may scan, for example, a local wireless network, a local wired network, or any other local network subdivision.
- the client device 102 a may scan for the shared cache device 102 b using a short-range communication protocol.
- the client device 102 a may scan using a short-range radio communication technology such as Bluetooth, near-field communication (NFC), or other short-range protocol.
- the client device 102 a determines whether a shared cache device 102 b has been found. If not, the method 300 loops back to block 302 to continue scanning for a shared cache device 102 b. If a shared cache device 102 b has been found, the method 300 advances to block 310 .
- the client device 102 a sends a request to register with the shared cache device 102 b.
- the request to register may include identification information of the client device 102 a and/or a user of the client device 102 a.
- the request to register may include a device identifier and authentication credentials.
- the client device 102 a determines whether the request to register has been approved.
- the shared cache device 102 b may validate the authentication credentials or perform other security or policy checks before returning an approval to the client device 102 a.
- One potential embodiment of a method for processing the request to register is described below in connection with FIG. 5 . If the registration request was not approved, the method 300 loops back to block 302 to continue scanning for a nearby shared cache device 102 b. If the registration request is approved, the method 300 advances to block 314 .
- the client device 102 a saves authentication credentials for the shared cache device 102 b.
- the client device 102 a may, for example, store a device identifier and authentication credentials associated with the shared cache device 102 b into the authentication database 204 .
- the authentication credentials may allow the client device 102 a and the shared cache device 102 b to establish a secure communication channel to receive cached web resources as described further below.
- the client device 102 a may request cached web resources from the shared cache device 102 b as described below in connection with FIG. 4 .
- the method 300 loops back to block 302 , in which the client device 102 a may continue scanning for nearby shared cache computing devices 102 b.
- a client device 102 a may execute a method 400 for cached resource retrieval. It should be appreciated that, in some embodiments, the operations of the method 400 may be performed by one or more modules of the environment 200 of the client device 102 a as shown in FIG. 2 .
- the method 400 begins in block 402 , in which the client device 102 a monitors for a cacheable web resource download request.
- the download request may be generated by a web browser or a web application during a web browsing session, for example in response to a user clicking a link, entering a URI, or otherwise loading a web page.
- the web resource may be embodied as any downloadable web resource including a textual markup document (e.g., HTML, XML, or other textual markup file), a linked image, a script file, a stylesheet, or other resource.
- the web resource may be designated as cacheable in a shared cache 228 by the web developer.
- the web page markup may designate a particular resource as cacheable, for example by including a predefined HTML attribute such as “x-devices” on the appropriate HTML element (e.g., on an image tag).
- a web page or web application may expressly invoke an API function to designate a resource as cacheable.
- the client device 102 a determines an origin for the request for the cached web resource.
- the origin may be embodied as, for example, a tuple identifying a URI scheme, host, and port number associated with the cached web resource. As described further below, the origin may be used by the shared cache device 102 b to enforce security boundaries for cached web resources.
- the client device 102 a determines whether a request to download a cacheable web resource has been detected. If not, the method 400 loops back to block 402 to continue monitoring for requests to download web resources. If a request to download a cacheable web resource has been detected, the method 400 advances to block 408 .
- the client device 102 a requests the web resource from the shared cache device 102 b.
- the request identifies the requested web resource and the associated origin, for example by forwarding the URI of the requested web resource.
- the client device 102 a may send the request to a nearby shared cache device 102 b that was discovered using the method 300 described above in connection with FIG. 3 .
- the client device 102 a may authenticate to the shared cache device 102 b.
- the client device 102 a may submit a device identifier and credentials generated during authentication as described above in connection with FIG. 3 .
- communications between the client device 102 a and the shared cache device 102 b may be encrypted or otherwise communicated over a secure channel.
- the client device 102 a receives a response from the shared cache device 102 b.
- the shared cache device 102 b sends the response after processing the request for the cached web resource and may send one of several types of responses based on the results of processing the request for the cached web resource.
- One potential embodiment of a method for processing the request for the cached web resource is described below in connection with FIG. 7 .
- the client device 102 a determines whether a no-permission response was received from the shared cache device 102 b. A no-permission response indicates that the client device 102 a was not successfully validated by the shared cache device 102 b. If a no-permission response was not received, the method 400 advances to block 418 , described below. If a no-permission response was received, the method 400 branches to block 416 , in which the client device 102 a raises a web browser event indicating no permission. The event may be handled by client code such as, for example, a web page script or web application code. For example, the client device 102 a may dispatch a DOM event, call a JavaScript event handler, or otherwise raise a browser event. After raising the event, the method 400 loops back to block 402 to monitor for additional requests for cacheable web resources.
- client code such as, for example, a web page script or web application code.
- the client device 102 a may dispatch a DOM event, call a JavaScript event
- the method 400 advances to block 418 , in which the client device 102 a determines whether a not-found response or an expired response was received.
- a not-found response indicates that a cached web resource matching the requested web resource, including the origin of the request, was not found in the shared cache 228 .
- An expired response indicates that a matching cached web resource was found in the shared cache 228 , but has expired. If a not-found response or an expired response was not received (e.g., if a found response was received), the method 400 advances to block 422 , described below.
- the method 400 branches to block 420 , in which the client device 102 a requests the web resource from a remote web server 104 .
- the remote web server 104 may respond with the requested web resource from the associated web resources 106 .
- the method 400 loops back to block 402 to monitor for additional requests for cacheable web resources.
- the method 400 advances to block 422 , in which the client device 102 a receives the requested cached web resource from the shared cache device 102 b.
- the client device 102 a may also receive metadata associated with the requested cached web resource. For example, the client device 102 a may receive one or more HTTP headers associated with the cached web resource.
- the client device 102 a determines whether validation is required for the cached web resource.
- the client device 102 a may, for example, examine metadata such as one or more HTTP headers associated with the cached web resource to determine whether validation is required. If validation is not required, then the method 400 advances to block 434 , described below. If validation is required, then the method 400 branches to block 428 .
- the client device 102 a sends a request to a remote web server 104 associated with the cached web resource to validate that the web resource 106 corresponding to the cached web resource has not been modified.
- the client device 102 a may receive a response (e.g., an HTTP response) indicating whether the web resource has been modified since being installed in the shared cache 228 .
- a response e.g., an HTTP response
- the client device 102 a determines whether the cached web resource was successfully validated. If so, the method 400 branches to block 434 , described below.
- the method 400 advances to block 432 , in which the client device 102 a sends a message to the shared cache device 102 b indicating that the web resource 106 corresponding to the cached web resource has been modified.
- the shared cache device 102 b may remove the cached web resource from the shared cache 228 .
- the method 400 loops back to block 402 to monitor for additional requests for cacheable web resources.
- the client device 102 a may re-attempt the request for the cached web resource, which may result in the client device 102 a downloading the web resource 106 from the remote web server 104 .
- the method 400 advances to block 434 , in which the client device 102 a uses the cached web resource.
- the client device 102 a may render, parse, or otherwise use the cached web resource to display a web page, execute a web application, or otherwise perform browser tasks with the cached web resource.
- the method 400 loops back to block 402 to monitor for additional requests for cacheable web resources.
- a shared cache device 102 b may execute a method 500 for client device registration. It should be appreciated that, in some embodiments, the operations of the method 500 may be performed by one or more modules of the environment 220 of the shared cache device 102 b as shown in FIG. 2 .
- the method 500 begins in block 502 , in which the shared cache device 102 b monitors for a request to register a client device 102 a. The request may be sent by the client device 102 a in response to scanning for a nearby shared cache device 102 b, as described above in connection with FIG. 3 .
- the shared cache device 102 b determines whether a request for registration has been received. If not, the method 500 loops back to block 502 to continue monitoring for requests to register a client device 102 a. If a request is received, the method 500 advances to block 506 .
- the shared cache device 102 b determines whether to approve the request to register the client device 102 a.
- the shared cache device 102 b may, for example, verify authentication credentials provided by the client device 102 a, perform one or more security or policy checks, or otherwise verify the client device 102 a.
- the shared cache device 102 b checks whether the client device 102 a was approved. If not, the method 500 loops back to block 502 to continue monitoring for requests to register a client device 102 a. If the client device 102 a was approved, the method 500 advances to block 510 .
- the shared cache device 102 b saves authentication credentials for the client device 102 a.
- the shared cache device 102 b may, for example, store a device identifier and authentication credentials associated with the client device 102 a into the authentication database 224 .
- the authentication credentials may allow the client device 102 a and the shared cache device 102 b to establish a secure communication channel to transmit cached web resources as described further below.
- the shared cache device 102 b sends an approval of the request to the client device 102 a. After sending the approval, the shared cache device 102 b may process requests for cached web resources from the client device 102 a.
- One potential embodiment of a method for processing requests for cached web resources is described further below in connection with FIG. 7 .
- the method 500 loops back to block 502 to continue monitoring for requests to register a client device 102 a.
- a shared cache device 102 b may execute a method 600 for cached web resource installation. It should be appreciated that, in some embodiments, the operations of the method 600 may be performed by one or more modules of the environment 220 of the shared cache device 102 b as shown in FIG. 2 .
- the method 600 begins in block 602 , in which the shared cache device 102 b downloads a web resource 106 from a remote web server 104 .
- the download may be performed by a web browser or a web application during a web browsing session, for example in response to a user clicking a link, entering a URI, or otherwise loading a web page.
- the web resource may be embodied as any downloadable web resource such as a textual markup document (e.g., HTML, XML, or other textual markup file), a linked image, a script file, a stylesheet, or other resource.
- the shared cache device 102 b determines whether the web resource 106 is designated as cacheable.
- the web resource 106 may be designated as cacheable in the shared cache 228 by the web developer or other source of the web resource 106 .
- the shared cache device 102 b may parse markup (including attributes) of the web resource to determine whether the resource is cacheable. For example, one or more HTML entities or attributes may designate a particular resource as cacheable.
- an HTML element (such as an image tag, a script tag, a link tag, or other element that identifies an external resource) may include one or more particular predefined HTML attributes (e.g., an “x-devices” attribute) indicating that the associated web resource 106 is cacheable.
- the shared cache device 102 b may respond to one or more calls from a web script to a web application programming interface (API).
- the web page or web application may expressly invoke an API function (e.g., a DOM function, a JavaScript function, or other API function) to designate a resource as cacheable.
- an API function e.g., a DOM function, a JavaScript function, or other API function
- a web application may invoke a function such as register( ) with the URI of the web resource 106 that is designated as cacheable.
- the shared cache device 102 b checks whether the web resource 106 is cacheable. If not, the method 600 loops back to block 602 to continue downloading web resources 106 . If the web resource 106 is cacheable, the method 600 advances to block 612 .
- the shared cache device 102 b installs the downloaded web resource 106 into the shared cache 228 .
- the cached web resource may be available to be transmitted to one or more client devices 102 a.
- the shared cache device 102 b also stores the origin of the web resource and/or other related metadata in the shared cache 228 .
- the origin may be embodied as, for example, a tuple identifying a URI scheme, host, and port number associated with the cached web resource. As described further below in connection with Ha 7 , the origin may be used to enforce security boundaries for cached web resources.
- the shared cache device 102 b may store additional metadata such as HTTP headers associated with the web resource.
- the shared cache device 102 b may store metadata relating to cache freshness including expiration data and/or whether validation with the remote web server 104 is required.
- the shared cache device 102 b may evict one or more other cached web resources from the shared cache 228 before installing the cached web resource.
- the shared cache device 102 b may evict cached web resources to free up space in the shared cache 228 .
- the shared cache device 102 b may use any appropriate cache eviction policy, such as a least recently used policy.
- the shared cache device 102 b may remove cached web resources from the shared cache 228 in other circumstances, including in response to an express command to clear a resource the shared cache from a web application (e.g., calling a DOM function, a JavaScript function, or other API function), and/or in response to a user command to clear the shared cache 228 .
- a web application e.g., calling a DOM function, a JavaScript function, or other API function
- the method 600 loops back to block 602 to continue downloading web resources 106 .
- a shared cache device 102 b may execute a method 700 for cached web resource retrieval. It should be appreciated that, in some embodiments, the operations of the method 700 may be performed by one or more modules of the environment 220 of the shared cache device 102 b as shown in FIG. 2 .
- the method 700 begins in block 702 , in which the shared cache device 102 b monitors for requests for a cached web resource from a client device 102 a.
- the request for the cached web resource may, for example, identify a URI of a web resource 106 available on a remote web server 104 .
- the shared cache device 102 b determines the origin of the request.
- the origin may be embodied as, for example, a tuple identifying a URI scheme, host, and port number associated with the cached web resource.
- the origin may represent, for example, the URI scheme, host, and port number associated with an HTML document that references the requested cached web resource (e.g., an image, script file, stylesheet, or other resource linked from the HTML document).
- the shared cache device 102 b determines whether a request has been received. If not, the method 700 loops back to block 702 to continue monitoring for requests. If a request has been received, the method 700 advances to block 708 .
- the shared cache device 102 b validates that the client device 102 a is approved to access the shared cache 228 .
- the shared cache device 102 b may verify that the client device 102 a was successfully registered with the shared cache device 102 b as described above in connection with FIG. 4 .
- the shared cache device 102 b may, for example, verify a device identifier and authentication credentials submitted by the client device 102 a against the authentication database 224 .
- communications between the client device 102 a and the shared cache device 102 b may be encrypted or otherwise communicated over a secure channel. Note that although illustrated as occurring after receiving the request, it should be understood that in some embodiments authentication may occur before receiving the request and that the request may be received over the secure channel.
- the shared cache device 102 b checks whether the client device 102 a was validated. If so, the method 700 advances to block 714 , described below. If the client device 102 a was not validated, the method 700 branches to block 712 , in which the shared cache device 102 b sends a no-permission response to the client device 102 a. After sending the response, the method 700 loops back to block 702 to continue monitoring for requests for cached web resources.
- the method 700 advances to block 714 , in which the shared cache device 102 b looks up a cached web resource matching the request and having the same origin in the shared cache 228 .
- the shared cache device 102 b may enforce a same-origin security policy.
- the shared cache device 102 b determines whether a matching cached web resource was found. If so, the method 700 advances to block 720 , described below.
- the method 700 branches to block 718 , in which the shared cache device 102 b sends a not-found response to the client device 102 a. After sending the response, the method 700 loops back to block 702 to continue monitoring for requests for cached web resources.
- the method 700 advances to block 720 , in which the shared cache device 102 b determines whether the cached web resource has expired.
- the shared cache device 102 b may, for example, examine metadata associated with the cached web resource included in the shared cache 228 , such as an expiration date.
- the shared cache device 102 b checks whether the cached web resource has expired. If not, the method 700 advances to block 728 , described below. If the cached web resource has expired, the method 700 branches to block 724 , in which the shared cache device 102 b clears the cached web resource from the shared cache 228 .
- the shared cache device 102 b sends an expired response to the client device 102 a. After sending the response, the method 700 loops back to block 702 to continue monitoring for requests for cached web resources.
- the method 700 advances to block 728 , in which the shared cache device 102 b sends a found response to the client device 102 a.
- the shared cache device 102 b sends the cached web resource to the client device 102 a.
- the shared cache device 102 b may also send metadata associated with the requested cached web resource.
- the shared cache device 102 b may send one or more HTTP headers associated with the cached web resource.
- the metadata may indicate whether the client device 102 a is required to validate the cached web resource with the remote web server 104 prior to using the cached web resource. As described above in connection with FIG.
- the client device 102 a may send the shared cache device 102 b a message indicating that the resource was not successfully validated.
- the shared cache device 102 b may remove the cached web resource from the shared cache 228 in response to a message indicating that the resource was not successfully validated.
- the method 700 loops back to block 702 to continue monitoring for requests for cached web resources.
- the methods 300 , 400 , 500 , 600 , and/or 700 may be embodied as various instructions stored on a computer-readable media, which may be executed by the processor 120 , the I/O subsystem 122 , and/or other components of a computing device 102 to cause the computing device 102 to perform the respective method 300 , 400 , 500 , 600 , and/or 700 .
- the computer-readable media may be embodied as any type of media capable of being read by a computing device 102 including, but not limited to, the memory 124 , the data storage device 126 , firmware devices, and/or other media.
- An embodiment of the technologies disclosed herein may include any one or more, and any combination of, the examples described below.
- Example 1 includes a computing device for shared cache access, the computing device comprising: a registration agent to (i) scan for a shared cache device in local proximity to the computing device, (ii) register with the shared cache device in response to a scan for the shared cache device, and (iii) store authentication credentials associated with the shared cache device in response to registration with the shared cache device; and a browser cache agent to (i) request a cached web resource from the shared cache device in response to storage of the authentication credentials associated with the shared cache device, (ii) receive a found response from the shared cache device in response to a request of the cached web resource, wherein the found response indicates that the cached web resource was found by the shared cache device, and (iii) receive the cached web resource from the shared cache device in response to receipt of the found response.
- a registration agent to (i) scan for a shared cache device in local proximity to the computing device, (ii) register with the shared cache device in response to a scan for the shared cache device, and (iii) store authentication credentials
- Example 2 includes the subject matter of Example 1, and wherein to register with the shared cache device comprises to: send a registration request to the shared cache device in response to the scan for the shared cache device; and receive an approval from the shared cache device in response to sending of the registration request.
- Example 3 includes the subject matter of any of Examples 1 and 2, and wherein to request the cached web resource from the shared cache device comprises to send a request indicative of the cached web resource and an origin of the cached web resource.
- Example 4 includes the subject matter of any of Examples 1-3, and wherein the browser cache agent is further to: receive a no-permission response from the shared cache device in response to the request of the cached web resource, wherein the no-permission response indicates that the client device was not validated; and raise a web browser event in response to receipt of the no-permission response.
- Example 5 includes the subject matter of any of Examples 1-4, and wherein the browser cache agent is further to: receive a not-found response or an expired response from the shared cache device in response to the request of the cached web resource, wherein the not-found response indicates that the cached web resource was not found by the shared cache device and wherein the expired response indicates that the cached web resource is expired; and request a web resource that corresponds to the cached web resource from a remote web server in response to receipt of the not-found response or the expired response.
- Example 6 includes the subject matter of any of Examples 1-5, and wherein the browser cache agent is further to: determine whether validation of the cached web resource is required in response receipt of the cached web resource; send a request to a remote web server to validate that the cached web resource has not been modified in response to a determination that validation of the cached web resource is required; receive a response from the remote web server; determine whether the cached web resource has been modified based on the response from the remote web server; and send a message to the shared cache device indicating that the cached web resource has been modified in response to a determination that the cached web resource has been modified.
- Example 7 includes the subject matter of any of Examples 1-6, and wherein to receive the cached web resource comprises to receive metadata associated with the cached web resource, wherein the metadata is indicative of whether validation of the cached web resource is required.
- Example 8 includes the subject matter of any of Examples 1-7, and wherein: the browser cache agent is further to determine whether a web resource is designated as cacheable; and to request the cached web resource from the shared cache device comprises to request a cached web resource that corresponds to the web resource from the shared cache device in response to a determination that the web resource is designated as cacheable.
- Example 9 includes the subject matter of any of Examples 1-8, and wherein to determine whether the web resource is designated as cacheable comprises to determine whether an element of a hypertext document designates the web resource as cacheable.
- Example 10 includes the subject matter of any of Examples 1-9, and wherein to determine whether the web resource is designated as cacheable comprises to receive a web application programming interface command that designates the web resource as cacheable.
- Example 11 includes the subject matter of any of Examples 1-10, and wherein the web application programming interface command comprises a web scripting environment command.
- Example 12 includes the subject matter of any of Examples 1-11, and wherein to scan for the shared cache device in local proximity to the computing device comprises to scan a local network for the shared cache device.
- Example 13 includes the subject matter of any of Examples 1-12, and wherein to scan for the shared cache device in local proximity to the computing device comprises to scan via a short-range communication protocol.
- Example 14 includes a computing device for shared cache access, the computing device comprising: a registration agent to (i) register a client device with the computing device and (ii) store authentication credentials associated with the client device in response to registration of the client device; and a shared cache agent to (i) receive a request for a cached web resource from the client device in response to storage of the authentication credentials, wherein the request is associated with an origin of the cached web resource, (ii) determine whether a cached web resource associated with an origin that matches the request is installed in a shared cache of the computing device in response to receipt of the request for the cached web resource, (iii) send a found response to the client device in response to a determination that the cached web resource associated with the origin that matches the request is installed in the shared cache, and (iv) send the cached web resource to the client device in response to a send of the found response.
- a registration agent to (i) register a client device with the computing device and (ii) store authentication credentials associated with the client device in response to
- Example 15 includes the subject matter of Example 14, and wherein to register the client device with the computing device comprises to: receive a request to register a client device; verify the client device in response to receipt of the request to register the client device; and send an approval to the client device in response to verification of the client device.
- Example 16 includes the subject matter of any of Examples 14 and 15, and wherein the shared cache agent is further to send a not-found response to the client device in response to a determination that the cached web resource associated with the origin that matches the request is not installed in the shared cache.
- Example 17 includes the subject matter of any of Examples 14-16, and wherein the shared cache agent is further to: determine whether the client device is validated in response to receipt of the request for the cached web resource; and send a no-permission response to the client device in response to a determination that the client device is not validated.
- Example 18 includes the subject matter of any of Examples 14-17, and wherein the shared cache agent is further to: determine whether the cached web resource is expired in response to the determination that the cached web resource associated with the origin that matches the request is installed in the shared cache; send an expired response to the client device in response to a determination that the cached web resource is expired; and remove the cached web resource from the shared cache in response to the determination that the cached web resource is expired; wherein to send the found response further comprises to send the found response to the client device in response to a determination that the shared web resource is not expired.
- Example 19 includes the subject matter of any of Examples 14-18, and further comprising a browser cache agent to: download a web resource from a remote web server, wherein the web resource is associated with an origin; determine whether the web resource is designated as cacheable in response to a download of the web resource; and install the web resource in the shared cache as the cached web resource in response to a determination that the web resource is designated as cacheable, wherein the cached web resource is indicative of the origin associated with the web resource.
- a browser cache agent to: download a web resource from a remote web server, wherein the web resource is associated with an origin; determine whether the web resource is designated as cacheable in response to a download of the web resource; and install the web resource in the shared cache as the cached web resource in response to a determination that the web resource is designated as cacheable, wherein the cached web resource is indicative of the origin associated with the web resource.
- Example 20 includes the subject matter of any of Examples 14-19, and wherein to determine whether the web resource is designated as cacheable comprises to determine whether an element of a hypertext document designates the web resource as cacheable.
- Example 21 includes the subject matter of any of Examples 14-20, and wherein to determine whether the web resource is designated as cacheable comprises to receive a web application programming interface command that designates the web resource as cacheable.
- Example 22 includes the subject matter of any of Examples 14-21, and wherein: the shared cache agent is further to determine whether the web resource is designated as requiring validation in response to the download of the web resource; and to send the cached web resource comprises to send. metadata associated with the cached web resource, wherein the metadata indicates that the cached web resource requires validation in response to a determination that the web resource is designated as requiring validation.
- Example 23 includes the subject matter of any of Examples 14-22, and wherein the shared cache agent is further to: receive a message from the client device that indicates that the cached web resource has been modified in response to the send of the found response; and remove the cached web resource from the shared cache in response to receipt of the message from the client device.
- Example 24 includes the subject matter of any of Examples 14-23, and wherein to install the web resource in the shared cache comprises to evict an older cached web resource from the shared cache.
- Example 25 includes a method for shared cache access, the method comprising: scanning, by a computing device, for a shared cache device in local proximity to the computing device; registering, by the computing device, with the shared cache device in response to scanning for the shared cache device; storing, by the computing device, authentication credentials associated with the shared cache device in response to registering with the shared cache device; requesting, by the computing device, a cached web resource from the shared cache device in response to storing the authentication credentials associated with the shared cache device; receiving, by the computing device, a found response from the shared cache device in response to requesting the cached web resource, wherein the found response indicates that the cached web resource was found by the shared cache device; and receiving, by the computing device, the cached web resource from the shared cache device in response to receiving the found response.
- Example 26 includes the subject matter of Example 25, and wherein registering with the shared cache device comprises: sending, by the computing device, a registration request to the shared cache device in response to scanning for the shared cache device; and receiving, by the computing device, an approval from the shared cache device in response to sending the registration request.
- Example 27 includes the subject matter of any of Examples 25 and 26, and wherein requesting the cached web resource from the shared cache device comprises sending a request indicative of the cached web resource and an origin of the cached web resource.
- Example 28 includes the subject matter of any of Examples 25-27, and further comprising: receiving, by the computing device, a no-permission response from the shared cache device in response to requesting the cached web resource, wherein the no-permission response indicates that the client device was not validated; and raising, by the computing device, a web browser event in response to receiving the no-permission response.
- Example 29 includes the subject matter of any of Examples 25-28, and further comprising: receiving, by the computing device, a not-found response or an expired response from the shared cache device in response to requesting the cached web resource, wherein the not-found response indicates that the cached web resource was not found by the shared cache device and wherein the expired response indicates that the cached web resource is expired; and requesting, by the computing device, a web resource corresponding to the cached web resource from a remote web server in response to receiving the not-found response or the expired response.
- Example 30 includes the subject matter of any of Examples 25-29, and further comprising: determining, by the computing device, whether validation of the cached web resource is required in response to receiving the cached web resource; sending, by the computing device, a request to a remote web server to validate that the cached web resource has not been modified in response to determining that validation of the cached web resource is required; receiving, by the computing device, a response from the remote web server; determining, by the computing device, whether the cached web resource has been modified based on the response from the remote web server; and sending, by the computing device, a message to the shared cache device indicating that the cached web resource has been modified in response to determining that the cached web resource has been modified.
- Example 31 includes the subject matter of any of Examples 25-30, and wherein receiving the cached web resource comprises receiving metadata associated with the cached web resource, wherein the metadata is indicative of whether validation of the cached web resource is required.
- Example 32 includes the subject matter of any of Examples 25-31, and further comprising: determining, by the computing device, whether a web resource is designated as cacheable; wherein requesting the cached web resource from the shared cache device comprises requesting a cached web resource corresponding to the web resource from the shared cache device in response to determining that the web resource is designated as cacheable.
- Example 33 includes the subject matter of any of Examples 25-32, and wherein determining whether the web resource is designated as cacheable comprises determining whether an element of a hypertext document designates the web resource as cacheable.
- Example 34 includes the subject matter of any of Examples 25-33, and wherein determining whether the web resource is designated as cacheable comprises receiving a web application programming interface command that designates the web resource as cacheable.
- Example 35 includes the subject matter of any of Examples 25-34, and wherein the web application programming interface command comprises a web scripting environment command.
- Example 36 includes the subject matter of any of Examples 25-35, and wherein scanning for the shared cache device in local proximity to the computing device comprises scanning a local network for the shared cache device.
- Example 37 includes the subject matter of any of Examples 25-36, and wherein scanning for the shared cache device in local proximity to the computing device comprises scanning via a short-range communication protocol.
- Example 38 includes a method for shared cache access, the method comprising: registering, by a computing device, a client device with the computing device; storing, by the computing device, authentication credentials associated with the client device in response to registering the client device; receiving, by the computing device, a request for a cached web resource from the client device in response to storing the authentication credentials, wherein the request is associated with an origin of the cached web resource; determining, by the computing device, whether a cached web resource associated with an origin that matches the request is installed in a shared cache of the computing device in response to receiving the request for the cached web resource; sending, by the computing device, a found response to the client device in response to determining that the cached web resource associated with the origin that matches the request is installed in the shared cache; and sending, by the computing device, the cached web resource to the client device in response to sending the found response.
- Example 39 includes the subject matter of Example 38, and wherein registering the client device with the computing device comprises: receiving, by the computing device, a request to register a client device; verifying the client device in response to receiving the request to register the client device; and sending an approval to the client device in response to verifying the client device.
- Example 40 includes the subject matter of any of Examples 38 and 39, and further comprising sending, by the computing device, a not-found response to the client device in response to determining that the cached web resource associated with the origin that matches the request is not installed in the shared cache.
- Example 41 includes the subject matter of any of Examples 38-40, and further comprising: determining, by the computing device, whether the client device is validated in response to receiving the request for the cached web resource; and sending, by the computing device, a no-permission response to the client device in response to determining that the client device is not validated.
- Example 42 includes the subject matter of any of Examples 38-41, and further comprising: determining, by the computing device, whether the cached web resource is expired in response to determining that the cached web resource associated with the origin that matches the request is installed in the shared cache; sending, by the computing device, an expired response to the client device in response to determining that the cached web resource is expired; and removing, by the computing device, the cached web resource from the shared cache in response to determining that the cached web resource is expired; wherein sending the found response further comprises sending the found response to the client device in response to determining that the shared web resource is not expired.
- Example 43 includes the subject matter of any of Examples 38-42, and further comprising: downloading, by the computing device, a web resource from a remote web server, wherein the web resource is associated with an origin; determining, by the computing device, whether the web resource is designated as cacheable in response to downloading the web resource; and installing, by the computing device, the web resource in the shared cache as the cached web resource in response to determining that the web resource is designated as cacheable, wherein the cached web resource is indicative of the origin associated with the web resource.
- Example 44 includes the subject matter of any of Examples 38-43, and wherein determining whether the web resource is designated as cacheable comprises determining whether an element of a hypertext document designates the web resource as cacheable.
- Example 45 includes the subject matter of any of Examples 38-44, and wherein determining whether the web resource is designated as cacheable comprises receiving a web application programming interface command that designates the web resource as cacheable.
- Example 46 includes the subject matter of any of Examples 38-45, and further comprising: determining, by the computing device, whether the web resource is designated as requiring validation in response to downloading the web resource; wherein sending the cached web resource comprises sending metadata associated with the cached web resource, wherein the metadata indicates that the cached web resource requires validation in response to determining that the web resource is designated as requiring validation.
- Example 47 includes the subject matter of any of Examples 38-46, and further comprising: receiving, by the computing device, a message from the client device indicating that the cached web resource has been modified in response to sending the found response; and removing, by the computing device, the cached web resource from the shared cache in response to receiving the message from the client device.
- Example 48 includes the subject matter of any of Examples 38-47, and wherein installing the web resource in the shared cache comprises evicting an older cached web resource from the shared cache.
- Example 49 includes a computing device comprising: a processor; and a memory having stored therein a plurality of instructions that when executed by the processor cause the computing device to perform the method of any of Examples 25-48.
- Example 50 includes one or more machine readable storage media comprising a plurality of instructions stored thereon that in response to being executed result in a computing device performing the method of any of Examples 25-48.
- Example 51 includes a computing device comprising means for performing the method of any of Examples 25-48.
- Example 52 includes a computing device for shared cache access, the computing device comprising: means for scanning for a shared cache device in local proximity to the computing device; means for registering with the shared cache device in response to scanning for the shared cache device; means for storing authentication credentials associated with the shared cache device in response to registering with the shared cache device; means for requesting a cached web resource from the shared cache device in response to storing the authentication credentials associated with the shared cache device; means for receiving a found response from the shared cache device in response to requesting the cached web resource, wherein the found response indicates that the cached web resource was found by the shared cache device; and means for receiving the cached web resource from the shared cache device in response to receiving the found response.
- Example 53 includes the subject matter of Example 52, and wherein the means for registering with the shared cache device comprises: means for sending a registration request to the shared cache device in response to scanning for the shared cache device; and means for receiving an approval from the shared cache device in response to sending the registration request.
- Example 54 includes the subject matter of any of Examples 52 and 53, and wherein the means for requesting the cached web resource from the shared cache device comprises means for sending a request indicative of the cached web resource and an origin of the cached web resource.
- Example 55 includes the subject matter of any of Examples 52-54, and further comprising: means for receiving a no-permission response from the shared cache device in response to requesting the cached web resource, wherein the no-permission response indicates that the client device was not validated; and means for raising a web browser event in response to receiving the no-permission response.
- Example 56 includes the subject matter of any of Examples 52-55, and further comprising: means for receiving a not-found response or an expired response from the shared cache device in response to requesting the cached web resource, wherein the not-found response indicates that the cached web resource was not found by the shared cache device and wherein the expired response indicates that the cached web resource is expired; and means for requesting a web resource corresponding to the cached web resource from a remote web server in response to receiving the not-found response or the expired response.
- Example 57 includes the subject matter of any of Examples 52-56, and further comprising: means for determining whether validation of the cached web resource is required in response to receiving the cached web resource; means for sending a request to a remote web server to validate that the cached web resource has not been modified in response to determining that validation of the cached web resource is required; means for receiving a response from the remote web server; means for determining whether the cached web resource has been modified based on the response from the remote web server; and means for sending a message to the shared cache device indicating that the cached web resource has been modified in response to determining that the cached web resource has been modified.
- Example 58 includes the subject matter of any of Examples 52-57, and wherein the means for receiving the cached web resource comprises means for receiving metadata associated with the cached web resource, wherein the metadata is indicative of whether validation of the cached web resource is required.
- Example 59 includes the subject matter of any of Examples 52-58, and further comprising: means for determining whether a web resource is designated as cacheable; wherein the means for requesting the cached web resource from the shared cache device comprises means for requesting a cached web resource corresponding to the web resource from the shared cache device in response to determining that the web resource is designated as cacheable.
- Example 60 includes the subject matter of any of Examples 52-59, and wherein the means for determining whether the web resource is designated as cacheable comprises means for determining whether an element of a hypertext document designates the web resource as cacheable.
- Example 61 includes the subject matter of any of Examples 52-60, and wherein the means for determining whether the web resource is designated as cacheable comprises means for receiving a web application programming interface command that designates the web resource as cacheable.
- Example 62 includes the subject matter of any of Examples 52-61, and wherein the web application programming interface command comprises a web scripting environment command.
- Example 63 includes the subject matter of any of Examples 52-62, and wherein the means for scanning for the shared cache device in local proximity to the computing device comprises means for scanning a local network for the shared cache device.
- Example 64 includes the subject matter of any of Examples 52-63, and wherein the means for scanning for the shared cache device in local proximity to the computing device comprises means for scanning via a short-range communication protocol.
- Example 65 includes a computing device for shared cache access, the computing device comprising: means for registering a client device with the computing device; means for storing authentication credentials associated with the client device in response to registering the client device; means for receiving a request for a cached web resource from the client device in response to storing the authentication credentials, wherein the request is associated with an origin of the cached web resource; means for determining whether a cached web resource associated with an origin that matches the request is installed in a shared cache of the computing device in response to receiving the request for the cached web resource; means for sending a found response to the client device in response to determining that the cached web resource associated with the origin that matches the request is installed in the shared cache; and means for sending the cached web resource to the client device in response to sending the found response.
- Example 66 includes the subject matter of Example 65, and wherein the means for registering the client device with the computing device comprises: means for receiving a request to register a client device; means for verifying the client device in response to receiving the request to register the client device; and means for sending an approval to the client device in response to verifying the client device.
- Example 67 includes the subject matter of any of Examples 65 and 66, and further comprising means for sending a not-found response to the client device in response to determining that the cached web resource associated with the origin that matches the request is not installed in the shared cache.
- Example 68 includes the subject matter of any of Examples 65-67, and further comprising: means for determining whether the client device is validated in response to receiving the request for the cached web resource; and means for sending a no-permission response to the client device in response to determining that the client device is not validated.
- Example 69 includes the subject matter of any of Examples 65-68, and further comprising: means for determining whether the cached web resource is expired in response to determining that the cached web resource associated with the origin that matches the request is installed in the shared cache; means for sending an expired response to the client device in response to determining that the cached web resource is expired; and means for removing the cached web resource from the shared cache in response to determining that the cached web resource is expired; wherein the means for sending the found response further comprises means for sending the found response to the client device in response to determining that the shared web resource is not expired.
- Example 70 includes the subject matter of any of Examples 65-69, and further comprising: means for downloading a web resource from a remote web server, wherein the web resource is associated with an origin; means for determining whether the web resource is designated as cacheable in response to downloading the web resource; and means for installing the web resource in the shared cache as the cached web resource in response to determining that the web resource is designated as cacheable, wherein the cached web resource is indicative of the origin associated with the web resource.
- Example 71 includes the subject matter of any of Examples 65-70, and wherein the means for determining whether the web resource is designated as cacheable comprises means for determining whether an element of a hypertext document designates the web resource as cacheable.
- Example 72 includes the subject matter of any of Examples 65-71, and wherein the means for determining whether the web resource is designated as cacheable comprises means for receiving a web application programming interface command that designates the web resource as cacheable.
- Example 73 includes the subject matter of any of Examples 65-72, and further comprising: means for determining whether the web resource is designated as requiring validation in response to downloading the web resource; wherein the means for sending the cached web resource comprises means for sending metadata associated with the cached web resource, wherein the metadata indicates that the cached web resource requires validation in response to determining that the web resource is designated as requiring validation.
- Example 74 includes the subject matter of any of Examples 65-73, and further comprising: means for receiving a message from the client device indicating that the cached web resource has been modified in response to sending the found response; and means for removing the cached web resource from the shared cache in response to receiving the message from the client device.
- Example 75 includes the subject matter of any of Examples 65-74, and wherein the means for installing the web resource in the shared cache comprises means for evicting an older cached web resource from the shared cache.
Abstract
Description
- Web browsers are a popular platform for application development for many types of computing devices. The user experience for web applications may be significantly impacted by network conditions including network availability, bandwidth, and/or latency. Typical browsers may provide a single-device or a single-user cache for web resources such as images, scripts, and other remote resources.
- The concepts described herein are illustrated by way of example and not by way of limitation in the accompanying figures. For simplicity and clarity of illustration, elements illustrated in the figures are not necessarily drawn to scale. Where considered appropriate, reference labels have been repeated among the figures to indicate corresponding or analogous elements.
-
FIG. 1 is a simplified block diagram of at least one embodiment of a system for a cross-device shared web resource cache; -
FIG. 2 is a simplified block diagram of at least one embodiment of various environments that may be established by the system ofFIG. 1 ; -
FIG. 3 is a simplified flow diagram of at least one embodiment of a method for shared cache discovery that may be executed by a client computing device ofFIGS. 1-2 ; -
FIG. 4 is a simplified flow diagram of at least one embodiment of a method for cached resource retrieval that may be executed by the client computing device ofFIGS. 1-2 ; -
FIG. 5 is a simplified flow diagram of at least one embodiment of a method for device registration that may be executed by a shared cache computing device ofFIGS. 1-2 ; -
FIG. 6 is a simplified flow diagram of at least one embodiment of a method for cached resource installation that may be executed by the shared cache computing device ofFIGS. 1-2 ; and -
FIG. 7 is a simplified flow diagram of at least one embodiment of a method for cached resource retrieval that may be executed by the shared cache computing device ofFIGS. 1-2 . - While the concepts of the present disclosure are susceptible to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the drawings and will be described herein in detail. It should be understood, however, that there is no intent to limit the concepts of the present disclosure to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives consistent with the present disclosure and the appended claims.
- References in the specification to “one embodiment,” “an embodiment,” “an illustrative embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may or may not necessarily include that particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described. Additionally, it should be appreciated that items included in a list in the form of “at least one of A, B, and C” can mean (A); (B); (C); (A and B); (A and C); (B and C); or (A, B, and C). Similarly, items listed in the form of “at least one of A, B, or C” can mean (A); (B); (C); (A and B); (A and C); (B and C); or (A, B, and C).
- The disclosed embodiments may be implemented, in some cases, in hardware, firmware, software, or any combination thereof. The disclosed embodiments may also be implemented. as instructions carried by or stored on one or more transitory or non-transitory machine-readable (e.g., computer-readable) storage media, which may be read and executed by one or more processors. A machine-readable storage medium may be embodied as any storage device, mechanism, or other physical structure for storing or transmitting information in a form readable by a machine (e.g., a volatile or non-volatile memory, a media disc, or other media device).
- In the drawings, some structural or method features may be shown in specific arrangements and/or orderings. However, it should be appreciated that such specific arrangements and/or orderings may not be required. Rather, in some embodiments, such features may be arranged in a different manner and/or order than shown in the illustrative figures. Additionally, the inclusion of a structural or method feature in a particular figure is not meant to imply that such feature is required in all embodiments and, in some embodiments, may not be included or may be combined with other features.
- Referring now to
FIG. 1 , in an illustrative embodiment, asystem 100 for cross-device web resource caching includes multiple computing devices 102 in communication with one or moreremote web servers 104 over anetwork 108. In use, as described further below, a computing device 102 may search for other, nearby computing devices 102 that provide a shared web cache service. For example, the shared cache may be shared between computing devices 102 on the same local subnetwork or computing devices 102 connected by a short-range communication protocol. A web browser or web application of a shared cache client computing device 102 may determine whetherweb resources 106 downloaded from aremote web server 104 have been designated as cacheable by the web developer and, if so, install the resource in a shared cache. Web browsers or web applications executed by other computing devices 102 may request and download cached web resources from the shared cache client computing device 102. Thus, thesystem 100 may enable effective utilization of network resources and avoid contention for network resources by client devices, reduce access latency and network bandwidth requirements, and improve performance and power consumption. Additionally, thesystem 100 allows web resources to be cached and shared among client devices at the browser level. Thesystem 100 may provide simplicity and flexibility by allowing the web developer and the browser to configure caching, without requiring configuration of proxy servers. Also, web resources may be cached and shared without requiring modification to existing web pages or web applications. Thesystem 100 may also provide an improved offline experience for times when an external network connection is unavailable. - Each computing device 102 may be embodied as any type of computation or computer device capable of performing the functions described herein, including, without limitation, a computer, a desktop computer, a workstation, a server, a laptop computer, a notebook computer, a tablet computer, a mobile computing device, a wearable computing device, a network appliance, a web appliance, a distributed computing system, a processor-based system, and/or a consumer electronic device. As shown in
FIG. 1 , a computing device 102 illustratively includes aprocessor 120, an input/output subsystem 122, amemory 124, adata storage device 126, and acommunication subsystem 128. Of course, the computing device 102 may include other or additional components, such as those commonly found in a desktop computer (e.g., various input/output devices), in other embodiments. Additionally, in some embodiments, one or more of the illustrative components may be incorporated in, or otherwise form a portion of, another component. For example, thememory 124, or portions thereof, may be incorporated in theprocessor 120 in some embodiments. - The
processor 120 may be embodied as any type of processor capable of performing the functions described herein. Theprocessor 120 may be embodied as a single or multi-core processor(s), digital signal processor, microcontroller, or other processor or processing/controlling circuit. Similarly, thememory 124 may be embodied as any type of volatile or non-volatile memory or data storage capable of performing the functions described herein. In operation, thememory 124 may store various data and software used during operation of the computing device 102 such as operating systems, applications, programs, libraries, and drivers. Thememory 124 is communicatively coupled to theprocessor 120 via the I/O subsystem 122, which may be embodied as circuitry and/or components to facilitate input/output operations with theprocessor 120, thememory 124, and other components of the computing device 102. For example, the I/O subsystem 122 may be embodied as, or otherwise include, memory controller hubs, input/output control hubs, platform controller hubs, integrated control circuitry, firmware devices, communication links (i.e., point-to-point links, bus links, wires, cables, light guides, printed circuit board traces, etc.) and/or other components and subsystems to facilitate the input/output operations. In some embodiments, the I/O subsystem 122 may form a portion of a system-on-a-chip (SoC) and be incorporated, along with theprocessor 120, thememory 124, and other components of the computing device 102, on a single integrated circuit chip. - The
data storage device 126 may be embodied as any type of device or devices configured for short-term or long-term storage of data such as, for example, memory devices and circuits, memory cards, hard disk drives, solid-state drives, or other data storage devices. Thecommunication subsystem 128 of the computing device 102 may be embodied as any communication circuit, device, or collection thereof, capable of enabling communications between the computing device 102 and other remote devices over a network. Thecommunication subsystem 128 may he configured to use any one or more communication technology (e.g., wired or wireless communications) and associated protocols (e.g., Ethernet, Bluetooth®, Wi-Fi® WiMAX, etc.) to effect such communication. In particular, in some embodiments, the computing device 102 may be capable of short-range wireless communications with one or more other computing devices 102. - As shown, the computing device 102 may also include one or more
peripheral devices 130. Theperipheral devices 130 may include any number of additional input/output devices, interface devices, and/or other peripheral devices. For example, in some embodiments, theperipheral devices 130 may include a display, touch screen, graphics circuitry, keyboard, mouse, speaker system, microphone, network interface, and/or other input/output devices, interface devices, and/or peripheral devices. - The
remote web server 104 may he embodied as any type of computation or computer device capable of performing the functions described herein, including, without limitation, a computer, a multiprocessor system, a server, a rack-mounted server, a blade server, a network appliance, a distributed computing system, a processor-based system, and/or a consumer electronic device. As such, theremote web server 104 may be embodied as a single server computing device or a collection of servers and associated devices. For example, in some embodiments, theremote web server 104 may be embodied as a “virtual server” formed from multiple computing devices distributed across thenetwork 108 and operating in a public or private cloud. Accordingly, although theremote web server 104 is illustrated inFIG. 1 and described below as embodied as a single server computing device, it should be appreciated that theremote web server 104 may be embodied as multiple devices cooperating together to facilitate the functionality described below. Theremote web server 104 may include a processor, an I/O subsystem, a memory, a data storage device, a communication subsystem, and/or other components and devices commonly found in a server or similar computing device. Those individual components of theremote web server 104 may be similar to the corresponding components of the computing device 102, the description of which is applicable to the corresponding components of theremote web server 104 and is not repeated herein so as not to obscure the present disclosure. - As discussed in more detail below, the computing device 102 and the
remote web server 104 may be configured to transmit and receive data with each other and/or other devices of thesystem 100 over thenetwork 108. Thenetwork 108 may be embodied as any number of various wired and/or wireless networks. For example, thenetwork 108 may be embodied as, or otherwise include, a wired or wireless local area network (LAN), a wired or wireless wide area network (WAN), a cellular network, and/or a publicly-accessible, global network such as the Internet or RF network. As such, thenetwork 108 may include any number of additional devices, such as additional computers, routers, and switches, to facilitate communications among the devices of thesystem 100. - Referring now to
FIG. 2 , in an illustrative embodiment, aclient device 102 a establishes anenvironment 200 during operation. Theillustrative environment 200 includes aregistration agent 202 and abrowser cache agent 206. The various components of theenvironment 200 may be embodied as hardware, firmware, software, or a combination thereof. As such, in some embodiments, one or more of the components of theenvironment 200 may be embodied as circuitry or collection of electrical devices (e.g.,registration agent circuitry 202 and/or browser cache agent circuitry 206). It should he appreciated that, in such embodiments, one or more of theregistration agent circuitry 202 and/or the browsercache agent circuitry 206 may form a portion of one or more of theprocessor 120, the I/O subsystem 122, and/or other components of the computing device 102. Additionally, in some embodiments, one or more of the illustrative components may form a portion of another component and/or one or more of the illustrative components may be independent of one another. - The
registration agent 202 is configured to scan for a sharedcache device 102 b in local proximity to theclient computing device 102 a. Theclient device 102 a may, for example, scan a local network for the sharedcache device 102 b or scan for the sharedcache device 102 b via a short-range communication protocol. Theregistration agent 202 is further configured to register with the sharedcache device 102 b in response to the scan and store authentication credentials associated with the sharedcache device 102 b in response to registering with the sharedcache device 102 b. The authentication credentials may be stored, for example, in anauthentication database 204. - The
browser cache agent 206 is configured to request a cached web resource from the sharedcache device 102 b in response to storing the authentication credentials associated with the sharedcache device 102 b. In some embodiments, thebrowser cache agent 206 may be configured to determine whether a web resource is designated as cacheable and, if cacheable, request the cached web resource that corresponds to the web resource. Thebrowser cache agent 206 is further configured to receive, from the sharedcache device 102 b, a found response that indicates that the cached web resource was found by the sharedcache device 102 b and to receive the cached web resource from the sharedcache device 102 b in response to receiving the found response. - The
browser cache agent 206 may be further configured to determine whether validation of the cached web resource is required in response receiving the cached web resource. Thebrowser cache agent 206 is configured to send a request to aremote web server 104 to validate that the cached web resource has not been modified in response to determining that validation of the cached web resource is required and to receive a response from theremote web server 104. Thebrowser cache agent 206 is further configured to determine whether the cached web resource has been modified based on the response from theremote web server 104 and to send a message to the sharedcache device 102 b indicating that the cached web resource has been modified in response to determining that the cached web resource has been modified. - The
browser cache agent 206 may be further configured to receive, from the sharedcache device 102 b, a no-permission response that indicates that theclient device 102 a was not validated, and to raise a web browser event in response to receiving the no-permission response. Thebrowser cache agent 206 may be further configured to receive, from the sharedcache device 102 b, a not-found response that indicates that the cached web resource was not found by the sharedcache device 102 b or an expired response that indicates that the cached web resource is expired. Thebrowser cache agent 206 may be further configured to request aweb resource 106 that corresponds to the cached web resource from aremote web server 104 in response to receiving the not-found response or the expired response. - Still referring now to
FIG. 2 , in the illustrative embodiment, a sharedcache device 102 b establishes anenvironment 220 during operation. Theillustrative environment 220 includes aregistration agent 222, a sharedcache agent 226, and abrowser cache agent 230. The various components of theenvironment 220 may be embodied as hardware, firmware, software, or a combination thereof. As such, in some embodiments, one or more of the components of theenvironment 220 may be embodied as circuitry or collection of electrical devices (e.g.,registration agent circuitry 222, sharedcache agent circuitry 226, and/or browser cache agent circuitry 230). It should be appreciated that, in such embodiments, one or more of theregistration agent circuitry 222, the sharedcache agent circuitry 226, and/or the browsercache agent circuitry 230 may form a portion of one or more of theprocessor 120, the I/O subsystem 122, and/or other components of the sharedcache device 102 b. Additionally, in some embodiments, one or more of the illustrative components may form a portion of another component and/or one or more of the illustrative components may be independent of one another. - The
registration agent 222 is configured to register aclient device 102 a with the sharedcache device 102 b and store authentication credentials associated with theclient device 102 a in response to registering theclient device 102 a. The authentication credentials may be stored in, for example, anauthentication database 224. - The shared
cache agent 226 is configured to receive a request for a cached web resource from theclient device 102 a in response to storing the authentication credentials. The request is associated with an origin of the cached web resource. The sharedcache agent 226 is further configured to determine whether a cached web resource associated with an origin that matches the request is installed in a sharedcache 228 of the sharedcache device 102 b in response to receiving the request. The sharedcache agent 226 is further configured to send a found response to theclient device 102 a if a matching cached web resource is installed in the sharedcache 228 and to send the cached web resource to theclient device 102 a in response to sending the found response. - The shared
cache agent 226 may be further configured to determine whether the cached web resource is expired in response to determining that the cached web resource associated with the origin that matches the request is installed in the sharedcache 228 and to send an expired response to theclient device 102 a in response to determining that the cached web resource is expired. The sharedcache agent 226 is configured to remove the cached web resource from the sharedcache 228 in response to determining that the cached web resource is expired. - The shared
cache agent 226 may be further configured to send a not-found response to theclient device 102 a in response to determining that the cached web resource associated with the origin that matches the request is not installed in the sharedcache 228. The sharedcache agent 226 may be further configured to determine whether theclient device 102 a is validated in response receiving of the request for the cached web resource and to send a no-permission response to theclient device 102 a in response to determining that theclient device 102 a is not validated. - The
browser cache agent 230 is configured to download aweb resource 106 from aremote web server 104. Theweb resource 106 is associated with an origin. Thebrowser cache agent 230 is configured to determine whether theweb resource 106 is designated as cacheable in response to downloading theweb resource 106, and to install theweb resource 106 in the sharedcache 228 as the cached web resource in response to determining that the web resource is designated as cacheable. The cached web resource is indicative of the origin associated with theweb resource 106. - The shared
cache agent 226 may be further configured to determine whether theweb resource 106 is designated as requiring validation in response to downloading the web resource. Sending the cached web resource to theclient device 102 a may include sending metadata associated with the cached web resource that indicates that the cached web resource requires validation. The sharedcache agent 226 may be further configured to receive a message from theclient device 102 a that indicates that the cached web resource has been modified and to remove the cached web resource from the sharedcache 228 in response to receiving the message from theclient device 102 a. - Additionally, although illustrated, as being established by two
computing devices client device 102 a and the sharedcache device 102 b. Thus, in some embodiments, a single computing device 102 may establish part or all of bothenvironments - Referring now to
FIG. 3 , in use, aclient device 102 a may execute amethod 300 for shared cache discovery. It should be appreciated that, in some embodiments, the operations of themethod 300 may be performed by one or more modules of theenvironment 200 of theclient device 102 a as shown inFIG. 2 . Themethod 300 begins inblock 302, in which theclient device 102 a scans for a nearby sharedcache device 102 b. Theclient device 102 a may scan for the nearby sharedcache device 102 b using any appropriate network service discovery protocol or other discovery protocol. In some embodiments, inblock 304, theclient device 102 a scans a local-area network for the sharedcache device 102 b. Theclient device 102 a may scan, for example, a local wireless network, a local wired network, or any other local network subdivision. In some embodiments, inblock 306 theclient device 102 a may scan for the sharedcache device 102 b using a short-range communication protocol. For example, theclient device 102 a may scan using a short-range radio communication technology such as Bluetooth, near-field communication (NFC), or other short-range protocol. - In block 308, the
client device 102 a determines whether a sharedcache device 102 b has been found. If not, themethod 300 loops back to block 302 to continue scanning for a sharedcache device 102 b. If a sharedcache device 102 b has been found, themethod 300 advances to block 310. - In
block 310, theclient device 102 a sends a request to register with the sharedcache device 102 b. The request to register may include identification information of theclient device 102 a and/or a user of theclient device 102 a. For example, the request to register may include a device identifier and authentication credentials. Inblock 312, theclient device 102 a determines whether the request to register has been approved. For example, the sharedcache device 102 b may validate the authentication credentials or perform other security or policy checks before returning an approval to theclient device 102 a. One potential embodiment of a method for processing the request to register is described below in connection withFIG. 5 . If the registration request was not approved, themethod 300 loops back to block 302 to continue scanning for a nearby sharedcache device 102 b. If the registration request is approved, themethod 300 advances to block 314. - In
block 314, theclient device 102 a saves authentication credentials for the sharedcache device 102 b. Theclient device 102 a may, for example, store a device identifier and authentication credentials associated with the sharedcache device 102 b into theauthentication database 204. The authentication credentials may allow theclient device 102 a and the sharedcache device 102 b to establish a secure communication channel to receive cached web resources as described further below. After registering and saving the authentication credentials, theclient device 102 a may request cached web resources from the sharedcache device 102 b as described below in connection withFIG. 4 . After saving the authentication credentials, themethod 300 loops back to block 302, in which theclient device 102 a may continue scanning for nearby sharedcache computing devices 102 b. - Referring now to
FIG. 4 , in use, aclient device 102 a may execute amethod 400 for cached resource retrieval. It should be appreciated that, in some embodiments, the operations of themethod 400 may be performed by one or more modules of theenvironment 200 of theclient device 102 a as shown inFIG. 2 . Themethod 400 begins inblock 402, in which theclient device 102 a monitors for a cacheable web resource download request. The download request may be generated by a web browser or a web application during a web browsing session, for example in response to a user clicking a link, entering a URI, or otherwise loading a web page. The web resource may be embodied as any downloadable web resource including a textual markup document (e.g., HTML, XML, or other textual markup file), a linked image, a script file, a stylesheet, or other resource. The web resource may be designated as cacheable in a sharedcache 228 by the web developer. In some embodiments, the web page markup may designate a particular resource as cacheable, for example by including a predefined HTML attribute such as “x-devices” on the appropriate HTML element (e.g., on an image tag). In some embodiments, a web page or web application may expressly invoke an API function to designate a resource as cacheable. - In
block 404, theclient device 102 a determines an origin for the request for the cached web resource. The origin may be embodied as, for example, a tuple identifying a URI scheme, host, and port number associated with the cached web resource. As described further below, the origin may be used by the sharedcache device 102 b to enforce security boundaries for cached web resources. - In
block 406, theclient device 102 a determines whether a request to download a cacheable web resource has been detected. If not, themethod 400 loops back to block 402 to continue monitoring for requests to download web resources. If a request to download a cacheable web resource has been detected, themethod 400 advances to block 408. - In
block 408, theclient device 102 a requests the web resource from the sharedcache device 102 b. The request identifies the requested web resource and the associated origin, for example by forwarding the URI of the requested web resource. Theclient device 102 a may send the request to a nearby sharedcache device 102 b that was discovered using themethod 300 described above in connection withFIG. 3 . In some embodiments, inblock 410 theclient device 102 a may authenticate to the sharedcache device 102 b. For example, theclient device 102 a may submit a device identifier and credentials generated during authentication as described above in connection withFIG. 3 . After authenticating, communications between theclient device 102 a and the sharedcache device 102 b may be encrypted or otherwise communicated over a secure channel. - In
block 412, theclient device 102 a receives a response from the sharedcache device 102 b. The sharedcache device 102 b sends the response after processing the request for the cached web resource and may send one of several types of responses based on the results of processing the request for the cached web resource. One potential embodiment of a method for processing the request for the cached web resource is described below in connection withFIG. 7 . - In block 414, the
client device 102 a determines whether a no-permission response was received from the sharedcache device 102 b. A no-permission response indicates that theclient device 102 a was not successfully validated by the sharedcache device 102 b. If a no-permission response was not received, themethod 400 advances to block 418, described below. If a no-permission response was received, themethod 400 branches to block 416, in which theclient device 102 a raises a web browser event indicating no permission. The event may be handled by client code such as, for example, a web page script or web application code. For example, theclient device 102 a may dispatch a DOM event, call a JavaScript event handler, or otherwise raise a browser event. After raising the event, themethod 400 loops back to block 402 to monitor for additional requests for cacheable web resources. - Referring back to block 414, if a no-permission response was not received, the
method 400 advances to block 418, in which theclient device 102 a determines whether a not-found response or an expired response was received. A not-found response indicates that a cached web resource matching the requested web resource, including the origin of the request, was not found in the sharedcache 228. An expired response indicates that a matching cached web resource was found in the sharedcache 228, but has expired. If a not-found response or an expired response was not received (e.g., if a found response was received), themethod 400 advances to block 422, described below. If a not-found response or an expired response was received, themethod 400 branches to block 420, in which theclient device 102 a requests the web resource from aremote web server 104. Theremote web server 104 may respond with the requested web resource from the associatedweb resources 106. After requested the web resource from theremote web server 104, themethod 400 loops back to block 402 to monitor for additional requests for cacheable web resources. - Referring back to block 418, if a not-found response or an expired response was not received (e.g., if a found response was received), the
method 400 advances to block 422, in which theclient device 102 a receives the requested cached web resource from the sharedcache device 102 b. In some embodiments, inblock 424 theclient device 102 a may also receive metadata associated with the requested cached web resource. For example, theclient device 102 a may receive one or more HTTP headers associated with the cached web resource. - In
block 426, theclient device 102 a determines whether validation is required for the cached web resource. Theclient device 102 a may, for example, examine metadata such as one or more HTTP headers associated with the cached web resource to determine whether validation is required. If validation is not required, then themethod 400 advances to block 434, described below. If validation is required, then themethod 400 branches to block 428. - In
block 428, theclient device 102 a sends a request to aremote web server 104 associated with the cached web resource to validate that theweb resource 106 corresponding to the cached web resource has not been modified. Theclient device 102 a may receive a response (e.g., an HTTP response) indicating whether the web resource has been modified since being installed in the sharedcache 228. Inblock 430, theclient device 102 a determines whether the cached web resource was successfully validated. If so, themethod 400 branches to block 434, described below. If not validated, themethod 400 advances to block 432, in which theclient device 102 a sends a message to the sharedcache device 102 b indicating that theweb resource 106 corresponding to the cached web resource has been modified. In response, the sharedcache device 102 b may remove the cached web resource from the sharedcache 228. After sending the message to the sharedcache device 102 b, themethod 400 loops back to block 402 to monitor for additional requests for cacheable web resources. In some embodiments, theclient device 102 a may re-attempt the request for the cached web resource, which may result in theclient device 102 a downloading theweb resource 106 from theremote web server 104. - Referring back to
blocks method 400 advances to block 434, in which theclient device 102 a uses the cached web resource. Theclient device 102 a may render, parse, or otherwise use the cached web resource to display a web page, execute a web application, or otherwise perform browser tasks with the cached web resource. After using the cached web resource, themethod 400 loops back to block 402 to monitor for additional requests for cacheable web resources. - Referring now to
FIG. 5 , in use, a sharedcache device 102 b may execute amethod 500 for client device registration. It should be appreciated that, in some embodiments, the operations of themethod 500 may be performed by one or more modules of theenvironment 220 of the sharedcache device 102 b as shown inFIG. 2 . Themethod 500 begins inblock 502, in which the sharedcache device 102 b monitors for a request to register aclient device 102 a. The request may be sent by theclient device 102 a in response to scanning for a nearby sharedcache device 102 b, as described above in connection withFIG. 3 . In block 504, the sharedcache device 102 b determines whether a request for registration has been received. If not, themethod 500 loops back to block 502 to continue monitoring for requests to register aclient device 102 a. If a request is received, themethod 500 advances to block 506. - In
block 506, the sharedcache device 102 b determines whether to approve the request to register theclient device 102 a. The sharedcache device 102 b may, for example, verify authentication credentials provided by theclient device 102 a, perform one or more security or policy checks, or otherwise verify theclient device 102 a. Inblock 508, the sharedcache device 102 b checks whether theclient device 102 a was approved. If not, themethod 500 loops back to block 502 to continue monitoring for requests to register aclient device 102 a. If theclient device 102 a was approved, themethod 500 advances to block 510. - In block 510, the shared
cache device 102 b saves authentication credentials for theclient device 102 a. The sharedcache device 102 b may, for example, store a device identifier and authentication credentials associated with theclient device 102 a into theauthentication database 224. As described above, the authentication credentials may allow theclient device 102 a and the sharedcache device 102 b to establish a secure communication channel to transmit cached web resources as described further below. Inblock 512, the sharedcache device 102 b sends an approval of the request to theclient device 102 a. After sending the approval, the sharedcache device 102 b may process requests for cached web resources from theclient device 102 a. One potential embodiment of a method for processing requests for cached web resources is described further below in connection withFIG. 7 . After sending the approval, themethod 500 loops back to block 502 to continue monitoring for requests to register aclient device 102 a. - Referring now to
FIG. 6 , in use, a sharedcache device 102 b may execute amethod 600 for cached web resource installation. It should be appreciated that, in some embodiments, the operations of themethod 600 may be performed by one or more modules of theenvironment 220 of the sharedcache device 102 b as shown inFIG. 2 . Themethod 600 begins inblock 602, in which the sharedcache device 102 b downloads aweb resource 106 from aremote web server 104. The download may be performed by a web browser or a web application during a web browsing session, for example in response to a user clicking a link, entering a URI, or otherwise loading a web page. The web resource may be embodied as any downloadable web resource such as a textual markup document (e.g., HTML, XML, or other textual markup file), a linked image, a script file, a stylesheet, or other resource. - In
block 604, the sharedcache device 102 b determines whether theweb resource 106 is designated as cacheable. Theweb resource 106 may be designated as cacheable in the sharedcache 228 by the web developer or other source of theweb resource 106. In some embodiments, inblock 606 the sharedcache device 102 b may parse markup (including attributes) of the web resource to determine whether the resource is cacheable. For example, one or more HTML entities or attributes may designate a particular resource as cacheable. In an illustrative embodiment, an HTML element (such as an image tag, a script tag, a link tag, or other element that identifies an external resource) may include one or more particular predefined HTML attributes (e.g., an “x-devices” attribute) indicating that the associatedweb resource 106 is cacheable. In some embodiments, inblock 608 the sharedcache device 102 b may respond to one or more calls from a web script to a web application programming interface (API). For example, the web page or web application may expressly invoke an API function (e.g., a DOM function, a JavaScript function, or other API function) to designate a resource as cacheable. Continuing that example, a web application may invoke a function such as register( ) with the URI of theweb resource 106 that is designated as cacheable. - In
block 610, the sharedcache device 102 b checks whether theweb resource 106 is cacheable. If not, themethod 600 loops back to block 602 to continue downloadingweb resources 106. If theweb resource 106 is cacheable, themethod 600 advances to block 612. - In
block 612, the sharedcache device 102 b installs the downloadedweb resource 106 into the sharedcache 228. As described further below in connection withFIG. 7 , after being installed in the sharedcache 228, the cached web resource may be available to be transmitted to one ormore client devices 102 a. In some embodiments, inblock 614, the sharedcache device 102 b also stores the origin of the web resource and/or other related metadata in the sharedcache 228. The origin may be embodied as, for example, a tuple identifying a URI scheme, host, and port number associated with the cached web resource. As described further below in connection with Ha 7, the origin may be used to enforce security boundaries for cached web resources. The sharedcache device 102 b may store additional metadata such as HTTP headers associated with the web resource. In particular, the sharedcache device 102 b may store metadata relating to cache freshness including expiration data and/or whether validation with theremote web server 104 is required. In some embodiments, inblock 616 the sharedcache device 102 b may evict one or more other cached web resources from the sharedcache 228 before installing the cached web resource. For example, the sharedcache device 102 b may evict cached web resources to free up space in the sharedcache 228. The sharedcache device 102 b may use any appropriate cache eviction policy, such as a least recently used policy. Additionally or alternatively, in some embodiments the sharedcache device 102 b may remove cached web resources from the sharedcache 228 in other circumstances, including in response to an express command to clear a resource the shared cache from a web application (e.g., calling a DOM function, a JavaScript function, or other API function), and/or in response to a user command to clear the sharedcache 228. After installing the cached web resource, themethod 600 loops back to block 602 to continue downloadingweb resources 106. - Referring now to
FIG. 7 , in use, a sharedcache device 102 b may execute amethod 700 for cached web resource retrieval. It should be appreciated that, in some embodiments, the operations of themethod 700 may be performed by one or more modules of theenvironment 220 of the sharedcache device 102 b as shown inFIG. 2 . Themethod 700 begins inblock 702, in which the sharedcache device 102 b monitors for requests for a cached web resource from aclient device 102 a. The request for the cached web resource may, for example, identify a URI of aweb resource 106 available on aremote web server 104. Inblock 704, the sharedcache device 102 b determines the origin of the request. As described above, the origin may be embodied as, for example, a tuple identifying a URI scheme, host, and port number associated with the cached web resource. The origin may represent, for example, the URI scheme, host, and port number associated with an HTML document that references the requested cached web resource (e.g., an image, script file, stylesheet, or other resource linked from the HTML document). Inblock 706, the sharedcache device 102 b determines whether a request has been received. If not, themethod 700 loops back to block 702 to continue monitoring for requests. If a request has been received, themethod 700 advances to block 708. - In
block 708, the sharedcache device 102 b validates that theclient device 102 a is approved to access the sharedcache 228. The sharedcache device 102 b may verify that theclient device 102 a was successfully registered with the sharedcache device 102 b as described above in connection withFIG. 4 . The sharedcache device 102 b may, for example, verify a device identifier and authentication credentials submitted by theclient device 102 a against theauthentication database 224. After authenticating, communications between theclient device 102 a and the sharedcache device 102 b may be encrypted or otherwise communicated over a secure channel. Note that although illustrated as occurring after receiving the request, it should be understood that in some embodiments authentication may occur before receiving the request and that the request may be received over the secure channel. - In
block 710, the sharedcache device 102 b checks whether theclient device 102 a was validated. If so, themethod 700 advances to block 714, described below. If theclient device 102 a was not validated, themethod 700 branches to block 712, in which the sharedcache device 102 b sends a no-permission response to theclient device 102 a. After sending the response, themethod 700 loops back to block 702 to continue monitoring for requests for cached web resources. - Referring back to block 710, if the
client device 102 a is validated, themethod 700 advances to block 714, in which the sharedcache device 102 b looks up a cached web resource matching the request and having the same origin in the sharedcache 228. Thus, by restricting the lookup to cached web resources having the same origin, the sharedcache device 102 b may enforce a same-origin security policy. Inblock 716, the sharedcache device 102 b determines whether a matching cached web resource was found. If so, themethod 700 advances to block 720, described below. If a matching cached web resource was not found, themethod 700 branches to block 718, in which the sharedcache device 102 b sends a not-found response to theclient device 102 a. After sending the response, themethod 700 loops back to block 702 to continue monitoring for requests for cached web resources. - Referring back to block 716, if a cached web resource was found, the
method 700 advances to block 720, in which the sharedcache device 102 b determines whether the cached web resource has expired. The sharedcache device 102 b may, for example, examine metadata associated with the cached web resource included in the sharedcache 228, such as an expiration date. Inblock 722, the sharedcache device 102 b checks whether the cached web resource has expired. If not, themethod 700 advances to block 728, described below. If the cached web resource has expired, themethod 700 branches to block 724, in which the sharedcache device 102 b clears the cached web resource from the sharedcache 228. Inblock 726, the sharedcache device 102 b sends an expired response to theclient device 102 a. After sending the response, themethod 700 loops back to block 702 to continue monitoring for requests for cached web resources. - Referring back to block 722, if the cached web resource is not expired, the
method 700 advances to block 728, in which the sharedcache device 102 b sends a found response to theclient device 102 a. Inblock 730, the sharedcache device 102 b sends the cached web resource to theclient device 102 a. The sharedcache device 102 b may also send metadata associated with the requested cached web resource. For example, the sharedcache device 102 b may send one or more HTTP headers associated with the cached web resource. In particular, the metadata may indicate whether theclient device 102 a is required to validate the cached web resource with theremote web server 104 prior to using the cached web resource. As described above in connection withFIG. 4 , if the cached web resource is not successfully validated, theclient device 102 a may send the sharedcache device 102 b a message indicating that the resource was not successfully validated. The sharedcache device 102 b may remove the cached web resource from the sharedcache 228 in response to a message indicating that the resource was not successfully validated. After sending the cached web resource to theclient device 102 a, themethod 700 loops back to block 702 to continue monitoring for requests for cached web resources. - It should be appreciated that, in some embodiments, the
methods processor 120, the I/O subsystem 122, and/or other components of a computing device 102 to cause the computing device 102 to perform therespective method memory 124, thedata storage device 126, firmware devices, and/or other media. - Illustrative examples of the technologies disclosed herein are provided below. An embodiment of the technologies may include any one or more, and any combination of, the examples described below.
- Example 1 includes a computing device for shared cache access, the computing device comprising: a registration agent to (i) scan for a shared cache device in local proximity to the computing device, (ii) register with the shared cache device in response to a scan for the shared cache device, and (iii) store authentication credentials associated with the shared cache device in response to registration with the shared cache device; and a browser cache agent to (i) request a cached web resource from the shared cache device in response to storage of the authentication credentials associated with the shared cache device, (ii) receive a found response from the shared cache device in response to a request of the cached web resource, wherein the found response indicates that the cached web resource was found by the shared cache device, and (iii) receive the cached web resource from the shared cache device in response to receipt of the found response.
- Example 2 includes the subject matter of Example 1, and wherein to register with the shared cache device comprises to: send a registration request to the shared cache device in response to the scan for the shared cache device; and receive an approval from the shared cache device in response to sending of the registration request.
- Example 3 includes the subject matter of any of Examples 1 and 2, and wherein to request the cached web resource from the shared cache device comprises to send a request indicative of the cached web resource and an origin of the cached web resource.
- Example 4 includes the subject matter of any of Examples 1-3, and wherein the browser cache agent is further to: receive a no-permission response from the shared cache device in response to the request of the cached web resource, wherein the no-permission response indicates that the client device was not validated; and raise a web browser event in response to receipt of the no-permission response.
- Example 5 includes the subject matter of any of Examples 1-4, and wherein the browser cache agent is further to: receive a not-found response or an expired response from the shared cache device in response to the request of the cached web resource, wherein the not-found response indicates that the cached web resource was not found by the shared cache device and wherein the expired response indicates that the cached web resource is expired; and request a web resource that corresponds to the cached web resource from a remote web server in response to receipt of the not-found response or the expired response.
- Example 6 includes the subject matter of any of Examples 1-5, and wherein the browser cache agent is further to: determine whether validation of the cached web resource is required in response receipt of the cached web resource; send a request to a remote web server to validate that the cached web resource has not been modified in response to a determination that validation of the cached web resource is required; receive a response from the remote web server; determine whether the cached web resource has been modified based on the response from the remote web server; and send a message to the shared cache device indicating that the cached web resource has been modified in response to a determination that the cached web resource has been modified.
- Example 7 includes the subject matter of any of Examples 1-6, and wherein to receive the cached web resource comprises to receive metadata associated with the cached web resource, wherein the metadata is indicative of whether validation of the cached web resource is required.
- Example 8 includes the subject matter of any of Examples 1-7, and wherein: the browser cache agent is further to determine whether a web resource is designated as cacheable; and to request the cached web resource from the shared cache device comprises to request a cached web resource that corresponds to the web resource from the shared cache device in response to a determination that the web resource is designated as cacheable.
- Example 9 includes the subject matter of any of Examples 1-8, and wherein to determine whether the web resource is designated as cacheable comprises to determine whether an element of a hypertext document designates the web resource as cacheable.
- Example 10 includes the subject matter of any of Examples 1-9, and wherein to determine whether the web resource is designated as cacheable comprises to receive a web application programming interface command that designates the web resource as cacheable.
- Example 11 includes the subject matter of any of Examples 1-10, and wherein the web application programming interface command comprises a web scripting environment command.
- Example 12 includes the subject matter of any of Examples 1-11, and wherein to scan for the shared cache device in local proximity to the computing device comprises to scan a local network for the shared cache device.
- Example 13 includes the subject matter of any of Examples 1-12, and wherein to scan for the shared cache device in local proximity to the computing device comprises to scan via a short-range communication protocol.
- Example 14 includes a computing device for shared cache access, the computing device comprising: a registration agent to (i) register a client device with the computing device and (ii) store authentication credentials associated with the client device in response to registration of the client device; and a shared cache agent to (i) receive a request for a cached web resource from the client device in response to storage of the authentication credentials, wherein the request is associated with an origin of the cached web resource, (ii) determine whether a cached web resource associated with an origin that matches the request is installed in a shared cache of the computing device in response to receipt of the request for the cached web resource, (iii) send a found response to the client device in response to a determination that the cached web resource associated with the origin that matches the request is installed in the shared cache, and (iv) send the cached web resource to the client device in response to a send of the found response.
- Example 15 includes the subject matter of Example 14, and wherein to register the client device with the computing device comprises to: receive a request to register a client device; verify the client device in response to receipt of the request to register the client device; and send an approval to the client device in response to verification of the client device.
- Example 16 includes the subject matter of any of Examples 14 and 15, and wherein the shared cache agent is further to send a not-found response to the client device in response to a determination that the cached web resource associated with the origin that matches the request is not installed in the shared cache.
- Example 17 includes the subject matter of any of Examples 14-16, and wherein the shared cache agent is further to: determine whether the client device is validated in response to receipt of the request for the cached web resource; and send a no-permission response to the client device in response to a determination that the client device is not validated.
- Example 18 includes the subject matter of any of Examples 14-17, and wherein the shared cache agent is further to: determine whether the cached web resource is expired in response to the determination that the cached web resource associated with the origin that matches the request is installed in the shared cache; send an expired response to the client device in response to a determination that the cached web resource is expired; and remove the cached web resource from the shared cache in response to the determination that the cached web resource is expired; wherein to send the found response further comprises to send the found response to the client device in response to a determination that the shared web resource is not expired.
- Example 19 includes the subject matter of any of Examples 14-18, and further comprising a browser cache agent to: download a web resource from a remote web server, wherein the web resource is associated with an origin; determine whether the web resource is designated as cacheable in response to a download of the web resource; and install the web resource in the shared cache as the cached web resource in response to a determination that the web resource is designated as cacheable, wherein the cached web resource is indicative of the origin associated with the web resource.
- Example 20 includes the subject matter of any of Examples 14-19, and wherein to determine whether the web resource is designated as cacheable comprises to determine whether an element of a hypertext document designates the web resource as cacheable.
- Example 21 includes the subject matter of any of Examples 14-20, and wherein to determine whether the web resource is designated as cacheable comprises to receive a web application programming interface command that designates the web resource as cacheable.
- Example 22 includes the subject matter of any of Examples 14-21, and wherein: the shared cache agent is further to determine whether the web resource is designated as requiring validation in response to the download of the web resource; and to send the cached web resource comprises to send. metadata associated with the cached web resource, wherein the metadata indicates that the cached web resource requires validation in response to a determination that the web resource is designated as requiring validation.
- Example 23 includes the subject matter of any of Examples 14-22, and wherein the shared cache agent is further to: receive a message from the client device that indicates that the cached web resource has been modified in response to the send of the found response; and remove the cached web resource from the shared cache in response to receipt of the message from the client device.
- Example 24 includes the subject matter of any of Examples 14-23, and wherein to install the web resource in the shared cache comprises to evict an older cached web resource from the shared cache.
- Example 25 includes a method for shared cache access, the method comprising: scanning, by a computing device, for a shared cache device in local proximity to the computing device; registering, by the computing device, with the shared cache device in response to scanning for the shared cache device; storing, by the computing device, authentication credentials associated with the shared cache device in response to registering with the shared cache device; requesting, by the computing device, a cached web resource from the shared cache device in response to storing the authentication credentials associated with the shared cache device; receiving, by the computing device, a found response from the shared cache device in response to requesting the cached web resource, wherein the found response indicates that the cached web resource was found by the shared cache device; and receiving, by the computing device, the cached web resource from the shared cache device in response to receiving the found response.
- Example 26 includes the subject matter of Example 25, and wherein registering with the shared cache device comprises: sending, by the computing device, a registration request to the shared cache device in response to scanning for the shared cache device; and receiving, by the computing device, an approval from the shared cache device in response to sending the registration request.
- Example 27 includes the subject matter of any of Examples 25 and 26, and wherein requesting the cached web resource from the shared cache device comprises sending a request indicative of the cached web resource and an origin of the cached web resource.
- Example 28 includes the subject matter of any of Examples 25-27, and further comprising: receiving, by the computing device, a no-permission response from the shared cache device in response to requesting the cached web resource, wherein the no-permission response indicates that the client device was not validated; and raising, by the computing device, a web browser event in response to receiving the no-permission response.
- Example 29 includes the subject matter of any of Examples 25-28, and further comprising: receiving, by the computing device, a not-found response or an expired response from the shared cache device in response to requesting the cached web resource, wherein the not-found response indicates that the cached web resource was not found by the shared cache device and wherein the expired response indicates that the cached web resource is expired; and requesting, by the computing device, a web resource corresponding to the cached web resource from a remote web server in response to receiving the not-found response or the expired response.
- Example 30 includes the subject matter of any of Examples 25-29, and further comprising: determining, by the computing device, whether validation of the cached web resource is required in response to receiving the cached web resource; sending, by the computing device, a request to a remote web server to validate that the cached web resource has not been modified in response to determining that validation of the cached web resource is required; receiving, by the computing device, a response from the remote web server; determining, by the computing device, whether the cached web resource has been modified based on the response from the remote web server; and sending, by the computing device, a message to the shared cache device indicating that the cached web resource has been modified in response to determining that the cached web resource has been modified.
- Example 31 includes the subject matter of any of Examples 25-30, and wherein receiving the cached web resource comprises receiving metadata associated with the cached web resource, wherein the metadata is indicative of whether validation of the cached web resource is required.
- Example 32 includes the subject matter of any of Examples 25-31, and further comprising: determining, by the computing device, whether a web resource is designated as cacheable; wherein requesting the cached web resource from the shared cache device comprises requesting a cached web resource corresponding to the web resource from the shared cache device in response to determining that the web resource is designated as cacheable.
- Example 33 includes the subject matter of any of Examples 25-32, and wherein determining whether the web resource is designated as cacheable comprises determining whether an element of a hypertext document designates the web resource as cacheable.
- Example 34 includes the subject matter of any of Examples 25-33, and wherein determining whether the web resource is designated as cacheable comprises receiving a web application programming interface command that designates the web resource as cacheable.
- Example 35 includes the subject matter of any of Examples 25-34, and wherein the web application programming interface command comprises a web scripting environment command.
- Example 36 includes the subject matter of any of Examples 25-35, and wherein scanning for the shared cache device in local proximity to the computing device comprises scanning a local network for the shared cache device.
- Example 37 includes the subject matter of any of Examples 25-36, and wherein scanning for the shared cache device in local proximity to the computing device comprises scanning via a short-range communication protocol.
- Example 38 includes a method for shared cache access, the method comprising: registering, by a computing device, a client device with the computing device; storing, by the computing device, authentication credentials associated with the client device in response to registering the client device; receiving, by the computing device, a request for a cached web resource from the client device in response to storing the authentication credentials, wherein the request is associated with an origin of the cached web resource; determining, by the computing device, whether a cached web resource associated with an origin that matches the request is installed in a shared cache of the computing device in response to receiving the request for the cached web resource; sending, by the computing device, a found response to the client device in response to determining that the cached web resource associated with the origin that matches the request is installed in the shared cache; and sending, by the computing device, the cached web resource to the client device in response to sending the found response.
- Example 39 includes the subject matter of Example 38, and wherein registering the client device with the computing device comprises: receiving, by the computing device, a request to register a client device; verifying the client device in response to receiving the request to register the client device; and sending an approval to the client device in response to verifying the client device.
- Example 40 includes the subject matter of any of Examples 38 and 39, and further comprising sending, by the computing device, a not-found response to the client device in response to determining that the cached web resource associated with the origin that matches the request is not installed in the shared cache.
- Example 41 includes the subject matter of any of Examples 38-40, and further comprising: determining, by the computing device, whether the client device is validated in response to receiving the request for the cached web resource; and sending, by the computing device, a no-permission response to the client device in response to determining that the client device is not validated.
- Example 42 includes the subject matter of any of Examples 38-41, and further comprising: determining, by the computing device, whether the cached web resource is expired in response to determining that the cached web resource associated with the origin that matches the request is installed in the shared cache; sending, by the computing device, an expired response to the client device in response to determining that the cached web resource is expired; and removing, by the computing device, the cached web resource from the shared cache in response to determining that the cached web resource is expired; wherein sending the found response further comprises sending the found response to the client device in response to determining that the shared web resource is not expired.
- Example 43 includes the subject matter of any of Examples 38-42, and further comprising: downloading, by the computing device, a web resource from a remote web server, wherein the web resource is associated with an origin; determining, by the computing device, whether the web resource is designated as cacheable in response to downloading the web resource; and installing, by the computing device, the web resource in the shared cache as the cached web resource in response to determining that the web resource is designated as cacheable, wherein the cached web resource is indicative of the origin associated with the web resource.
- Example 44 includes the subject matter of any of Examples 38-43, and wherein determining whether the web resource is designated as cacheable comprises determining whether an element of a hypertext document designates the web resource as cacheable.
- Example 45 includes the subject matter of any of Examples 38-44, and wherein determining whether the web resource is designated as cacheable comprises receiving a web application programming interface command that designates the web resource as cacheable.
- Example 46 includes the subject matter of any of Examples 38-45, and further comprising: determining, by the computing device, whether the web resource is designated as requiring validation in response to downloading the web resource; wherein sending the cached web resource comprises sending metadata associated with the cached web resource, wherein the metadata indicates that the cached web resource requires validation in response to determining that the web resource is designated as requiring validation.
- Example 47 includes the subject matter of any of Examples 38-46, and further comprising: receiving, by the computing device, a message from the client device indicating that the cached web resource has been modified in response to sending the found response; and removing, by the computing device, the cached web resource from the shared cache in response to receiving the message from the client device.
- Example 48 includes the subject matter of any of Examples 38-47, and wherein installing the web resource in the shared cache comprises evicting an older cached web resource from the shared cache.
- Example 49 includes a computing device comprising: a processor; and a memory having stored therein a plurality of instructions that when executed by the processor cause the computing device to perform the method of any of Examples 25-48.
- Example 50 includes one or more machine readable storage media comprising a plurality of instructions stored thereon that in response to being executed result in a computing device performing the method of any of Examples 25-48.
- Example 51 includes a computing device comprising means for performing the method of any of Examples 25-48.
- Example 52 includes a computing device for shared cache access, the computing device comprising: means for scanning for a shared cache device in local proximity to the computing device; means for registering with the shared cache device in response to scanning for the shared cache device; means for storing authentication credentials associated with the shared cache device in response to registering with the shared cache device; means for requesting a cached web resource from the shared cache device in response to storing the authentication credentials associated with the shared cache device; means for receiving a found response from the shared cache device in response to requesting the cached web resource, wherein the found response indicates that the cached web resource was found by the shared cache device; and means for receiving the cached web resource from the shared cache device in response to receiving the found response.
- Example 53 includes the subject matter of Example 52, and wherein the means for registering with the shared cache device comprises: means for sending a registration request to the shared cache device in response to scanning for the shared cache device; and means for receiving an approval from the shared cache device in response to sending the registration request.
- Example 54 includes the subject matter of any of Examples 52 and 53, and wherein the means for requesting the cached web resource from the shared cache device comprises means for sending a request indicative of the cached web resource and an origin of the cached web resource.
- Example 55 includes the subject matter of any of Examples 52-54, and further comprising: means for receiving a no-permission response from the shared cache device in response to requesting the cached web resource, wherein the no-permission response indicates that the client device was not validated; and means for raising a web browser event in response to receiving the no-permission response.
- Example 56 includes the subject matter of any of Examples 52-55, and further comprising: means for receiving a not-found response or an expired response from the shared cache device in response to requesting the cached web resource, wherein the not-found response indicates that the cached web resource was not found by the shared cache device and wherein the expired response indicates that the cached web resource is expired; and means for requesting a web resource corresponding to the cached web resource from a remote web server in response to receiving the not-found response or the expired response.
- Example 57 includes the subject matter of any of Examples 52-56, and further comprising: means for determining whether validation of the cached web resource is required in response to receiving the cached web resource; means for sending a request to a remote web server to validate that the cached web resource has not been modified in response to determining that validation of the cached web resource is required; means for receiving a response from the remote web server; means for determining whether the cached web resource has been modified based on the response from the remote web server; and means for sending a message to the shared cache device indicating that the cached web resource has been modified in response to determining that the cached web resource has been modified.
- Example 58 includes the subject matter of any of Examples 52-57, and wherein the means for receiving the cached web resource comprises means for receiving metadata associated with the cached web resource, wherein the metadata is indicative of whether validation of the cached web resource is required.
- Example 59 includes the subject matter of any of Examples 52-58, and further comprising: means for determining whether a web resource is designated as cacheable; wherein the means for requesting the cached web resource from the shared cache device comprises means for requesting a cached web resource corresponding to the web resource from the shared cache device in response to determining that the web resource is designated as cacheable.
- Example 60 includes the subject matter of any of Examples 52-59, and wherein the means for determining whether the web resource is designated as cacheable comprises means for determining whether an element of a hypertext document designates the web resource as cacheable.
- Example 61 includes the subject matter of any of Examples 52-60, and wherein the means for determining whether the web resource is designated as cacheable comprises means for receiving a web application programming interface command that designates the web resource as cacheable.
- Example 62 includes the subject matter of any of Examples 52-61, and wherein the web application programming interface command comprises a web scripting environment command.
- Example 63 includes the subject matter of any of Examples 52-62, and wherein the means for scanning for the shared cache device in local proximity to the computing device comprises means for scanning a local network for the shared cache device.
- Example 64 includes the subject matter of any of Examples 52-63, and wherein the means for scanning for the shared cache device in local proximity to the computing device comprises means for scanning via a short-range communication protocol.
- Example 65 includes a computing device for shared cache access, the computing device comprising: means for registering a client device with the computing device; means for storing authentication credentials associated with the client device in response to registering the client device; means for receiving a request for a cached web resource from the client device in response to storing the authentication credentials, wherein the request is associated with an origin of the cached web resource; means for determining whether a cached web resource associated with an origin that matches the request is installed in a shared cache of the computing device in response to receiving the request for the cached web resource; means for sending a found response to the client device in response to determining that the cached web resource associated with the origin that matches the request is installed in the shared cache; and means for sending the cached web resource to the client device in response to sending the found response.
- Example 66 includes the subject matter of Example 65, and wherein the means for registering the client device with the computing device comprises: means for receiving a request to register a client device; means for verifying the client device in response to receiving the request to register the client device; and means for sending an approval to the client device in response to verifying the client device.
- Example 67 includes the subject matter of any of Examples 65 and 66, and further comprising means for sending a not-found response to the client device in response to determining that the cached web resource associated with the origin that matches the request is not installed in the shared cache.
- Example 68 includes the subject matter of any of Examples 65-67, and further comprising: means for determining whether the client device is validated in response to receiving the request for the cached web resource; and means for sending a no-permission response to the client device in response to determining that the client device is not validated.
- Example 69 includes the subject matter of any of Examples 65-68, and further comprising: means for determining whether the cached web resource is expired in response to determining that the cached web resource associated with the origin that matches the request is installed in the shared cache; means for sending an expired response to the client device in response to determining that the cached web resource is expired; and means for removing the cached web resource from the shared cache in response to determining that the cached web resource is expired; wherein the means for sending the found response further comprises means for sending the found response to the client device in response to determining that the shared web resource is not expired.
- Example 70 includes the subject matter of any of Examples 65-69, and further comprising: means for downloading a web resource from a remote web server, wherein the web resource is associated with an origin; means for determining whether the web resource is designated as cacheable in response to downloading the web resource; and means for installing the web resource in the shared cache as the cached web resource in response to determining that the web resource is designated as cacheable, wherein the cached web resource is indicative of the origin associated with the web resource.
- Example 71 includes the subject matter of any of Examples 65-70, and wherein the means for determining whether the web resource is designated as cacheable comprises means for determining whether an element of a hypertext document designates the web resource as cacheable.
- Example 72 includes the subject matter of any of Examples 65-71, and wherein the means for determining whether the web resource is designated as cacheable comprises means for receiving a web application programming interface command that designates the web resource as cacheable.
- Example 73 includes the subject matter of any of Examples 65-72, and further comprising: means for determining whether the web resource is designated as requiring validation in response to downloading the web resource; wherein the means for sending the cached web resource comprises means for sending metadata associated with the cached web resource, wherein the metadata indicates that the cached web resource requires validation in response to determining that the web resource is designated as requiring validation.
- Example 74 includes the subject matter of any of Examples 65-73, and further comprising: means for receiving a message from the client device indicating that the cached web resource has been modified in response to sending the found response; and means for removing the cached web resource from the shared cache in response to receiving the message from the client device.
- Example 75 includes the subject matter of any of Examples 65-74, and wherein the means for installing the web resource in the shared cache comprises means for evicting an older cached web resource from the shared cache.
Claims (26)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/109151 WO2018103061A1 (en) | 2016-12-09 | 2016-12-09 | Technologies for cross-device shared web resource cache |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2016/109151 A-371-Of-International WO2018103061A1 (en) | 2016-12-09 | 2016-12-09 | Technologies for cross-device shared web resource cache |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/844,518 Continuation US11604848B2 (en) | 2016-12-09 | 2022-06-20 | Technologies for cross-device shared web resource cache |
Publications (1)
Publication Number | Publication Date |
---|---|
US20200073905A1 true US20200073905A1 (en) | 2020-03-05 |
Family
ID=62491697
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/348,409 Abandoned US20200073905A1 (en) | 2016-12-09 | 2016-12-09 | Technologies for cross-device shared web resource cache |
US17/844,518 Active US11604848B2 (en) | 2016-12-09 | 2022-06-20 | Technologies for cross-device shared web resource cache |
US18/182,087 Pending US20230214438A1 (en) | 2016-12-09 | 2023-03-10 | Technologies for cross-device shared web resource cache |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/844,518 Active US11604848B2 (en) | 2016-12-09 | 2022-06-20 | Technologies for cross-device shared web resource cache |
US18/182,087 Pending US20230214438A1 (en) | 2016-12-09 | 2023-03-10 | Technologies for cross-device shared web resource cache |
Country Status (2)
Country | Link |
---|---|
US (3) | US20200073905A1 (en) |
WO (1) | WO2018103061A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11470176B2 (en) * | 2019-01-29 | 2022-10-11 | Cisco Technology, Inc. | Efficient and flexible load-balancing for clusters of caches under latency constraint |
US20220337908A1 (en) * | 2021-04-19 | 2022-10-20 | Synamedia Limited | User Interface (UI) Engine for Cloud UI Rendering |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311216B1 (en) | 1998-05-29 | 2001-10-30 | Microsoft Corporation | Method, computer program product, and system for client-side deterministic routing and URL lookup into a distributed cache of URLS |
US6571277B1 (en) | 1999-10-19 | 2003-05-27 | International Business Machines Corporation | Method and apparatus for scaling universal plug and play networks using atomic proxy replication |
US7509404B2 (en) | 2000-03-08 | 2009-03-24 | Oracle International Corporation | Methods and systems for partial page caching of dynamically generated content |
US6772214B1 (en) | 2000-04-27 | 2004-08-03 | Novell, Inc. | System and method for filtering of web-based content stored on a proxy cache server |
US6813633B2 (en) * | 2001-06-19 | 2004-11-02 | Foedero Technologies, Inc. | Dynamic multi-level cache manager |
CN1221898C (en) | 2002-08-13 | 2005-10-05 | 国际商业机器公司 | System and method for updating network proxy cache server object |
US8370424B2 (en) | 2007-06-22 | 2013-02-05 | Aol Inc. | Systems and methods for caching and serving dynamic content |
US9953052B1 (en) | 2012-06-19 | 2018-04-24 | Amazon Technologies, Inc. | Caching of updated network content portions |
US9736262B2 (en) | 2012-07-31 | 2017-08-15 | Apple Inc. | Using groups of user accounts to deliver content to electronic devices using local caching servers |
CN102843426B (en) * | 2012-08-09 | 2015-11-18 | 网宿科技股份有限公司 | Based on Web cache resources shared system and the method for intelligent father node |
US9106721B2 (en) | 2012-10-02 | 2015-08-11 | Nextbit Systems | Application state synchronization across multiple devices |
US10033818B2 (en) | 2014-05-30 | 2018-07-24 | Apple Inc. | Using listen ranges to deliver content to electronic devices from local caching servers |
CN104468768B (en) * | 2014-12-02 | 2018-09-28 | 上海斐讯数据通信技术有限公司 | A kind of method and mobile terminal of mobile terminal accessing internet |
CN104618430A (en) * | 2014-12-25 | 2015-05-13 | 华为技术有限公司 | Method and system for achieving returning of internet cache system resource |
US10516752B2 (en) | 2015-06-05 | 2019-12-24 | Apple Inc. | Edge caching shared devices |
KR102344822B1 (en) | 2015-08-11 | 2021-12-28 | 퀄컴 인코포레이티드 | HTTP-aware content caching |
-
2016
- 2016-12-09 WO PCT/CN2016/109151 patent/WO2018103061A1/en active Application Filing
- 2016-12-09 US US16/348,409 patent/US20200073905A1/en not_active Abandoned
-
2022
- 2022-06-20 US US17/844,518 patent/US11604848B2/en active Active
-
2023
- 2023-03-10 US US18/182,087 patent/US20230214438A1/en active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11470176B2 (en) * | 2019-01-29 | 2022-10-11 | Cisco Technology, Inc. | Efficient and flexible load-balancing for clusters of caches under latency constraint |
US20220337908A1 (en) * | 2021-04-19 | 2022-10-20 | Synamedia Limited | User Interface (UI) Engine for Cloud UI Rendering |
US11678019B2 (en) * | 2021-04-19 | 2023-06-13 | Synamedia Limited | User interface (UI) engine for cloud UI rendering |
Also Published As
Publication number | Publication date |
---|---|
US11604848B2 (en) | 2023-03-14 |
US20220398292A1 (en) | 2022-12-15 |
US20230214438A1 (en) | 2023-07-06 |
WO2018103061A1 (en) | 2018-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220006878A1 (en) | Method and apparatus for reducing loading time of web pages | |
US20230214438A1 (en) | Technologies for cross-device shared web resource cache | |
EP3229148B1 (en) | Website access method and device, and website system | |
US20230396669A1 (en) | Technologies for transparent function as a service arbitration for edge systems | |
US10693979B2 (en) | Third party validation of web content | |
US9378049B1 (en) | Servicing I/O requests in an I/O adapter device | |
US8769526B2 (en) | Automatic application updates | |
US10574703B1 (en) | Content delivery employing multiple security levels | |
US9769323B2 (en) | Techniques for zero rating through redirection | |
US10701073B2 (en) | Terminal authentication method and device | |
US9251362B2 (en) | Medium for storing control program, client apparatus, and control method for client apparatus | |
US9288189B2 (en) | Retrieving both sensitive and non-sensitive content in a secure manner | |
US8195818B2 (en) | Enforcing communication security for selected resources | |
US9348790B2 (en) | Method for efficient use of content stored in a cache memory of a mobile device | |
US20150379285A1 (en) | Secure access to running client application features from a browser application | |
US20140067903A1 (en) | Media query engine system and method | |
US9369467B1 (en) | System, method, and computer program for providing generic access to web content on a mobile device | |
US20230088115A1 (en) | Generating early hints informational responses at an intermediary server | |
US11403397B2 (en) | Cache system for consistent retrieval of related objects | |
US10313349B2 (en) | Service request modification | |
CN111049949A (en) | Domain name identification method, device, electronic equipment and medium | |
US11418818B1 (en) | System for controlling storage of response data | |
US11528289B2 (en) | Security mechanisms for content delivery networks | |
US20230376416A1 (en) | Optimizing Provisioning Certification Caching Service Protocol for Performance Improvement and Scalability | |
US20230224303A1 (en) | Techniques for providing long uniform resource locators through a secure environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |
|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DENG, PAN;DAI, CHUNYANG;XU, SHU;AND OTHERS;SIGNING DATES FROM 20220621 TO 20230103;REEL/FRAME:062527/0862 |