U.S. patent application number 16/348409 was filed with the patent office on 2020-03-05 for technologies for cross-device shared web resource cache.
This patent application is currently assigned to Intel Corporation. The applicant listed for this patent is INTEL CORPORATION. Invention is credited to Chunyang DAI, Pan DENG, Junchao HAN, Tianyou LI, Shu XU.
Application Number | 20200073905 16/348409 |
Document ID | / |
Family ID | 62491697 |
Filed Date | 2020-03-05 |
![](/patent/app/20200073905/US20200073905A1-20200305-D00000.png)
![](/patent/app/20200073905/US20200073905A1-20200305-D00001.png)
![](/patent/app/20200073905/US20200073905A1-20200305-D00002.png)
![](/patent/app/20200073905/US20200073905A1-20200305-D00003.png)
![](/patent/app/20200073905/US20200073905A1-20200305-D00004.png)
![](/patent/app/20200073905/US20200073905A1-20200305-D00005.png)
![](/patent/app/20200073905/US20200073905A1-20200305-D00006.png)
United States Patent
Application |
20200073905 |
Kind Code |
A1 |
DENG; Pan ; et al. |
March 5, 2020 |
TECHNOLOGIES FOR CROSS-DEVICE SHARED WEB RESOURCE CACHE
Abstract
Technologies for cross-device shared web resource caching
include a client device (102a) and a shared cache device (102b).
The client device (102a) scans for a shared cache device (102b) in
local proximity to the client device (102a) and, in response to the
scan, registers with the shared cache device (102b). After
registering, the client device (102a) requests a cached web
resource from the shared cache device (102b). The shared cache
device (102b) determines whether a cached web resource that matches
the request is installed in a shared cache (102b). The shared cache
device (102b) may determine whether an origin of the request
matches the origin of the cached web resource. If installed, the
shared cache device (102b) sends a found response and the cached
web resource to the client device (102a). If not installed, the
shared cache device (102b) sends a not-found response and the
client device (102a) may request the web resource from a remote web
server. Other embodiments are described and claimed.
Inventors: |
DENG; Pan; (Shanghai,
CN) ; DAI; Chunyang; (Shanghai, CN) ; XU;
Shu; (Shanghai, CN) ; LI; Tianyou; (Shanghai,
CN) ; HAN; Junchao; (Shanghai, CN) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
INTEL CORPORATION |
Santa Clara |
CA |
US |
|
|
Assignee: |
Intel Corporation
Santa-Clara
CA
|
Family ID: |
62491697 |
Appl. No.: |
16/348409 |
Filed: |
December 9, 2016 |
PCT Filed: |
December 9, 2016 |
PCT NO: |
PCT/CN2016/109151 |
371 Date: |
May 8, 2019 |
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 12/0811 20130101;
H04L 67/02 20130101; H04L 67/2852 20130101; H04L 29/08 20130101;
G06F 12/084 20130101; G06F 16/9574 20190101; H04L 67/2842
20130101 |
International
Class: |
G06F 16/957 20060101
G06F016/957; G06F 12/084 20060101 G06F012/084; H04L 29/08 20060101
H04L029/08; G06F 12/0811 20060101 G06F012/0811 |
Claims
1-25. (canceled)
26. 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.
27. The computing device of claim 26, 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.
28. The computing device of claim 26, 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.
29. The computing device of claim 26, 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.
30. The computing device of claim 26, 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.
31. The computing device of claim 26, 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.
32. The computing device of claim 26, wherein to scan for the
shared cache device in local proximity to the computing device
comprises to scan via a short-range communication protocol.
33. One or more computer-readable storage media comprising a
plurality of instructions that in response to being executed cause
a computing device to: scan for a shared cache device in local
proximity to the computing device; register with the shared cache
device in response to scanning for the shared cache device; store
authentication credentials associated with the shared cache device
in response to registering with the shared cache device; request a
cached web resource from the shared cache device in response to
storing the authentication credentials associated with the shared
cache device; receive 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 receive the cached web resource from
the shared cache device in response to receiving the found
response.
34. The one or more computer-readable storage media of claim 33,
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.
35. The one or more computer-readable storage media of claim 33,
further comprising a plurality of instructions that in response to
being executed cause the computing device to: receive 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 request 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.
36. The one or more computer-readable storage media of claim 33,
further comprising a plurality of instructions that in response to
being executed cause the computing device to: determine whether
validation of the cached web resource is required in response to
receiving 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 determining 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 determining that the
cached web resource has been modified.
37. The one or more computer-readable storage media of claim 33,
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.
38. The one or more computer-readable storage media of claim 33,
wherein to scan for the shared cache device in local proximity to
the computing device comprises to scan via a short-range
communication protocol.
39. 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.
40. The computing device of claim 39, 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.
41. The computing device of claim 39, 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.
42. The computing device of claim 39, 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.
43. The computing device of claim 42, 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.
44. The computing device of claim 42, 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.
45. The computing device of claim 42, 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.
46. One or more computer-readable storage media comprising a
plurality of instructions that in response to being executed cause
a computing device to: register a client device with the computing
device; store authentication credentials associated with the client
device in response to registering the client device; receive 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;
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 receiving the request for the
cached web resource; send 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 send the cached web resource to the client device in
response to sending the found response.
47. The one or more computer-readable storage media of claim 46,
further comprising a plurality of instructions that in response to
being executed cause the computing device to: determine whether the
client device is validated in response to receiving the request for
the cached web resource; and send a no-permission response to the
client device in response to determining that the client device is
not validated.
48. The one or more computer-readable storage media of claim 46,
further comprising a plurality of instructions that in response to
being executed cause the computing device 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 downloading the web
resource; and install 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.
49. The one or more computer-readable storage media of claim 48,
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.
50. The one or more computer-readable storage media of claim 48,
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.
Description
BACKGROUND
[0001] 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.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] 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.
[0003] FIG. 1 is a simplified block diagram of at least one
embodiment of a system for a cross-device shared web resource
cache;
[0004] 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;
[0005] 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;
[0006] 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;
[0007] 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;
[0008] 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; and
[0009] 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.
DETAILED DESCRIPTION OF THE DRAWINGS
[0010] 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.
[0011] 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).
[0012] 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).
[0013] 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.
[0014] Referring now to FIG. 1, in an illustrative embodiment, 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. 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 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. Thus, 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.
[0015] 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 a processor 120, an input/output
subsystem 122, a memory 124, a data storage device 126, and a
communication 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, the
memory 124, or portions thereof, may be incorporated in the
processor 120 in some embodiments.
[0016] 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. Similarly, 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. 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 the processor 120, the memory 124, and other components
of the computing device 102, on a single integrated circuit
chip.
[0017] 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.RTM., Wi-Fi.RTM. 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.
[0018] As shown, 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. For example, in some embodiments,
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.
[0019] 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, the remote 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, 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. 1 and described below as embodied
as a single server computing device, it should be appreciated that
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.
[0020] 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 the system 100
over the network 108. The network 108 may be embodied as any number
of various wired and/or wireless networks. For example, 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. As such, 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.
[0021] Referring now to FIG. 2, in an illustrative embodiment, a
client device 102a 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. As such, in some embodiments, 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). It should
he appreciated that, in such embodiments, 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.
[0022] The registration agent 202 is configured to scan for a
shared cache device 102b in local proximity to the client computing
device 102a. The client device 102a may, for example, scan a local
network for the shared cache device 102b or scan for the shared
cache device 102b via a short-range communication protocol. The
registration agent 202 is further configured to register with the
shared cache device 102b in response to the scan and store
authentication credentials associated with the shared cache device
102b in response to registering with the shared cache device 102b.
The authentication credentials may be stored, for example, in an
authentication database 204.
[0023] The browser cache agent 206 is configured to request a
cached web resource from the shared cache device 102b in response
to storing the authentication credentials associated with the
shared cache device 102b. In some embodiments, 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 102b, a found response that indicates that the cached web
resource was found by the shared cache device 102b and to receive
the cached web resource from the shared cache device 102b in
response to receiving the found response.
[0024] 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 102b indicating that the cached
web resource has been modified in response to determining that the
cached web resource has been modified.
[0025] The browser cache agent 206 may be further configured to
receive, from the shared cache device 102b, a no-permission
response that indicates that the client device 102a 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
102b, a not-found response that indicates that the cached web
resource was not found by the shared cache device 102b 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.
[0026] Still referring now to FIG. 2, in the illustrative
embodiment, a shared cache device 102b 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. As such, in some embodiments, 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). It should be appreciated that, in such
embodiments, 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 102b. 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.
[0027] The registration agent 222 is configured to register a
client device 102a with the shared cache device 102b and store
authentication credentials associated with the client device 102a
in response to registering the client device 102a. The
authentication credentials may be stored in, for example, an
authentication database 224.
[0028] The shared cache agent 226 is configured to receive a
request for a cached web resource from the client device 102a 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 102b in
response to receiving the request. The shared cache agent 226 is
further configured to send a found response to the client device
102a if a matching cached web resource is installed in the shared
cache 228 and to send the cached web resource to the client device
102a in response to sending the found response.
[0029] 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 102a 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.
[0030] The shared cache agent 226 may be further configured to send
a not-found response to the client device 102a 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 102a is validated in response receiving
of the request for the cached web resource and to send a
no-permission response to the client device 102a in response to
determining that the client device 102a is not validated.
[0031] 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.
[0032] 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 102a 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 102a 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 102a.
[0033] Additionally, although illustrated, as being established by
two computing devices 102a, 102b, it should be understood that in
some embodiments a single computing device 102 may perform the
roles of both the client device 102a and the shared cache device
102b. Thus, in some embodiments, a single computing device 102 may
establish part or all of both environments 200, 220.
[0034] Referring now to FIG. 3, in use, a client device 102a 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 102a as shown in FIG. 2. The method 300 begins
in block 302, in which the client device 102a scans for a nearby
shared cache device 102b. The client device 102a may scan for the
nearby shared cache device 102b using any appropriate network
service discovery protocol or other discovery protocol. In some
embodiments, in block 304, the client device 102a scans a
local-area network for the shared cache device 102b. The client
device 102a may scan, for example, a local wireless network, a
local wired network, or any other local network subdivision. In
some embodiments, in block 306 the client device 102a may scan for
the shared cache device 102b using a short-range communication
protocol. For example, the client device 102a may scan using a
short-range radio communication technology such as Bluetooth,
near-field communication (NFC), or other short-range protocol.
[0035] In block 308, the client device 102a determines whether a
shared cache device 102b has been found. If not, the method 300
loops back to block 302 to continue scanning for a shared cache
device 102b. If a shared cache device 102b has been found, the
method 300 advances to block 310.
[0036] In block 310, the client device 102a sends a request to
register with the shared cache device 102b. The request to register
may include identification information of the client device 102a
and/or a user of the client device 102a. For example, the request
to register may include a device identifier and authentication
credentials. In block 312, the client device 102a determines
whether the request to register has been approved. For example, the
shared cache device 102b may validate the authentication
credentials or perform other security or policy checks before
returning an approval to the client device 102a. 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 102b. If the
registration request is approved, the method 300 advances to block
314.
[0037] In block 314, the client device 102a saves authentication
credentials for the shared cache device 102b. The client device
102a may, for example, store a device identifier and authentication
credentials associated with the shared cache device 102b into the
authentication database 204. The authentication credentials may
allow the client device 102a and the shared cache device 102b to
establish a secure communication channel to receive cached web
resources as described further below. After registering and saving
the authentication credentials, the client device 102a may request
cached web resources from the shared cache device 102b as described
below in connection with FIG. 4. After saving the authentication
credentials, the method 300 loops back to block 302, in which the
client device 102a may continue scanning for nearby shared cache
computing devices 102b.
[0038] Referring now to FIG. 4, in use, a client device 102a 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 102a as shown in FIG. 2. The method 400 begins
in block 402, in which the client device 102a 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. 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.
[0039] In block 404, the client device 102a 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 102b to enforce security boundaries for cached web
resources.
[0040] In block 406, the client device 102a 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.
[0041] In block 408, the client device 102a requests the web
resource from the shared cache device 102b. 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 102a may send the request to a nearby shared cache device
102b that was discovered using the method 300 described above in
connection with FIG. 3. In some embodiments, in block 410 the
client device 102a may authenticate to the shared cache device
102b. For example, the client device 102a may submit a device
identifier and credentials generated during authentication as
described above in connection with FIG. 3. After authenticating,
communications between the client device 102a and the shared cache
device 102b may be encrypted or otherwise communicated over a
secure channel.
[0042] In block 412, the client device 102a receives a response
from the shared cache device 102b. The shared cache device 102b
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.
[0043] In block 414, the client device 102a determines whether a
no-permission response was received from the shared cache device
102b. A no-permission response indicates that the client device
102a was not successfully validated by the shared cache device
102b. 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 102a 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 102a 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.
[0044] Referring back to block 414, if a no-permission response was
not received, the method 400 advances to block 418, in which the
client device 102a 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. If a not-found response or an expired
response was received, the method 400 branches to block 420, in
which the client device 102a 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.
After requested the web resource from the remote web server 104,
the method 400 loops back to block 402 to monitor for additional
requests for cacheable web resources.
[0045] 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 the
client device 102a receives the requested cached web resource from
the shared cache device 102b. In some embodiments, in block 424 the
client device 102a may also receive metadata associated with the
requested cached web resource. For example, the client device 102a
may receive one or more HTTP headers associated with the cached web
resource.
[0046] In block 426, the client device 102a determines whether
validation is required for the cached web resource. The client
device 102a 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.
[0047] In block 428, the client device 102a 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 102a 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. In block 430, the client device 102a determines whether
the cached web resource was successfully validated. If so, the
method 400 branches to block 434, described below. If not
validated, the method 400 advances to block 432, in which the
client device 102a sends a message to the shared cache device 102b
indicating that the web resource 106 corresponding to the cached
web resource has been modified. In response, the shared cache
device 102b may remove the cached web resource from the shared
cache 228. After sending the message to the shared cache device
102b, the method 400 loops back to block 402 to monitor for
additional requests for cacheable web resources. In some
embodiments, the client device 102a may re-attempt the request for
the cached web resource, which may result in the client device 102a
downloading the web resource 106 from the remote web server
104.
[0048] Referring back to blocks 426, 430, if validation was not
required or if the cached web resource was successfully validated,
the method 400 advances to block 434, in which the client device
102a uses the cached web resource. The client device 102a 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, the method 400 loops back to block 402 to monitor for
additional requests for cacheable web resources.
[0049] Referring now to FIG. 5, in use, a shared cache device 102b
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 102b as shown in FIG. 2.
The method 500 begins in block 502, in which the shared cache
device 102b monitors for a request to register a client device
102a. The request may be sent by the client device 102a in response
to scanning for a nearby shared cache device 102b, as described
above in connection with FIG. 3. In block 504, the shared cache
device 102b 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 102a.
If a request is received, the method 500 advances to block 506.
[0050] In block 506, the shared cache device 102b determines
whether to approve the request to register the client device 102a.
The shared cache device 102b may, for example, verify
authentication credentials provided by the client device 102a,
perform one or more security or policy checks, or otherwise verify
the client device 102a. In block 508, the shared cache device 102b
checks whether the client device 102a was approved. If not, the
method 500 loops back to block 502 to continue monitoring for
requests to register a client device 102a. If the client device
102a was approved, the method 500 advances to block 510.
[0051] In block 510, the shared cache device 102b saves
authentication credentials for the client device 102a. The shared
cache device 102b may, for example, store a device identifier and
authentication credentials associated with the client device 102a
into the authentication database 224. As described above, the
authentication credentials may allow the client device 102a and the
shared cache device 102b to establish a secure communication
channel to transmit cached web resources as described further
below. In block 512, the shared cache device 102b sends an approval
of the request to the client device 102a. After sending the
approval, the shared cache device 102b may process requests for
cached web resources from the client device 102a. One potential
embodiment of a method for processing requests for cached web
resources is described further below in connection with FIG. 7.
After sending the approval, the method 500 loops back to block 502
to continue monitoring for requests to register a client device
102a.
[0052] Referring now to FIG. 6, in use, a shared cache device 102b
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 102b as shown in FIG. 2.
The method 600 begins in block 602, in which the shared cache
device 102b 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.
[0053] In block 604, the shared cache device 102b 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. In
some embodiments, in block 606 the shared cache device 102b 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 associated web resource 106 is
cacheable. In some embodiments, in block 608 the shared cache
device 102b 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 the web resource 106 that is designated as cacheable.
[0054] In block 610, the shared cache device 102b 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.
[0055] In block 612, the shared cache device 102b installs the
downloaded web resource 106 into the shared cache 228. As described
further below in connection with FIG. 7, after being installed in
the shared cache 228, the cached web resource may be available to
be transmitted to one or more client devices 102a. In some
embodiments, in block 614, the shared cache device 102b 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 102b
may store additional metadata such as HTTP headers associated with
the web resource. In particular, the shared cache device 102b may
store metadata relating to cache freshness including expiration
data and/or whether validation with the remote web server 104 is
required. In some embodiments, in block 616 the shared cache device
102b may evict one or more other cached web resources from the
shared cache 228 before installing the cached web resource. For
example, the shared cache device 102b may evict cached web
resources to free up space in the shared cache 228. The shared
cache device 102b may use any appropriate cache eviction policy,
such as a least recently used policy. Additionally or
alternatively, in some embodiments the shared cache device 102b 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. After
installing the cached web resource, the method 600 loops back to
block 602 to continue downloading web resources 106.
[0056] Referring now to FIG. 7, in use, a shared cache device 102b
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 102b as shown in FIG. 2.
The method 700 begins in block 702, in which the shared cache
device 102b monitors for requests for a cached web resource from a
client device 102a. 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. In block 704, the shared cache device 102b
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). In block 706, the shared cache device 102b 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.
[0057] In block 708, the shared cache device 102b validates that
the client device 102a is approved to access the shared cache 228.
The shared cache device 102b may verify that the client device 102a
was successfully registered with the shared cache device 102b as
described above in connection with FIG. 4. The shared cache device
102b may, for example, verify a device identifier and
authentication credentials submitted by the client device 102a
against the authentication database 224. After authenticating,
communications between the client device 102a and the shared cache
device 102b 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.
[0058] In block 710, the shared cache device 102b checks whether
the client device 102a was validated. If so, the method 700
advances to block 714, described below. If the client device 102a
was not validated, the method 700 branches to block 712, in which
the shared cache device 102b sends a no-permission response to the
client device 102a. After sending the response, the method 700
loops back to block 702 to continue monitoring for requests for
cached web resources.
[0059] Referring back to block 710, if the client device 102a is
validated, the method 700 advances to block 714, in which the
shared cache device 102b looks up a cached web resource matching
the request and having the same origin in the shared cache 228.
Thus, by restricting the lookup to cached web resources having the
same origin, the shared cache device 102b may enforce a same-origin
security policy. In block 716, the shared cache device 102b
determines whether a matching cached web resource was found. If so,
the method 700 advances to block 720, described below. If a
matching cached web resource was not found, the method 700 branches
to block 718, in which the shared cache device 102b sends a
not-found response to the client device 102a. After sending the
response, the method 700 loops back to block 702 to continue
monitoring for requests for cached web resources.
[0060] Referring back to block 716, if a cached web resource was
found, the method 700 advances to block 720, in which the shared
cache device 102b determines whether the cached web resource has
expired. The shared cache device 102b may, for example, examine
metadata associated with the cached web resource included in the
shared cache 228, such as an expiration date. In block 722, the
shared cache device 102b 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 102b clears
the cached web resource from the shared cache 228. In block 726,
the shared cache device 102b sends an expired response to the
client device 102a. After sending the response, the method 700
loops back to block 702 to continue monitoring for requests for
cached web resources.
[0061] Referring back to block 722, if the cached web resource is
not expired, the method 700 advances to block 728, in which the
shared cache device 102b sends a found response to the client
device 102a. In block 730, the shared cache device 102b sends the
cached web resource to the client device 102a. The shared cache
device 102b may also send metadata associated with the requested
cached web resource. For example, the shared cache device 102b may
send one or more HTTP headers associated with the cached web
resource. In particular, the metadata may indicate whether the
client device 102a 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. 4, if the
cached web resource is not successfully validated, the client
device 102a may send the shared cache device 102b a message
indicating that the resource was not successfully validated. The
shared cache device 102b may remove the cached web resource from
the shared cache 228 in response to a message indicating that the
resource was not successfully validated. After sending the cached
web resource to the client device 102a, the method 700 loops back
to block 702 to continue monitoring for requests for cached web
resources.
[0062] It should be appreciated that, in some embodiments, 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.
EXAMPLES
[0063] 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.
[0064] 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.
[0065] 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.
[0066] 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.
[0067] 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.
[0068] 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.
[0069] 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.
[0070] 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.
[0071] 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.
[0072] 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.
[0073] 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.
[0074] 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.
[0075] 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.
[0076] 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.
[0077] 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.
[0078] 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.
[0079] 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.
[0080] 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.
[0081] 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.
[0082] 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.
[0083] 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.
[0084] 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.
[0085] 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.
[0086] 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.
[0087] 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.
[0088] 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.
[0089] 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.
[0090] 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.
[0091] 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.
[0092] 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.
[0093] 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.
[0094] 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.
[0095] 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.
[0096] 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.
[0097] 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.
[0098] 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.
[0099] 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.
[0100] 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.
[0101] 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.
[0102] 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.
[0103] 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.
[0104] 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.
[0105] 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.
[0106] 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.
[0107] 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.
[0108] 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.
[0109] 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.
[0110] 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.
[0111] 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.
[0112] 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.
[0113] 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.
[0114] Example 51 includes a computing device comprising means for
performing the method of any of Examples 25-48.
[0115] 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.
[0116] 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.
[0117] 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.
[0118] 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.
[0119] 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.
[0120] 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.
[0121] 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.
[0122] 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.
[0123] 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.
[0124] 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.
[0125] 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.
[0126] 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.
[0127] 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.
[0128] 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.
[0129] 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.
[0130] 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.
[0131] 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.
[0132] 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.
[0133] 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.
[0134] 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.
[0135] 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.
[0136] 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.
[0137] 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.
[0138] 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.
* * * * *