The present invention relates to a caching proxy server and more particularly relates to a caching proxy server for a peer-to-peer photosharing system.
With the proliferation of digital cameras, numerous online photosharing services have emerged and are becoming widely accepted by photo enthusiasts. The photosharing services are generally based on one of two architectures. The first is a serving architecture where a central server hosts digital images for a number of users and provides photosharing services by serving the digital images to a web browser of a user or guest. The second is a peer-to-peer (P2P) architecture, where a user creates and stores photo albums on the user's computer. The user's computer then operates as a web server to provide the photo albums to the web browser of another user or guest.
For various reasons, many P2P systems now employ a hybrid P2P architecture wherein a proxy server operates as a single point of entry for all of the peer nodes in the P2P system. Thus, when a guest node or another peer node requests a digital image from a peer node, the request is first provided to the proxy server, which in turn provides the request to the peer node. In a similar fashion, the response from the peer node is typically routed through the proxy server.
In order to more quickly respond to requests from guest nodes, a cache that stores recently requested objects such as digital images may be implemented in the proxy server. As a result, subsequent requests for a digital image stored in the cache may be served directly from the proxy server rather than from a peer node. However, one issue with caching proxy servers is that the cache has limited storage space and must therefore be managed. More specifically, when the cache becomes full, the proxy server must remove objects from the cache before caching newly requested objects.
In order to manage the cache, typical caching proxy servers use algorithms such as Least Recently Used (LRU), Largest File First (LFF), Least Frequently Used (LFU), and Greedy Dual-Size algorithms. However, these algorithms fail to accurately cache objects such as digital images based on the actual content of the object. For example, if a digital image stored in cache is a picture of a person snowboarding, typical caching algorithms only consider the number or frequency of requests for the digital image. They do not consider a number or frequency of requests for digital images or other objects related to snowboarding or the person who is snowboarding. As such, there is a need for an improved caching proxy server.
The present invention relates to a caching proxy server for a hybrid peer-to-peer (P2P) photosharing system. In general, the proxy server includes a cache for storing a number of previously requested digital images, a metadata database for storing metadata including a number of keywords associated with each of the digital images stored in the cache, and a metadata usage table for storing a number of “hits” for each of the keywords. When the used storage space in the cache reaches a predetermined limit, the proxy server examines the metadata usage table to determine a popularity of each of the keywords and removes digital images tagged with one or more of the least popular keywords until the used storage space in the cache decreases to a desirable level. As such, the proxy server ensures that digital images tagged with the most popular keywords remain in the proxy cache and are therefore available for subsequent requests.
In addition, the caching proxy server may pre-fetch digital images from peer nodes in the P2P photosharing system. More specifically, in one embodiment, the caching proxy server may pre-fetch digital images associated with one or more of the most popular keywords from the peer nodes. In another embodiment, the caching proxy server may receive a request for a digital asset associated with a first keyword. Based on past requests, the proxy server may determine that requests for digital images associated with a second keyword are frequently received temporally proximate to requests for digital images associated with the first keyword. As such, the proxy server may pre-fetch digital assets associated with the second keyword from the peer nodes. In yet another embodiment, the caching proxy server may pre-fetch digital assets based on the current date. For example, the caching proxy server may determine that digital images associated with the keyword “Christmas” are frequently requested from December 1st through January 10th. As such, the caching proxy server may pre-fetch digital images from the peer nodes if the current date is within the range of December 1st through January 10th.
The caching proxy server may also provide additional content to a guest node based on metadata, such as keywords, associated with a requested digital image. More specifically, the caching proxy server may obtain additional content, such as an advertisement, based on one or more keywords associated with the requested digital image. Thereafter, the caching proxy server may provide both the additional content and the requested digital image to the guest node. In one embodiment, the requested digital image may be modified to include the additional content above, below, on the sides, or within the original digital image. Alternatively, a web page on which the requested digital image is displayed may be modified to include the additional content.
Those skilled in the art will appreciate the scope of the present invention and realize additional aspects thereof after reading the following detailed description of the preferred embodiments in association with the accompanying drawing figures.
The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the invention, and together with the description serve to explain the principles of the invention.
The embodiments set forth below represent the necessary information to enable those skilled in the art to practice the invention and illustrate the best mode of practicing the invention. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the invention and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.
The present invention relates to a caching proxy server for a hybrid peer-to-peer (P2P) photosharing system. In general, the proxy server includes a cache storing a number of previously requested digital images, a metadata database storing metadata including a number of keywords associated with each of the digital images stored in the cache, and a metadata usage table storing a number of “hits” for each of the keywords. When the used storage space in the cache reaches a predetermined limit, the proxy server examines the metadata usage table to determine a popularity of each of the keywords and removes digital images tagged with one or more of the least popular keywords until the used storage space in the cache decreases to a desirable level. As such, the proxy server ensures that digital images tagged with the most popular keywords remain in the proxy cache and are therefore available for subsequent requests.
Although the description herein describes the present invention with respect to a hybrid peer-to-peer photosharing system, the present invention is equally applicable to any system where digital content is provided from a web server to a requesting node via a proxy server. Further, while the description herein focuses on digital images, the present invention is equally applicable to any digital asset, such as digital videos, digital audio, and the like.
In general, the system 10 operates to share digital images stored at the peer nodes 12 and 14 with the guest node 18. For example, when the user 20 at the peer node 12 desires to share digital images with the user 24 at the guest node 18, an invitation including a web link to the digital images is provided to the guest node 18. Thereafter, the user 24 may interact with the guest node 18 to activate the web link. In response, the guest node 18 generates a request for the digital images and sends the request to the proxy server 16. If the proxy server 16 has the requested digital images stored locally, the proxy server 16, in general, sends the requested digital images to the guest node 18. If the proxy server 16 does not have the requested digital images stored locally, the proxy server 16 requests the digital images from the peer node 12 and then sends the digital images to the guest node 18.
The peer nodes 12 and 14, which may also be referred to herein as web serving nodes, are personal computers, mobile terminals, Personal Digital Assistants (PDAs), or the like having access to the network 26. As illustrated, the peer node 12 includes peer software 28, optionally a web browser 30, and a content storage unit 32. It should be noted that the discussion herein of the peer node 12 is equally applicable to the peer node 14. The content storage unit 32 may be implemented in memory such as, but not limited to, Random Access Memory (RAM) or some other storage unit such as, but not limited to, a hard disk drive. The content storage unit 32 operates to store digital images such as digital images, digital videos, digital audio, or the like.
The proxy server 16, which may also be referred to as a central node, includes a peer manager 34, a request processor 36, and a cache manager 38, wherein each of these functions may be implemented in software, hardware, or a combination thereof. The peer manager 34 operates to manage connections with the peer nodes 12 and 14. For example, the peer nodes 12 and 14 may establish connections, such as socket connections, with the proxy server 16 upon connecting to the network 26. The peer manager 34 operates to store information identifying the connections with the peer nodes 12 and 14 which may thereafter be used to route requests to the peer nodes 12 and 14. For more information, the interested reader is directed to U.S. Patent Application Publication No. 2005/0229243, entitled METHOD AND SYSTEM FOR PROVIDING WEB BROWSING THROUGH A FIREWALL IN A PEER TO PEER NETWORK, filed on Mar. 31, 2004, currently pending, which is hereby incorporated by reference in its entirety.
As described in detail below, the request processor 36 operates to handle requests from the guest node 18, and the cache manager 38 operates to manage cache 40 based on the popularity of keywords associated with digital images stored in the cache 40.
The proxy server 16 also includes the cache 40, a metadata database 42, and a metadata usage table 44, each of which may be implemented in memory such as, but not limited to, RAM. As discussed below in detail, the proxy server 16 operates to store digital images from the peer nodes 12 and 14 in the cache 40. The proxy server 16 may store digital images in the cache 40 after they are requested by the guest node 18 and retrieved from the peer nodes 12 and 14. Additionally, the proxy server 16 may operate to pre-fetch digital images from the peer nodes 12 and 14 to store in the cache 40. Thereafter, subsequent requests for the digital images stored in the cache 40 may be served from the cache 40 rather than from the peer nodes 12 and 14.
The metadata database 42 operates to store metadata describing the digital images stored in the cache 40. Metadata may generally be defined as any information describing the digital images. According to the present invention, the metadata includes keywords applied to digital images by the users 20 or 22 or by users of an associated digital camera. For example, the keywords may be “Christmas,” “Christmas 2005,” “Kids Sporting Events,” “Vacation,” and the like. As described below, the metadata describing the digital images is either obtained from the peer nodes 12 and 14 or extracted from the digital images by the proxy server 16. For example, digital images stored in the Joint Photographic Experts Group (JPEG) format include Exchangeable Image Format (EXIF) headers including information such as keywords applied to the digital images, captions, date and time of capture, location of capture, flash setting, focal length, and the like.
As also discussed below, the metadata usage table 44 may store a number of “hits” for each of a number of keywords associated with the digital images stored in the cache 40. The metadata usage table 44 may also store time-stamps for the keywords indicating the last time that digital images tagged with the keywords were requested. In operation, each time a request is received by the proxy server 16 for a digital image, the proxy server 16 identifies the keywords used to tag the digital image by examining the metadata associated with the digital image. Once the keywords for the digital image are identified, the proxy server 16 increments “hit” counters associated with the keywords stored in the metadata usage table 44. Thereafter, when the proxy server 16 desires to remove digital images from the cache 40 due to, for example, reaching a predetermined storage limit, the proxy server 16 may examine the metadata usage table 44 to determine a popularity of each of the keywords and remove digital images associated with one or more of the least popular keywords from the cache 40. As a result, the digital images associated with the most popular keywords remain in the cache 40.
Optionally, the proxy server 16 may also include an additional content database 46. As discussed below, the proxy server 16 may add additional content such as advertisements to digital images provided to the guest node 18 based on the metadata for the digital images.
The guest node 18 may be a personal computer, mobile terminal, Personal Digital Assistant, or the like having access to the network 26 and including a web browser 48. In operation, the guest node 18, and more specifically the web browser 48, operates to request digital images, or photo album web pages, from one or more of the peer nodes 12 and 14 via the proxy server 16.
If the peer node 12 is available, the request processor 36 fetches the requested digital image from the peer node 12 (step 108). More specifically, the request processor 36 sends a request to the peer node 12 for the requested digital image. Upon receiving the request from the proxy server 16, the peer node 12 preferably obtains the metadata for the requested digital image from a local database or by extracting the metadata from the headers of the requested digital image file, and sends the digital image and the metadata for the digital image to the proxy server 16. For example, the peer node 12 may send a Hypertext Transfer Protocol (HTTP) response including the digital image in the body of the response and the metadata for the digital image in the headers of the response. Note that the metadata may still be stored in the headers of the requested digital image file. However, by providing the metadata to the proxy server 16 directly, the proxy server 16 does not have to spend additional processing time to extract the metadata from the requested digital image file. However, as an alternative, the peer node 12 may send the requested digital image to the proxy server 16, wherein the proxy server 16 extracts the metadata from the digital image file.
Upon receiving the response from the peer node 12, the request processor 36 obtains the metadata for the requested digital image (step 110). As discussed above, the metadata is preferably sent as part of the response, which may be an HTTP response. However, if the metadata for the requested digital image is not part of the response, the request processor 36 may obtain the metadata for the requested digital image by extracting the metadata from the headers of the digital image file.
The request processor 36 then stores the metadata, or a portion thereof, for the requested digital image in the metadata database 42 and stores the requested digital image in the cache 40 (step 112). In one embodiment, the request processor 36 may remove the metadata, or headers, from the requested digital image prior to storing the requested digital image in the cache 40. As a result, the requested digital image requires less storage space within the cache 40. Also, the request processor 36 may operate to normalize the keywords used to tag the requested digital image prior to storing the metadata for the requested digital image. For example, the request processor 36 may correct misspelled words, truncate words to remove endings such as “-ing,” change keywords that are in a short hand or slang form to their traditional form, such as changing “xmas” to “Christmas,” and the like. As a result, the information stored in the metadata usage table 44 may provide more accurate keyword hit counts. Alternatively, the keywords may be stored in their original form and normalized before recording keyword hits (see step 122). Note that while the term used herein is “keyword,” a keyword may be a word or a phrase including a number of words, characters, numbers, or the like.
Returning to step 102, if the requested digital image is stored in the cache 40, the request processor 36 sends a request for updates for the requested digital image to the peer node 12 (step 114). For example, the request processor 36 may send an HTTP “if-modified-since” message to the peer node 12, wherein the message includes a date that the requested digital image was last requested from the peer node 12 or a date that an update for the requested digital image was last requested from the peer node 12. In response, the peer node 12 determines whether the requested digital image or the metadata for the requested digital image has been modified since the last request from the proxy server 16. If not, the peer node 12 generates and sends a response to the proxy server 16 indicating that there are no updates for the requested digital image. If there are updates, a response including the updates is provided to the proxy server 16. If there are updates to only metadata for the requested digital image, the response may only include the portions of the metadata that have changed. Alternatively, the response may include all of the metadata for the requested digital image. If the requested digital image itself has changed, the response includes the requested digital image and the metadata or updates for the metadata for the requested digital image.
The request processor 36 then determines whether there are updates based on the response from the peer node 12 (step 116). If there are updates, the request processor 36 stores the updated version of the requested digital image in the cache 40 and/or the updated version of the metadata for the requested digital image in the metadata database 42 (step 118). At this point, whether there are updates or not, the request processor 36 obtains the metadata for the requested digital image (step 120). Note that if the metadata was just received from the peer node 12 in step 114, the request processor 36 may already have the metadata. Otherwise, the request processor 36 obtains the metadata for the requested digital image from the metadata database 42.
At this point, whether the requested digital image was stored in the cache 40 or retrieved from the peer node 12, the request processor 36 may record the keyword hits in the metadata usage table 44 (step 122). More specifically, the request processor 36 examines the metadata for the requested digital image to identify the keywords used to tag the requested digital image. Thereafter, the request processor 36 instructs the metadata usage table 44 to increment hit counters associated with the identified keywords. In addition, the request processor 36 may store a time stamp indicating the date and time of receiving the request for the requested digital image from the guest node 18 in association with the identified keywords.
After recording the keyword hits, the request processor 36 sends the requested digital image to the guest node 18 (step 124). In one embodiment, the request processor 36 may also provide the metadata, or a portion thereof, for the requested digital image to the guest node 18. More specifically, as an example, the digital image may be provided to the guest node in an HTTP response wherein the metadata for the requested digital image may be provided in the headers of the HTTP response. As a result, applications on the guest node 18, such as pornography filters, may analyze the metadata for the requested digital image without expending extra processing time to extract the metadata from the digital image file.
Note that the process of
Once the cache manager 38 has determined the popularity of the keywords, the cache manager 38 removes digital images tagged with one or more of the least popular keywords from the cache 40 until the used storage space of the cache 40 has decreased to a desired lower threshold (step 202). For example, the cache manager 38 may first remove digital images from cache that are only tagged with the least popular keyword. If more digital images need to be removed, the cache manager 38 may remove the digital images from the cache 40 that are only tagged with the two least popular keywords. The cache manager 38 may continue this process until the lower threshold is reached.
In this example, the cache manager 38 now proceeds to perform pre-fetching operations (steps 204-212). However, note that steps 204-212 are optional. To perform the pre-fetching operations, the cache manager 38 loops over the peer nodes 12 and 14 that are currently available or connected to the proxy server 16 (step 204). Thus, the cache manager 38 queries the peer node 12 for a list of digital images tagged with one of a desired set of keywords (step 206). The returned list may include an identifier of each of the digital images stored at the peer node 12 that are tagged with one or more of the desired set of keywords. In addition, the list may include the metadata, or a portion thereof, for each of the digital images. The list may include an identifier such as a file name and keywords for each of the digital images stored at the peer node 12 that are tagged with one or more of the set of desired keywords.
In one embodiment, the desired set of keywords may include any number of the most popular keywords determined in step 200. The desired set of keywords may include the two most popular keywords such that the cache manager 38 queries the peer node 12 for a list of digital images stored at the peer node 12 that are tagged with one or both of the two most popular keywords.
In another embodiment, the desired set of keywords may include one or more keywords selected by the proxy server 16 based on temporal proximity. For example, the proxy server 16 may receive a request for a digital image that is tagged with the keyword “dog.” The proxy server 16 may know from past experience that a request for a digital image tagged with the keyword “dog” is often followed by a request for a keyword tagged with the keyword “cat.” As such, the proxy server 16 may desire to pre-fetch digital images tagged with the keyword “cat.” As another example, the proxy server 16 may select one or more keywords based on a current date or time. For example, the proxy server 16 may know from past experience that digital images tagged with the keyword “Christmas” are frequently requested from December 1st until January 10th. As such, if the current date is in the range of January 4th through January 10th, the proxy server 16 may desire to pre-fetch digital images tagged with the keyword “Christmas” or “xmas.”
In yet another embodiment, the desired set of keywords may include one or more keywords selected by the proxy server 16 based on location. For example, if the proxy server 16 is located in Colorado, the proxy server 16 may monitor requests from guest nodes, such as the guest node 18, within Colorado to determine popular keywords among users in Colorado. For example, “snowboarding” may be identified by the proxy server 16 as a popular keyword among users in Colorado. As such, the proxy server 16 may desire to pre-fetch digital images tagged with the keyword “snowboarding.”
Upon receiving the list of digital images tagged with one or more of the desired set of keywords from the peer node 12, the cache manager 38 selects desired images from the list of digital images (step 208). In one embodiment, the cache manager 38 may automatically select all of the digital images in the list of digital images. In another embodiment, the cache manager 38 may select digital images from the list of digital images based on file size. For example, the cache manager 38 may select digital images from the list of digital images that have a file size below a predetermined limit. In yet another embodiment, the cache manager 38 may select digital images from the list of digital images based on the number of the desired set of keywords with which the digital images are tagged. For example, the cache manager 38 may select the digital images from the list of digital images that are tagged with at least two of the keywords from the set of desired keywords.
Once the desired digital images are selected, the cache manager 38 fetches the desired digital images from the peer node 12, stores the digital desired digital images in the cache 40, and stores the metadata for the desired digital images in the metadata database 42, thereby pre-fetching the desired digital images (step 210).
At this point, the cache manager 38 determines whether it has looped over all of the available peer nodes 12 and 14 (step 212). If not, steps 204-212 are repeated until the desired digital images are pre-fetched from all of the available peer nodes 12 and 14. Thereafter, the cache manager 38 enters a “sleep” or “idle” state until a triggering event restarts the process (step 214). Note that if the pre-fetching operations cause the used storage space in the cache 40 to exceed the predetermined limit, steps 200 and 202 may be repeated. Alternatively, the cache manager 38 may intelligently decide which digital images and how many digital images to pre-fetch from the peer nodes 12 and 14 such that the pre-fetching operations do not cause the used storage space in the cache 40 to exceed the predetermined limit.
Again, note that the operation of the cache manager 38 illustrated in
The cache manager 38 begins operation in response to some triggering event, such as reaching a predetermined storage limit in the cache 40. In response, the cache manager 38 examines the metadata usage table 44 to determine a popularity of the keywords used to tag the digital images stored in the cache 40 (step 300). Once the cache manager 38 has determined the popularity of the keywords, the cache manager 38 removes the digital images tagged with one or more of the most unpopular keywords from the cache 40 until the used storage space of the cache 40 has fallen to a desired lower threshold (step 302).
To perform the pre-fetching operations, the cache manager 38 loops over the peer nodes 12 and 14 that are currently available or connected to the proxy server 16 (step 304). Thus, the cache manager 38 queries the peer node 12 for a list of digital images tagged with one of a desired set of keywords (step 306). The returned list may include an identifier of each of the digital images stored at the peer node 12 that are tagged with one or more of the desired set of keywords. In addition, the list may include the metadata, or a portion thereof, for each of the digital images.
Upon receiving the list of digital images tagged with one or more of the desired set of keywords from the peer node 12, the cache manager 38 determines whether all of the available peer nodes 12 and 14 have been queried (step 308). If not, steps 304 and 306 are repeated for the rest of the available peer nodes.
The cache manager 38 then selects desired images from the lists of digital images from the peer nodes 12 and 14 (step 310). In one embodiment, the cache manager 38 may automatically select all of the digital images in the lists of digital images. In another embodiment, the cache manager 38 may select digital images from the lists of digital images based on file size. For example, the cache manager 38 may select digital images from the lists of digital images that have a file size below a predetermined limit. In yet another embodiment, the cache manager 38 may select digital images from the lists of digital images based on the number of the desired set of keywords with which the digital images are tagged. For example, the cache manager 38 may select the digital images from the lists of digital images that are tagged with at least two of the keywords from the set of desired keywords.
Once the desired digital images are selected, the cache manager 38 fetches the desired digital images from the peer nodes 12 and 14, stores the desired digital images in the cache 40, and stores the metadata for the desired digital images in the metadata database 42, thereby pre-fetching the desired digital images (step 312). The cache manager 38 then enters a “sleep” or “idle” state until a triggering event restarts the process (step 314).
Note that if the pre-fetching operations cause the used storage space in the cache 40 to exceed the predetermined limit, steps 300 and 302 may be repeated. Alternatively, the cache manager 38 may intelligently decide which digital images and how many digital images to pre-fetch from the peer nodes 12 and 14 such that the pre-fetching operations do not cause the used storage space in the cache 40 to exceed the predetermined limit.
Again, the operation of the cache manager 38 illustrated in
At this point, the operation of the request processor 36 diverges from the operation described with respect to
Once the additional content is obtained, the request processor 36 returns the requested digital image and the additional content to the guest node 18 (step 426). The additional content may be a textual or graphical advertisement either added to the digital image by modifying the digital image or added to a web page on which the digital image is displayed.
Those skilled in the art will recognize improvements and modifications to the preferred embodiments of the present invention. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.
Number | Name | Date | Kind |
---|---|---|---|
5414455 | Hooper et al. | May 1995 | A |
5915252 | Misheski et al. | Jun 1999 | A |
5918013 | Mighdoll et al. | Jun 1999 | A |
6073168 | Mighdoll et al. | Jun 2000 | A |
6292835 | Huang et al. | Sep 2001 | B1 |
6330606 | Logue et al. | Dec 2001 | B1 |
6349336 | Sit et al. | Feb 2002 | B1 |
6449657 | Stanbach, Jr. et al. | Sep 2002 | B2 |
6463508 | Wolf et al. | Oct 2002 | B1 |
6487538 | Gupta et al. | Nov 2002 | B1 |
6490615 | Dias et al. | Dec 2002 | B1 |
6553409 | Zhang et al. | Apr 2003 | B1 |
6564218 | Roth | May 2003 | B1 |
6571239 | Cole et al. | May 2003 | B1 |
6622168 | Datta | Sep 2003 | B1 |
6631369 | Meyerzon et al. | Oct 2003 | B1 |
6633850 | Gabbard et al. | Oct 2003 | B1 |
6646754 | Redd et al. | Nov 2003 | B1 |
6651141 | Adrangi | Nov 2003 | B2 |
6658463 | Dillon et al. | Dec 2003 | B1 |
6697850 | Saunders | Feb 2004 | B1 |
6754699 | Swildens et al. | Jun 2004 | B2 |
6757684 | Svendsen et al. | Jun 2004 | B2 |
6757705 | Pardikar et al. | Jun 2004 | B1 |
6859807 | Knight et al. | Feb 2005 | B1 |
6891635 | Dutta | May 2005 | B2 |
6917965 | Gupta et al. | Jul 2005 | B2 |
6925485 | Wang et al. | Aug 2005 | B1 |
6934735 | Emens et al. | Aug 2005 | B1 |
6944651 | Onyon et al. | Sep 2005 | B2 |
6954752 | Iyengar | Oct 2005 | B2 |
7027513 | Zhang et al. | Apr 2006 | B2 |
7039784 | Chen et al. | May 2006 | B1 |
7043644 | DeBruine | May 2006 | B2 |
7092699 | Hefter | Aug 2006 | B1 |
7181438 | Szabo | Feb 2007 | B1 |
7272645 | Chang et al. | Sep 2007 | B2 |
7587446 | Onyon et al. | Sep 2009 | B1 |
7698386 | Amidon et al. | Apr 2010 | B2 |
7719971 | Issa | May 2010 | B1 |
20010039520 | Nakade et al. | Nov 2001 | A1 |
20010052997 | Satake et al. | Dec 2001 | A1 |
20020023143 | Stephenson et al. | Feb 2002 | A1 |
20020023230 | Bolnick et al. | Feb 2002 | A1 |
20020046262 | Heilig et al. | Apr 2002 | A1 |
20020062384 | Tso | May 2002 | A1 |
20020065879 | Ambrose et al. | May 2002 | A1 |
20020078134 | Stone et al. | Jun 2002 | A1 |
20020103998 | DeBruine | Aug 2002 | A1 |
20020107934 | Lowery et al. | Aug 2002 | A1 |
20020109729 | Dutta | Aug 2002 | A1 |
20020133601 | Kennamer et al. | Sep 2002 | A1 |
20020138744 | Schleicher et al. | Sep 2002 | A1 |
20020178261 | Chang et al. | Nov 2002 | A1 |
20020194590 | Pong | Dec 2002 | A1 |
20030001903 | Duffy | Jan 2003 | A1 |
20030005035 | Rodgers | Jan 2003 | A1 |
20030009538 | Shah et al. | Jan 2003 | A1 |
20030018639 | Iyengar | Jan 2003 | A1 |
20030046586 | Bheemarasetti et al. | Mar 2003 | A1 |
20030050863 | Radwin | Mar 2003 | A1 |
20030061272 | Krishnamurthy et al. | Mar 2003 | A1 |
20030063770 | Svendsen et al. | Apr 2003 | A1 |
20030063771 | Morris et al. | Apr 2003 | A1 |
20030069968 | O'Neil et al. | Apr 2003 | A1 |
20030084162 | Johnson et al. | May 2003 | A1 |
20030105812 | Flowers, Jr. et al. | Jun 2003 | A1 |
20030112823 | Collins et al. | Jun 2003 | A1 |
20030154306 | Perry | Aug 2003 | A1 |
20030191832 | Satyavolu et al. | Oct 2003 | A1 |
20030195940 | Basu et al. | Oct 2003 | A1 |
20030225885 | Rochberger et al. | Dec 2003 | A1 |
20030236831 | Ortiz et al. | Dec 2003 | A1 |
20030236832 | McIntyre et al. | Dec 2003 | A1 |
20040003117 | McCoy et al. | Jan 2004 | A1 |
20040024828 | Miyagi et al. | Feb 2004 | A1 |
20040054860 | Dixit et al. | Mar 2004 | A1 |
20040064512 | Arora et al. | Apr 2004 | A1 |
20040064568 | Arora et al. | Apr 2004 | A1 |
20040064693 | Pabla et al. | Apr 2004 | A1 |
20040070678 | Toyama et al. | Apr 2004 | A1 |
20040088348 | Yeager et al. | May 2004 | A1 |
20040098447 | Verbeke et al. | May 2004 | A1 |
20040117258 | Kanbara | Jun 2004 | A1 |
20040139172 | Svendsen et al. | Jul 2004 | A1 |
20040139227 | Takeda | Jul 2004 | A1 |
20040148434 | Matsubara et al. | Jul 2004 | A1 |
20040162871 | Pabla et al. | Aug 2004 | A1 |
20040215523 | Wulff et al. | Oct 2004 | A1 |
20040215625 | Svendsen et al. | Oct 2004 | A1 |
20040215721 | Szeto et al. | Oct 2004 | A1 |
20050066063 | Grigorovitch et al. | Mar 2005 | A1 |
20050071496 | Singal et al. | Mar 2005 | A1 |
20050086386 | Shen et al. | Apr 2005 | A1 |
20050091220 | Klemow | Apr 2005 | A1 |
20050097085 | Shen et al. | May 2005 | A1 |
20050114711 | Hesselink et al. | May 2005 | A1 |
20050114757 | Sahota et al. | May 2005 | A1 |
20050138176 | Singh et al. | Jun 2005 | A1 |
20050147044 | Teodosiu et al. | Jul 2005 | A1 |
20050160167 | Cheng et al. | Jul 2005 | A1 |
20050171864 | Nakade et al. | Aug 2005 | A1 |
20050193083 | Han et al. | Sep 2005 | A1 |
20050198191 | Carlson et al. | Sep 2005 | A1 |
20050229243 | Svendsen et al. | Oct 2005 | A1 |
20050246634 | Ortwein et al. | Nov 2005 | A1 |
20050267973 | Carlson et al. | Dec 2005 | A1 |
20060004691 | Sifry | Jan 2006 | A1 |
20060010225 | Issa | Jan 2006 | A1 |
20060064716 | Sull et al. | Mar 2006 | A1 |
20060136551 | Amidon et al. | Jun 2006 | A1 |
20060173985 | Moore | Aug 2006 | A1 |
20060218275 | Labio et al. | Sep 2006 | A1 |
20060242238 | Issa | Oct 2006 | A1 |
20070064121 | Issa et al. | Mar 2007 | A1 |
20070067493 | Issa | Mar 2007 | A1 |
20070073878 | Issa | Mar 2007 | A1 |
20070078993 | Issa | Apr 2007 | A1 |
20070180075 | Chasman et al. | Aug 2007 | A1 |
20070208583 | Ward | Sep 2007 | A1 |
20070271380 | Chang et al. | Nov 2007 | A1 |
20080178234 | Eyal et al. | Jul 2008 | A1 |
20100169465 | Amidon et al. | Jul 2010 | A1 |
20100211677 | Issa | Aug 2010 | A1 |
Number | Date | Country |
---|---|---|
2003341150 | Dec 2003 | JP |
WO 2005099165 | Oct 2005 | WO |
WO 2006026193 | Mar 2006 | WO |
WO 2006055535 | May 2006 | WO |
Entry |
---|
CredoReference definitions, http://www.credoreference.com/entry/hmhighdef/cache. |
Parker, Jason, “An Easy Way to Share Digital Photos with Others,” ZDNet AnchorDesk Editorial Feature, Jun. 13, 2003, http://reviews-zdnet.com, p. 1. |
The Apache Software Foundation, http://www.apache.org/. |
Squid Web Proxy Cache, http://www.squid-cache.org/. |
Reuven M. Lerner, “At the Forge Aggregating with Atom,” (article), 2004, 7 pages, Linux Journal, vol. 2004, No. 127, 2004. |
Reuven M. Lerner, “At the Forge: Bloglines Web Services,” (article), 2005, 6 pages, Linux Journal, vol. 2005, No. 129, 2005. |
Reuven M. Lerner, “At the Forge Aggregating Syndication Feeds,” (article), 7 pages, 2004, Linux Journal, vol. 2004, No. 128, 2004. |
Reuven M. Lerner, “At the Forge Bloglines Web Services, Continued,” (article), 2005, 7 pages, Linux Journal, vol. 2005, No. 131, 2005. |
Reuven M. Lerner, “At the Forge Syndication with RSS,” (article), 2004, 9 pages, Linux Journal, vol. 2004, No. 126, 2004. |
Scott Raymond, “Broadcatching with BitTorrent,” (article), Dec. 16, 2003, 3 pages, http://web.archive.org/web/20040213093750/http://scottraymond.net/archive/4745. |
Sung-Ju Lee et al., “An Interactive Video Delivery and Caching System Using Video Summarization,” (article), Mar. 2002, pp. 424-435, Computer Communications, vol. 25, No. 4. |
No Author, Wikipedia—Broadcatching, (website), obtained Mar. 5, 2008, 3 pages, http://en.wikipedia.org/wiki/Broadcatching. |
Fielding, R. et al., “Hypertext Transfer Protocol—HTTP/1.1, ” Request for Comments (RFC) 2616, Internet Engineering Task Force (IETF) Network Working Group, Jun. 1999, http://tools.ietf.org/pdf/rfc2616.pdf, 114 pages. |