In one embodiment, a method for processing a client request for content comprises receiving, at an intermediary network node, a client request for content on a network. The client request is associated with a set of attributes indicating a requirement to process the requested content by multiple designated applications prior to transferring the requested content to a client. The method further comprises searching, at the intermediary network node, a content cache for matching content conforming to the processing requirement, and determining, at the intermediary network node, whether the matching content is currently valid. If this determination is positive, the matching content is transferred to the client.
|
19. A method comprising:
storing a plurality of versions of an item of content in a content cache within an intermediary network node, wherein each of said versions is a result of processing the item of content using one or more of a plurality of applications; and
computing a pipeline key based on an identifier of each of the plurality of applications and the order for invoking the plurality of applications;
computing a cache key for the item of content based on the identifier of the item of content and the pipeline key;
searching the content cache within the intermediary node using the cache key for matching content including one of said versions conforming to the processing requirement;
using the plurality of versions of the item of content in the content cache to service a plurality of client requests for the item of content at the intermediary network node, each request having a processing requirement that the item of content be processed by a combination of the plurality of applications and an order in which the plurality of applications are to be invoked to fulfill the processing requirement, without having to process the item of content with any of the plurality of applications to service said requests.
12. A device to operate as an intermediary node on a network, the device comprising:
a content cache to store a plurality of versions of an item of content, wherein each of said versions is a result of processing the item of content using one or more of a plurality of applications;
a request processing unit to receive a client request for the item of content, to identify a processing requirement for processing the item of content with a combination of the plurality of applications prior to transferring the item of content to a client, and to determine an order in which the plurality of applications are to be invoked to fulfill the processing requirement;
a key calculator to compute a pipeline key based on an identifier of each of the plurality of applications and the order for invoking the plurality of applications, and to compute a cache key for the item of content based on the identifier of the item of content and the pipeline key;
a searcher to search the content cache using the cache key for matching content including one of said versions conforming to the processing requirement;
a content consistency tester to determine whether the matching content is currently valid; and
a transmitter to transfer the matching content to the client if the matching content is currently valid.
1. A method comprising:
storing a plurality of versions of an item of content in a content cache within an intermediary network node, wherein each of said versions is a result of processing the item of content using one or more of a plurality of applications;
receiving, at the intermediary network node, a client request for the item of content, the client request being associated with an indication of a processing requirement for processing the item of content with a combination of the plurality of applications prior to transferring the item of content to the client;
determining an order in which the plurality of applications is to be invoked to fulfill the processing requirement;
computing a pipeline key based on an identifier of each of the plurality of applications and the order for invoking the plurality of applications;
computing a cache key for the item of content based on the identifier of the item of content and the pipeline key;
searching the content cache within the intermediary network node using the computed cache key for matching content including one of said versions conforming to the processing requirement;
determining, at the intermediary network node, whether the matching content is currently valid;
and if the matching content is currently valid, transferring the matching content to the client.
16. A device to operate as an intermediary node on a network, the device comprising:
a processor;
a network interface to allow the device to communicate on the network;
a content cache to store a plurality of versions of an item of content, wherein each of said versions is a result of processing the item of content using one or more of a plurality of applications; and
a storage facility to store program code for execution by the processor to cause the device to receive a client request for the item of content over the network, the client request being associated with one or more attributes indicating a processing requirement for processing the requested content with a combination of the plurality of applications prior to transferring the requested content to a client, the program code for execution by the processor further to cause the device to:
determine an order in which the plurality of applications is to be invoked to fulfill the processing requirement,
compute a pipeline key based on an identifier of each of the plurality of applications and the order for invoking the plurality of applications,
compute a cache key for the item of content based on the identifier of the item of content and the pipeline key;
search the content cache using the cache key to identify matching content in the content cache including one of said versions conforming to the processing requirement;
determine whether the matching content is currently valid, and
transfer the matching content to the client if the matching content is currently valid.
2. The method of
3. The method of
4. The method of
determining whether the matching content is stale due to a change associated with an origin server of the item of content; and
if the matching content is not stale, determining whether the matching content is consistent with a current state of the plurality of applications.
5. The method of
6. The method of
computing a new service bitmask and a new consistency key based on the current state of the plurality of applications;
comparing the new service bitmask with an existing service bitmask associated with the matching content; and
comparing the new consistency key with an existing consistency key associated with the matching content.
7. The method of
8. The method of
the intermediary network node is a network caching device communicating with the plurality of applications using an Internet content Adaptation Protocol (ICAP); and
a current version of each of the plurality of applications is identified by an ICAP services tag (ISTAG) provided by said each of the plurality of applications.
9. The method of
determining that the matching content is not currently valid; and
discarding the matching content.
10. The method of
determining, based on the search, that the content cache does not store matching content conforming to the processing requirement;
finding, in the content cache, pre-processed content having an identifier of the item of content;
determining that the found content is currently valid;
initiating the required processing of the found content by the plurality of applications; and
transferring the processed content to the client.
11. The method of
determining, based on the search, that the content cache does not store matching content conforming to the processing requirement;
determining that the content cache does not store pre-processed content having an identifier of the item of content;
retrieving the item of content from an origin server;
initiating the required processing of the retrieved content by the plurality of applications;
computing a cache key for the processed content; computing a service bitmask for the processed content; computing a consistency key for the processed content;
storing a copy of the processed content, together with the cache key, the service bitmask, the consistency key and a content identifier, in the content cache; and transferring the processed content to the client.
13. The device of
14. The device of
15. The device of
17. The device of
18. The device of
20. The method of
searching the content cache for a version of the item of content which matches a client request; and
using said cache key to identify said version as conforming to the processing requirement of the client request.
|
The present invention pertains to devices which proxy requests between clients and servers and which cache content on a computer network. More particularly, the present invention relates to a method and apparatus for caching content transformed by a set of adaptation services.
Of the many uses of the Internet, one of the more common ones is to access content on a remote server, such as a World Wide Web server. Typically, a person operates a client device to access content on a remote origin server over the Internet. The client may be, for example, a personal computer (PC) or a handheld device such as a personal digital assistant (PDA) or cellular telephone. The client often includes a software application known as a browser, which can provide this functionality. A person using the client typically operates the browser to locate and select content stored on the origin server, such as a web page or a multimedia file. In response to this user input, the browser sends a request for the content over the Internet to the origin server on which the content resides. In response, the origin server returns a response containing the requested content to the client, which outputs the content in the appropriate manner (e.g., it displays the web page or plays the audio file). The request and response may be communicated using well-known protocols, such as transmission control protocol/Internet protocol (TCP/IP) and hypertext transfer protocol (HTTP).
For a variety of reasons, it may be desirable to place a device known as a proxy logically between the client and the origin server. For example, organizations often use a proxy to provide a barrier between clients on their local area networks (LANs) and external sites on the Internet by presenting only a single network address to the external sites for all clients. A proxy normally forwards requests it receives from clients to the applicable origin server and forwards responses it receives from origin servers to the appropriate client. A proxy may provide authentication, authorization and/or accounting (AAA) operations to allow the organization to control and monitor clients' access to content. A proxy may also act as (or facilitate the use of) a firewall to prevent unauthorized access to clients by parties outside the LAN. Proxies are often used in this manner by corporations when, for example, a corporation wishes to control and restrict access by its employees to content on the Internet and to restrict access by outsiders to its internal corporate network.
It is also common for a proxy to operate as a cache of content that resides on origin servers; such a device may be referred to as a “proxy cache”. An example of such a device is the NetCache product designed and manufactured by Network Appliance, Inc. of Sunnyvale, Calif. The main purpose of caching content is to reduce the latency associated with servicing content requests. By caching certain content locally, the proxy cache avoids the necessity of having to forward every content request over the network to the corresponding origin server and having to wait for a response. Instead, if the proxy cache receives a request for content which it has cached, it simply provides the requested content to the requesting client (subject to any required authentication and/or authorization) without involving the origin server.
Proxy caches may also be used to facilitate transformations of the requested content prior to returning the requested content to the requesting client. Examples of such transformations include translation of web pages retrieved from the origin server to different formats depending on the client device type (e.g., a PDA, a cellular telephone, etc.), translation of web pages to different human languages, insertion of advertisements into web pages, checking web pages for viruses, etc. The transformations may be performed by designated applications residing on a proxy cache or independent servers. The requested content may undergo multiple transformations (e.g., virus check, language translation, and advertisement insertion), resulting in multiple versions of the requested content. Storing multiple versions complicates caching algorithms and introduces disk as well as memory overheads. However, if a web page retrieved from the origin server is cached, but all of its transformed versions are discarded, the web page has to be routed through the different services each time a similar request for content is received, consuming additional bandwidth and increasing the latency associated with servicing content requests.
According to one aspect of the present invention, a method for processing a client request for content comprises receiving, at an intermediary network node, a client request for content on a network. The client request is associated with a set of attributes indicating a requirement to process the requested content with multiple designated applications prior to transferring the requested content to a client. The method further comprises searching, at the intermediary network node, a content cache for matching content conforming to the processing requirement, and determining, at the intermediary network node, whether the matching content is currently valid. If this determination is positive, the matching content is transferred to the client.
Other features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
Methods and apparatus for caching content processed by multiple designated applications are described. Note that in this description, references to “one embodiment” or “an embodiment” mean that the feature being referred to is included in at least one embodiment of the present invention. Further, separate references to “one embodiment” in this description do not necessarily refer to the same embodiment; however, neither are such embodiments mutually exclusive, unless so stated and except as will be readily apparent to those skilled in the art. For example, a feature, structure, act, etc. described in one embodiment may also be included in other embodiments. Thus, the present invention can include a variety of combinations and/or integrations of the embodiments described herein.
As described in greater detail below, a proxy cache on a network caches content (or equivalently, an item of content) transformed by multiple designated applications (e.g., a language translation application, a format translation application, an ad-insertion application, etc.). Subsequently, when the proxy cache receives a request for content from a client, the proxy cache identifies a requirement for processing the requested content by a set of designated applications and searches a content cache for content that matches the requested content and conforms to the processing requirement. If such content is stored in the content cache, the proxy cache determines whether this stored content is currently valid. If this determination is positive, the proxy cache transfers the stored content to the client.
As will become more apparent from the description which follows, the described technique incurs small computational as well as disk overheads, thus providing an efficient and robust mechanism for caching multiple versions of content that are produced by transformations of the content by designated services. With the present technique, the necessity of routing web pages through different services for similar requests for content is avoided, reducing the latency associated with servicing content requests.
Note that a proxy cache in accordance with the present invention can be used advantageously in network environments other than that shown in
The request processing unit 204 is responsible for receiving content requests from clients and identifying processing requirements associated with the content requests. A processing requirement is a requirement to process the requested content with a particular set of designated applications (e.g., a language translation application, an ad-insertion application, a virus check application, a format translation application, etc.) prior to transferring the requested content to the client. In one embodiment, the processing requirement is defined by attributes associated with the client request. The attributes may, for example, identify a certain type of the client device (e.g., a PDA or cellular phone) to require a translation of the requested web page into a format acceptable to the client device, a country where the client device is located (e.g., China, France, Italy) to require a translation of the requested content into an appropriate language, or the user preference with respect to advertising to require an insertion of ads into the requested content. The request processing unit 204 identifies a required set of applications for processing the requested content. In one embodiment, the request processing unit 204 also defines the order in which the required applications are to be invoked (e.g., a language translation application may need to be invoked prior to a format translation application).
The key calculator 206 is responsible for computing a cache key based on an identifier of the requested content (e.g., a URL of the requested content) and identifiers of the required applications (e.g., names of the required applications). In one embodiment, the cache key also reflects the order in which the required applications are to be invoked.
The searcher 208 is responsible for searching the content cache 212 using the cache key computed by the key calculator 206. In other words, the searcher 208 searches the content cache 212 for matching content that has the same content identifier (e.g., a URL) as the requested content and was created using the same applications (invoked, in one embodiment, in the same order) as the applications identified by the request processing unit 204.
The content consistency tester 214 is responsible for determining whether specific content stored in the content cache 212 is currently valid. In one embodiment, the content consistency tester 214 begins this determination by evaluating aging data associated with the matching content. The aging data specifies the time period during which the content remains fresh. In one embodiment, the content aging controller 210 is responsible for maintaining the aging data based on information received from the origin server and the designated applications. In one embodiment, the aging data is included in the content sent by the origin server. The content with the aging data may then be forwarded to designated applications for transformations. Each designated application may modify the aging data and return the transformed content with the modified aging data to the proxy cache 200. The content aging controller 210 ensures that the modifications of the aging data by the designated applications do not make the content stale with respect to the origin server (i.e., the designated applications are not allowed to extend the freshness time period specified by the origin server).
In one embodiment, if the content consistency tester 214 determines that the matching content is still fresh, the content consistency tester 214 further evaluates the current state of the designated applications that are required to participate in the processing of the requested content. In one embodiment, the current state of the required applications is based on current communication abilities of the required applications and the current versions of the required applications, as will be discussed in greater detail below. The content consistency tester 214 then compares current data identifying the current state of the required applications with existing data identifying the state of the required applications at the time of their processing of the matching content. If the current data is consistent with the existing data, the content consistency tester 214 concludes that the content being tested is currently valid.
The content retriever 216 is responsible for forwarding the client request to an appropriate origin server when the requested content is not in the content cache 212 (cache misses) and receiving the requested content from the origin server.
The content processing controller 218 is responsible for initiating the required processing of the requested content received from the origin server, i.e., required transformations of the requested content by the designated applications defined by the request processing unit 204. In one embodiment, the content processing controller 218 is further responsible for invoking the key calculator 206 to compute a content key for a final version of the requested content that is created when the required processing of the requested content completes and for storing the final version of the requested content with the computed content key in the content cache 212. The content key may include the cache key and/or other key as will be described in more detail below. In one embodiment, the content processing controller 218 stores the final version of the requested content only if the content aging controller 210 determines that the aging data associated with the final version of the requested content exceeds a predefined time interval to avoid storing stale or almost stale content.
The transmitter 202 is responsible for transferring the requested content (e.g., content provided either by the content consistency tester 214 or the content processing controller 218) to the client.
In one embodiment, the processing requirement is defined by a set of attributes associated with the client request. These attributes may specify, for example, the type of the client device, the user preference with respect to the language of the requested content, the user preference with respect to advertisements, etc.
At processing block 306, the searcher 208 searches a content cache for content that matches the content requested by the user and conforms to the processing requirement (i.e., content matching the final version of the requested content). The search is performed using such parameters as an identifier of the requested content (e.g., a URL of the requested content), identifiers of designated applications defined by the processing requirement and, in one embodiment, the order in which the designated applications are to be applied to the requested content. In one embodiment, a key computed by the key calculator 206 based on the above parameters is used to perform the search. One embodiment of a process for computing a key is discussed in more detail below in conjunction with
If content matching the final version of the requested content is found in the content cache (decision box 308), the content consistency tester 214 determines whether this stored content is currently valid (decision box 310). In one embodiment, content is deemed to be valid if it is still fresh. In another embodiment, the content is valid if it is fresh and the state of the designated applications participating in the creation of the content did not change while the content resided in the content cache. One embodiment of a process for validating content stored in the content cache will be discussed in more detail below in conjunction with
If the stored content is currently valid, the transmitter 202 returns it to the requesting client (processing block 312). Otherwise, the stored content is discarded (processing block 314).
If the determination made at decision box 308 is negative (i.e., content matching the final version of the requested content is not found in the content cache), the searcher 208 further determines whether the content cache stores content that matches a pre-processed version of the requested content (decision box 316). This determination may be made by searching the content cache using an identifier of the requested content (e.g., a URL of the requested content). If the matching pre-processed version of the requested content is found in the cache, the content consistency tester 214 determines whether the matching pre-processed version is still fresh (decision box 318). The freshness of the matching pre-processed version may be indicated by aging data stored with the matching pre-processed version.
If the matching pre-processed version is currently fresh, the content processing controller 218 initiates a transformation of the matching pre-processed version by designated applications (according to the processing requirement) (processing block 320). Once all of the required transformations are completed, the transmitter 202 returns the resulting final version to the requesting client (processing block 312). In one embodiment, the content processing controller 218 also stores the resulting final version with the key in the content cache for use in servicing future similar client requests.
Alternatively, if the pre-processed final version is not fresh, it is discarded (processing block 314).
If the cache does not store a matching pre-processed version of the requested content, the content retriever 216 forwards the client request for content to an appropriate origin server (processing block 324). Once a pre-processed version of the requested content is received from the origin server (processing block 326), processing blocks 320 and 312 are performed as shown in
Referring to
A pipeline key is computed using an order preserving function of a given set of designated applications. For an example given above, the pipeline key can be represented as follows:
PK=g ({virus_check_vend1, lang_trans_vend3, ad_ins_vend5}), where PK is a pipeline key and g is an order preserving function, i.e., g({a,b,c}) is not equal to g({b,c,a}) or g({a,c,b}) or g({c,a,b}).
Next, at processing block 404, a cache key is computed based on the pipeline key and a URL of the requested content. The cache key can be represented as follows:
CacheKey=f(URL,PK),
where ƒ is a function which produces unique results for different combinations of attributes. For example, function ƒ may be a message digest (MD5) function, or a one way hash function.
Since function g in the pipeline key is an order preserving function, function ƒ will return different cache keys for different orders of invoking the designated applications within a pipeline.
Further, at processing block 406, a content cache is searched for content that has a cache key matching the cache key calculated at processing block 404.
Referring to
If the aging data indicates that the matching final version is fresh (decision box 504), a further determination is made as to whether the matching final version stored in the content cache is consistent with the current state of the designated applications from the required pipeline (decision box 506). In one embodiment, the matching final version is deemed to be consistent with the current state of the designated applications if (a) the same applications in the pipeline that would not be bypassed at the present time were not bypassed at the time the stored content version was created, (b) the same applications that were not bypassed at the time the stored content version was created would not be bypassed at the present time, and (c) the versions of applications that were not bypassed at the time the stored content version was created were the same as the current versions of these applications. In one embodiment, a content consistency algorithm is used to make the determination in decision box 506, as will be described in more detail below in conjunction with
If the determination made in decision box 506 is positive, the matching final version of the requested content is returned to the requesting client (processing block 508). If the determination made either at decision box 504 or decision box 510 is negative, the matching final version of the requested content is discarded.
An OPTIONS request is sent to an ICAP server by an ICAP client before sending any other requests to gather server configuration details. Among the configuration details is ISTAG and Options-ttl which indicates the time period for which the configuration details of an ICAP server remain valid. An ICAP client is expected to refresh the configuration details of an ICAP server by sending an OPTIONS request before the time period specified in Option-ttl expires. An ICAP client can proactively refresh the configuration details at intervals more frequent than that specified in Options-ttl to be able to detect changes in network connectivity (or in the state of the ICAP server) as soon as possible. For example, an ICAP client may send an OPTIONS request to an ICAP server every 10 second.
Referring to
In one embodiment, in which configuration details of an ICAP server are proactively refreshed more frequently than the time interval specified in Options-ttl, the expiration of the configuration details will indicate an inability of the proxy cache to talk to the application. Accordingly, such application would be bypassed if the transformation were performed at the present time. In another embodiment, in which no proactive mechanism is in place, the proxy cache will send an explicit OPTIONS request for those applications whose configuration details have expired. If an OPTIONS response is not obtained (after a predefined number of retries), it will be concluded that such application would be bypassed if the transformations were performed at the present time.
An example of NSB for the pipeline {a, b, c, d} where services ‘a’ and ‘d’ would be bypassed would be ‘0110’.
Next, a determination is made as to whether the new service bitmask is consistent with an old service bitmask stored with the content being tested (decision box 604). In one embodiment, the two bitmasks are not consistent if (a) any application has a set bit in the new service bitmask while having a clear bit in the old service bitmask, or any application has a set bit in the old service bitmask while having a clear bit in the new service bitmask.
If the two bitmasks are inconsistent, the stored content is discarded (processing block 614), ensuring that (a) the same applications, which were bypassed when the stored content was created, would be bypassed now as well, and (b) the same applications, which were not bypassed when the stored content was created, would not be bypassed now as well.
If the determination made at decision box 604 is positive, ISTAGs are identified for those applications whose bits are set in an old service bitmask (SB) that was computed when the stored content was created (processing block 606). As described above, ISTAG identifies a current version of the application.
Further, a new consistency key is computed (processing block 608). The new consistency key is based on ISTAGs identified at processing block 606. Accordingly, the new consistency key is represented as follows:
NEW_CONS_KEY=m(ISTAG-u, ISTAG-v, . . . STAG-z),
where SB[u]=1, SB[v]=1, SB[z]=1.
The new consistency key is computed for only those applications that were not bypassed when the stored content was created to avoid invalidating the stored content if the applications that were down when the stored content was created are still not up.
If the new consistency key matches an old consistency key stored with the content being tested (decision box 610), then the versions of the applications participating in the creation of the stored content are the same as the current versions of these applications. Accordingly, the stored content is considered valid (processing block 612). Otherwise, the stored content is discarded (processing block 614).
Referring to
Once the required processing is completed, a final version of the requested content is identified (processing block 712). Then, in one embodiment, method 700 proceeds to processing block 714. In another embodiment, after the final version is identified, a determination is made as to whether aging data associated with the final version exceeds a predefined time interval (e.g., whether the aging data is greater than zero). The aging data is provided to the caching device by the origin server and can be updated by any applications participating in transformations of the requested content, as discussed in greater detail above. If the aging data exceeds the predefined time interval, method 700 proceeds to processing block 714. Otherwise, methods 700 skips processing blocks 714 and 716 and proceeds to processing block 718.
At processing block 714, a content key for the final version of the requested content is computed based on the identifier of the requested content (e.g., the URL of the requested content) and the identifiers of the designated applications participating in the required processing of the requested content. In one embodiment, the content key includes a combination of a cache key, a service bitmask, and a cache consistency key that are discussed in more detail above. In another embodiment, the content key consists solely of the cache key. In yet another embodiment, the content key consists of the cache key and any one of the service bitmask and the cache consistency key. In still other embodiments, the content key may consist of any other key that is indicative of the identifier of the requested content and the identifiers of the designated applications defined by the processing requirement.
At processing block 716, the final version of the requested content is stored with the content key in the content cache (to be used for future user requests). Afterwards, the final version of the requested content is returned to the requesting client (processing block 718).
The illustrated system includes one or more processors 801, i.e. a central processing unit (CPU), read-only memory (ROM) 802, and random access memory (RAM) 803, which may be coupled to each other by a bus system 807 and/or by direct connections. The processor(s) 801 may be, or may include, one or more programmable general-purpose or special-purpose microprocessors, digital signal processors (DSPs), programmable controllers, application specific integrated circuits (ASICs), programmable logic devices (PLDs), or a combination of such devices. The bus system (if any) 807 includes one or more buses or other connections, which may be connected to each other through various bridges, controllers and/or adapters, such as are well-known in the art. For example, the bus system 807 may include a “system bus”, which may be connected through one or more adapters to one or more expansion buses, such as a Peripheral Component Interconnect (PCI) bus, HyperTransport or industry standard architecture (ISA) bus, small computer system interface (SCSI) bus, universal serial bus (USB), or Institute of Electrical and Electronics Engineers (IEEE) standard 1394 bus (sometimes referred to as “Firewire”).
Also coupled to the bus system 807 are one or more mass storage devices 804, a network interface 805, and one or more input/output (I/O) devices 806. Each mass storage device 804 may be, or may include, any one or more devices suitable for storing large volumes of data in a non-volatile manner, such as a magnetic disk or tape, magneto-optical (MO) storage device, or any of various forms of Digital Versatile Disk (DVD) or CD-ROM based storage, or a combination thereof. RAM 803 and/or the mass storage device(s) 804 may be used to implement the content cache 212 of
The network interface 805 is one or more data communication devices suitable for enabling the processing system to communicate data with remote devices and systems via an external communication link 810. Each such data communication device may be, for example, an Ethernet adapter, a Digital Subscriber Line (DSL) modem, a cable modem, an Integrated Services Digital Network (ISDN) adapter, a satellite transceiver, or the like. Referring again to the embodiment of
Since proxy cache 101 may be accessed by a user via network interface 805, proxy cache 101 does not necessarily require its own I/O devices 806. Nonetheless, such I/O devices may be included in some embodiments and may include, for example, a keyboard or keypad, a display device, and a pointing device (e.g., a mouse, trackball, or touchpad).
As noted, the above-described processes and techniques (e.g., request processing, searching for a matching final version of requested content, validating stored content, caching a final version of requested content, etc.) may be implemented at least partially in software. Such software may be part of the operating system of the proxy cache 101. Such software may reside, either entirely or in part, in any of RAM 803, mass storage device(s) 804 and/or ROM 802. Such software may be executed by the processor(s) 801 to carry out the described processes and techniques.
Thus, a method and apparatus for caching content processed by multiple designated applications have been described. Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention as set forth in the claims. Accordingly, the specification and drawings are to be regarded in an illustrative sense rather than a restrictive sense.
Patent | Priority | Assignee | Title |
10070163, | Mar 19 2015 | Amazon Technologies, Inc. | Uninterrupted playback of video streams using lower quality cached files |
10389838, | May 09 2014 | Amazon Technologies, Inc. | Client-side predictive caching for content |
10402780, | Apr 14 2008 | International Business Machines Corporation | Service for receiving obsolete web page copies |
10516753, | May 09 2014 | Amazon Technologies, Inc. | Segmented predictive caching for content |
10574779, | Aug 23 2012 | Amazon Technologies, Inc. | Predictive caching for content |
10728593, | Mar 19 2015 | Amazon Technologies, Inc. | Uninterrupted playback of video streams using lower quality cached files |
11336928, | Sep 24 2015 | Amazon Technologies, Inc | Predictive caching of identical starting sequences in content |
7647417, | Mar 15 2006 | NetApp, Inc. | Object cacheability with ICAP |
8042185, | Sep 27 2007 | NetApp, Inc. | Anti-virus blade |
8090920, | Jul 06 2004 | Panasonic Corporation | Recording medium, and information processing device and information processing method for the recording medium |
8521892, | Feb 29 2008 | Red Hat, Inc.; Red Hat, Inc | Method and apparatus for controlling web page advertisement through incentives and restrictions |
8578028, | Jan 06 2011 | International Business Machines Corporation | Techniques for provisioning cloud computing environment resources based on social media analysis |
8892631, | Apr 09 2009 | International Business Machines Corporation | System and method of optimizing digital media processing in a carrier grade web portal environment |
8996711, | Feb 29 2008 | Red Hat, Inc. | Controlling web page advertisement through incentives and restrictions |
9215269, | Aug 23 2012 | Amazon Technologies, Inc | Predictive caching for content |
9326046, | Mar 19 2015 | Amazon Technologies, Inc | Uninterrupted playback of video streams using lower quality cached files |
9444861, | Aug 23 2012 | Amazon Technologies, Inc. | Predictive caching for content |
9544388, | May 09 2014 | Amazon Technologies, Inc | Client-side predictive caching for content |
9614884, | Apr 09 2009 | International Business Machines Corporation | System and method of optimizing digital media processing in a carrier grade web portal environment |
9819978, | Mar 19 2015 | Amazon Technologies, Inc. | Uninterrupted playback of video streams using lower quality cached files |
9998512, | Apr 09 2009 | International Business Machines Corporation | System and method of optimizing digital media processing in a carrier grade web portal environment |
Patent | Priority | Assignee | Title |
6195696, | Oct 01 1998 | GOOGLE LLC | Systems, methods and computer program products for assigning, generating and delivering content to intranet users |
6240447, | Oct 11 1996 | RAKUTEN, INC | Method for reducing perceived delay between a time data is requested and a time data is available for display |
6587113, | Jun 09 1999 | RPX Corporation | Texture caching with change of update rules at line end |
6654807, | Feb 10 1998 | MOUNT SHASTA ACQUISITION LLC; Level 3 Communications, LLC | Internet content delivery network |
6675214, | May 13 1998 | PALO ALTO NETWORKS, INC | Method and apparatus for efficient storage and retrieval of objects in and from an object storage device |
6678793, | Sep 27 2000 | International Business Machines Corporation; IBM Corporation | User-based selective cache content replacement technique |
6732237, | Aug 29 2000 | Oracle International Corporation | Multi-tier caching system |
6751665, | Oct 18 2002 | ALACRITECH, INC | Providing window updates from a computer to a network interface device |
6757708, | Mar 03 2000 | International Business Machines Corporation | Caching dynamic content |
6801525, | Jul 11 2000 | Lucent Technologies Inc.; Lucent Technologies, INC | Internet protocol packet router |
6931496, | Apr 09 2002 | VIA Technologies, Inc. | Data-maintenance method of distributed shared memory system |
6968329, | Sep 26 2001 | Syniverse Technologies, LLC | Event-driven and logic-based data transformation |
7016865, | Apr 14 2000 | Deluxe Corporation | Personalization format converter system and method |
7139973, | Nov 20 2000 | Cisco Technology, Inc. | Dynamic information object cache approach useful in a vocabulary retrieval system |
7194506, | Dec 21 2000 | Open Text SA ULC | Method and system for cache management of locale-sensitive content |
20020002452, | |||
20020082858, | |||
20020083132, | |||
20020083183, | |||
20020161908, | |||
20030004882, | |||
20030065890, | |||
20030135411, | |||
20030191801, | |||
20030212863, | |||
20030236857, | |||
20040049598, | |||
20040054779, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 26 2002 | NetApp, Inc. | (assignment on the face of the patent) | / | |||
Aug 26 2002 | GOEL, ATUL | Network Appliance, Inc | CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE ADDRESS FILED 08 26 02, RECORDED ON REEL 013237 FRAME 0139 ASSIGNOR HEREBY CONFIRMS THE ENTIRE INTEREST | 013615 | /0516 | |
Aug 26 2002 | GOEL, ATUL | Network Appliance, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 013237 | /0139 | |
Mar 10 2008 | Network Appliance, Inc | NetApp, Inc | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 022468 | /0717 |
Date | Maintenance Fee Events |
Jul 14 2009 | ASPN: Payor Number Assigned. |
Jul 14 2009 | RMPN: Payer Number De-assigned. |
Jan 21 2013 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Jan 23 2017 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Sep 30 2020 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Jul 21 2012 | 4 years fee payment window open |
Jan 21 2013 | 6 months grace period start (w surcharge) |
Jul 21 2013 | patent expiry (for year 4) |
Jul 21 2015 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jul 21 2016 | 8 years fee payment window open |
Jan 21 2017 | 6 months grace period start (w surcharge) |
Jul 21 2017 | patent expiry (for year 8) |
Jul 21 2019 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jul 21 2020 | 12 years fee payment window open |
Jan 21 2021 | 6 months grace period start (w surcharge) |
Jul 21 2021 | patent expiry (for year 12) |
Jul 21 2023 | 2 years to revive unintentionally abandoned end. (for year 12) |