This application is related to U.S. patent application Ser. No. 10/882,792, “A System and Method of Accessing a Document Efficiently Through Multi-Tier Web Caching,” filed on Jun. 30, 2004, which is hereby incorporated by reference in its entirety.
This application is also related to U.S. patent application Ser. No. 11/418,649, “Systems and Methods of Efficiently Preloading Documents to Client Devices,” filed on May 5, 2006, which is hereby incorporated by reference in its entirety.
This application is also related to U.S. patent application Ser. No. 11/418,648, “Systems and Methods of Visually Representing Links Associated with Preloaded Content,” filed on May 5, 2006, which is hereby incorporated by reference in its entirety.
The present invention relates generally to the field of client-server computer network systems, and in particular, to systems and methods for client cache awareness.
In order to access a document (e.g., a webpage) on the Internet, a user must download the document from a web server to a client computer using a software application such as a web browser. Therefore, the document download speed is critical to the user's web browsing experience.
Multiple factors affect the document download speed. First, the bandwidth of the Internet network infrastructure is limited. Second, there are inherent inefficiencies with the hypertext transfer protocol (HTTP), the data transfer standard adopted by most web server providers and web browser developers. Third, many important recommendations published in the official HTTP protocol standard for improving document download speeds have not been implemented yet by manufacturers or developers or both.
Many proposals have been made to boost the document download speed at little or no extra cost. Among them, a client cache residing in the client computer in connection with a web browser is a popular choice. Documents such as static image files, frequently-visited webpages and the like, can be locally stored in a client cache (e.g., by storing them when the client first requests and downloads them, or by preloading them) so that the client's web browser does not have to download them from the document server or the website when it receives requests for any of the locally cached documents. From an on-line subscriber's perspective, client caching of frequently-visited documents and frequently-needed embedded content can reduce the average time required for rendering a document in the web browser.
There are certain issues with this approach. For instance, before uploading a document to the client cache, the document server or the website may not know in advance whether the document already resides in the client cache or not. Without such knowledge, the document server or the website may waste resources such as network bandwidth by preloading to the client cache a document for which an identical copy is already stored in the client cache.
It would therefore be desirable to provide systems and methods that address the problems identified above, and thereby improve the web browsing experience of many users.
According to a first aspect of the present invention, before preloading a document to a client device, a server computer gets a client cache map associated with the client device. The client cache map has a matching entry for each document cached by the client device's cache. The server computer first checks if the document to be preloaded is already in the client device's cache by checking the client cache map. If the client cache map indicates that the document is cached, the server computer then checks whether the cached document's content is still fresh. As a result, the server computer preloads the document to the client device if the document is not cached or if the cached document's content is stale. In some embodiments, the client cache map includes a Bloom filter.
According to a second aspect of the present invention, a client device calculates a current false positive probability for a client cache map associated with the client device. Next, the client device compares the current false positive probability against a threshold, e.g., a target false positive probability. If the current false positive probability is higher than the target false positive probability, the client cache map is deemed as no longer valid. The client device, accordingly, re-generates the client cache map using documents currently cached by the client device. This re-generated client cache map is then sent to a server computer as a representation of the documents currently cached by the client device at predetermined moments. In some embodiments, the client cache map includes a Bloom filter.
According to a third aspect of the present invention, when a server computer is concerned with the authenticity of a client device, it queries the client device using a list of fingerprints, including test fingerprints that do not correspond to any document stored at the client device. If the query result associated with at least one test fingerprint is incorrect, the server computer denies the client device access to the server computer. Otherwise, if query results associated with both fingerprints of documents stored at the client device and the test fingerprints are correct, the server computer enables the client device to access the server computer. In some embodiments, the server computer verifies fingerprints of documents stored at the client device using a Bloom filter.
For a better understanding of the nature and embodiments of the invention, reference should be made to the Description of Embodiments below, in conjunction with the following drawings in which like reference numerals refer to corresponding parts throughout the figures.
Like reference numerals refer to corresponding parts throughout the several views of the drawings.
The client assistant 106 (or a respective client 102) has communication channels with the client application 104, the client cache 108, the client cache map 109, and a remote cache server 121 residing at the document server 120, respectively. The client assistant 106 and the remote cache server 121 are procedures or modules that facilitate the process of quickly serving a document download request by a user at the client 102. The client 102 (sometimes herein called the “client device” or “client computer”) may be any computer or similar device that is capable of receiving documents from and sending requests including document links to the document server 120. Examples include, without limitation, desktop computers, notebook computers, tablet computers, and mobile devices such as mobile phones and personal digital assistants, and set-top boxes.
In this embodiment, the client application 104 has no associated cache or does not use its associated cache. Rather, the client application 104 directs all user requests to the client assistant 106. In some other embodiments, the client application 104 uses its own cache to store documents. Upon receiving a user request for a document, the client application 104 searches its own cache to satisfy the user request. If the cache does not have the user-requested document, i.e., there is a cache miss event, the client application 104 then forwards the user request to the client assistant 106 for further assistance. While the following discussion assumes, for illustrative purposes, that the client application 104 is a web browser, the client application can, in fact, be any software application that uses a document identified by a network address such as a URL (universal resource locator). Similarly, the term “URL” means a network address or location of this document. In this context, the term “document” means virtually any document or content of any format including, but not limited to, text, image, audio, video, etc., that may be used by a web browser or other application programs. An advantage of the arrangement shown in
The document server 120 includes at least a remote cache server 121, an index archive 122, and an object archive 128. In some embodiments, the remote cache server 121, the index archive 122, and/or the object archive 128 are deployed over multiple computers to enable fast access to a large number of cached documents. For instance, the index archive 122 and the object archive 128 may be distributed over N servers, with a mapping function such as the “modulo N” function being used to determine which cached documents are stored in each of the N servers. N may be an integer greater than 1, e.g., an integer between 2 and 16,384. For convenience, the document server 120 is treated as though it were a single computer in this application. In reality, the document server 120, through its index archive 122 and object archive 128, manages a large number of documents that have been prefetched from various web hosts 132 over one or more communications networks 110 (e.g., the Internet, one or more other global networks, one or more local area networks, one or more metropolitan area networks, one or more wireless networks, or any combination thereof). The term “web host” refers to a source of documents (or more generally, a source of information) stored at network locations (e.g., URL's) associated with the web host. The term “web server” is sometimes used to mean the same thing as “web host.” In some other embodiments, when the document server 120 does not have a user-requested document, the document server 120 directly fetches the user-requested document from a respective web host in response to a corresponding user request from a client 102 and then serves the fetched document to the requesting client.
In some embodiments, the document server 120 includes a document fetcher 123, a user interest hinter 124, a server performance predictor 125, a DNS cache 126, a user ID server 127, and client cache maps 129. These components may co-exist on a single computer or may be distributed over multiple computers. As described below, each component is responsible for one or more predefined tasks associated with serving documents to a requesting client or preloading documents to a client before the client requests any of them. The remote cache server 121 coordinates with these components to satisfy document download requests from different clients 102.
In some embodiments, the remote cache server 121 provides a set of network addresses (e.g., URLs) and IP addresses of the associated web hosts 132 to the document fetcher 123. The set of network addresses identifies documents to be downloaded from the web hosts 132. The DNS cache 126 is used for resolving the IP address of a web host 132. The address records in the DNS cache 126 are updated by a third-party DNS server 134 to make sure that any address record in the DNS cache 126 is presumptively fresh and may be used by the document fetcher 123 for downloading documents. If no address record is found in the DNS cache 126, the remote cache server 121 may query the DNS server 134 directly for the IP address associated with a web host 132.
After receiving the set of network addresses and IP addresses, the document fetcher 123 issues requests to the respective web hosts 132 to fetch the documents requested by the remote cache server 121. For each fetched document, the remote cache server 121 conducts a few further processing procedures including, e.g., generating relevant entries in the index archive 122 and the object archive 128 for the prefetched document, and parsing the document to determine what document links and objects (e.g., images) are embedded in the document. To ensure the freshness of the document contents in the document server 120, the remote cache server 121 updates entries in the index archive 122 and the object archive 128 according to a predefined schedule. When the content of a cached document is found to have changed, the update operation uses the document fetcher 123 to fetch a current version of the document from its web host 132.
Whenever the remote cache server 121 receives a user request for a document, it identifies the requested document in the index archive 122 and the object archive 128. The requested document is then returned to the requesting client 102. To better serve the user, the remote cache server 121 attempts to predict what subsequent documents the user would like to see after viewing the currently requested document. To get such information, the remote cache server 121 sends an inquiry to the user interest hinter 124. The inquiry may include the URL fingerprint of the document-being-requested and the identity of the requesting user provided by the user ID server 127. The user interest hinter 124 then returns a list of document names or URL fingerprints to the remote cache server 121. The document names identify or refer to candidate documents the requesting user is most likely to request next, or in the near future. Different mechanisms may be employed by the user interest hinter 124 in generating the list of candidate document names.
For each member in the list of candidate document names, the remote cache server 121 identifies the corresponding candidate document, if any, in the object archive 128. In some embodiments, the remote cache server 121 does not transmit the candidate documents to the requesting client until after transmitting the requested document. In some other embodiments, the candidate documents and the requested document may be transmitted to the client computer simultaneously. For example, in some embodiments there are multiple communication channels of different priorities between the remote cache server 121 and the client assistant 106. One or more communication channels of higher priorities are used for transmitting the requested document and other communication channels of lower priorities are used for transmitting (preloading) the candidate documents.
The server performance predictor 125 is used for predicting the performance of the document server 120. When a user requests a document from a client 102, the request can be met by either the document server 120 or a web host 132 that hosts the requested document. Depending on the configuration of the network 110 and the web host 132, there is no guarantee that the document server 120 will always serve the requested document faster than the web host 132. Sometimes, the document server 120 is more efficient than the web host 132. In other cases, serving the document from the web host 132 may be more efficient. To better serve the requesting user, the server performance predictor 125 may, periodically or episodically, compare the speeds of serving a document to a requesting client from a web host and the document server. The comparison result is provided to the client assistant 106 as a reference. If a particular web host outperforms the document server, the client assistant 106 will forward document requests to that web host whenever it receives a request for a document hosted by the web host. The comparison results are dynamically updated to reflect the dynamic nature of the network. If the client 102 is not sure which source (the document server or a web host) is more efficient in serving the document, it can consult the server performance predictor 125 for the identity of the source that is predicted to be the fastest or most efficient source of the document.
In some embodiments, there is a dedicated connection between the client assistant 106 and the remote cache server 121. This dedicated connection helps to reduce the communication latency between the client assistant 106 and the remote cache server 121. In one embodiment, the dedicated connection comprises at least one control stream and multiple data streams in each direction. These data streams serve as the communication channels between the remote cache server 121 and the client assistant 106. The remote cache server 121 uploads documents, including the requested document and the candidate documents, to the client assistant 106 using these data streams.
The control stream may be used to allow the client assistant 106 and the remote cache server 121 to exchange control information or alter the priorities of the data streams. For example, the remote cache server 121 initially transmits a candidate document to the client assistant 106 using a low priority data stream. After receiving an actual request for the candidate document, the remote cache server 121 can elevate the priority of the data stream using the control stream in order to serve the user request more promptly.
In the distributed system 100, the document server 120 serves as a proxy of multiple web hosts. It prefetches a large number of documents from many web hosts 132 and saves them in its index archive 122 and object archive 128. The index archive 122 maintains a mapping between a URL fingerprint in the URL fingerprint table 211 and a content fingerprint in the content fingerprint table 213. Each content fingerprint has associated caching information including, e.g., parameters indicating the freshness of the corresponding document content. In some embodiments, the set of freshness parameters includes an expiration date, a last modification date, and an entity tag, etc. The freshness parameters may also include one or more HTTP response header fields of a cached document. An entity tag is a unique string identifying one version of an entity, e.g., an HTML document, associated with a particular resource. The object archive 128 maps a content fingerprint in table 215 to a copy of the document content 217. In some embodiments, tables 211, 213 and 215 are small enough to reside in the main memory of one or more document servers. In other embodiments, the document contents 217 are stored in one or more secondary storage devices 220, e.g., one or more hard disk drives.
In some embodiments, as shown in
To check whether an object “b” is a member of the set, the hash functions 230 determine another four bit positions H1(b), H2(b), H3(b), and H4(b). If any of the bit positions stores 0, the object “b” is not in the set. Otherwise (i.e., if the values stored in all of the determined positions is equal to 1), it is assumed that the object “b” is in the set although there is a certain probability that the object “b” is not actually in the set, also known as “false positive”. The “false positive” probability can be reduced by increasing the size M of the bit vector 240 and the number of hash functions 230. On the other hand, the “false positive” probability increases as more objects are added to the set.
In some embodiments, a client cache having a capacity of 1 GB can be represented by a 122 KB Bloom filter having four hash functions with a false positive probability of less than one percent. For instance, if the document server decides not to upload each of 100 documents to a client based on the document server's local copy of the client cache map, on average at least 99 of those decisions will be correct. When the document server makes an incorrect decision based on the client cache map, the primary consequence is that, in the event that the client 102 requires a document that was not uploaded by the document server, the client assistant 106 or client application 104 will need to retrieve the document from the document server 120 or from the document's associated web host 132. This may increase the waiting period for a user to view the document in the web browser.
Since the document server 120 often serves multiple clients at the same time, it keeps a copy of client cache map for each individual client in its client cache maps 129. In some embodiments, the client cache maps 129 take the form of a table 250. Each entry of the table 250 has at least three elements, including a client ID, an expiration timestamp (TS), and a client cache map (e.g., a Bloom filter). The client ID uniquely identifies a client connected to the document server 120. The expiration timestamp indicates the life expectancy of the client cache map. As noted above, when more objects are inserted into a set, the “false positive” probability of a Bloom filter increases. The expiration timestamp can be used to curb the “false positive” probability. For example, when an entry is generated in the table 250 for a client, an expiration timestamp is attached to the entry. The document server 120 invalidates or deletes a respective client cache map when the current time is equal to or later than the expiration timestamp of the respective client cache map.
In some other embodiments, the expiration timestamp is replaced by a counter that is used to count the number of objects inserted into the client cache map. When the number of objects reaches a predetermined threshold, the document server replaces it's copy of the client cache map in table 250 with a new copy of the client cache map obtained from the client associated with the client cache map (as identified by the client ID in table 250). Accordingly, the objects associated with the old client cache map, but not with the new client cache map, are eliminated from the document server 120. A new “false positive” probability can be determined for the new client cache map and inserted into the corresponding entry in the table client cache maps 129.
Generally, the document server 120 does not keep track of documents in a client 102's client cache 108. Rather, the document server 120 receives a copy of the client cache map 109 from the client 102 through the connection between the client 102 and the document server 120. According to some embodiments, the client 102 scans the client cache 108 and generates a new client cache map corresponding to the documents currently in the client cache 108. The client cache map is transmitted to the document server 120, e.g., through a low-priority data stream. In some embodiments, this transmission occurs at the beginning of a new session between the client 102 and the document server 120. After receiving the client cache map (301), the document server 120 stores the map in its client cache maps 129, e.g., by generating a new entry in the table 250 (305). This completes the process of document upload preparation and the document server 120 is ready to upload documents to the client 102.
Subsequently, the document server 120 identifies a document to be uploaded to the client 102 (307). There are multiple reasons that a document server may decide to upload a document to a client. For example, the document server may receive a document download request submitted by a user at the client. In this case, the document server attempts to identify the requested document in its index archive and object archive. If the requested document is not found in the index archive and the object archive, the document server fetches the requested document from a web host. In some other embodiments, the document server may upload a document to a client even without a user request for the document. For instance, the document server may identify and preload a set of candidate documents based on tips generated by the user interest hinter.
But as noted above, a copy of the document to be uploaded, e.g., an old version of a web page identified by a URL, may already reside in the client cache. To avoid wasting resources, the document server first searches the corresponding client cache map for the document to be uploaded (309). There are two possible search results. First, the document has no matching entry in the client cache map (311, no). For example, at least one bit corresponding to the document in the Bloom filter is not set (e.g., equal to 0). In this case, the document is not in the client cache. Accordingly, the document server retrieves the identified document from the index and object archives (315).
In some embodiments, this retrieval further triggers the document fetcher 123 to download the document from a web host, e.g., if the document is not found in the archives or the copy in the archives are no longer servable. Next, the document server uploads the identified document to the client (317). In addition, the document server updates the client cache map (i.e., the local copy of the client cache map in the document server) to reflect the existence of the newly uploaded document in the client cache (318). Note that this update operation (318) may happen before, after or in parallel to the document upload operation (317).
The second possible search result is that an entry matching the document is found in the client cache map (311, yes). For example, all bits corresponding to the document in the Bloom filter are set (e.g., equal to 1). This indicates that there may be a copy of the document in the client cache. In one embodiment, the document server assumes that there is no need to upload another copy to the client even if the search result turns out to be a false positive. The consequences and resolution of a false positive are described above. If the client application 104 or the client assistant 106 subsequently find out that the document is not in the client cache 108 or, that the document is in the client cache 108 but the document's content is no longer fresh, a new document download request is submitted by the client to the document server or a web host for the current version of the requested document.
In some embodiments, when operation 307 occurs in response to the document server receiving a request for a document from a client, operations 309 and 311 are skipped, and the processing moves directly from 307 to 311. In these embodiments, the client cache map is searched by the document server only when performing document preloads.
In another embodiment (as shown in
As shown in
By assigning an expiration timestamp to the client cache map, the aforementioned approach treats all cached documents in a straightforward, uniform manner. In contrast,
In some embodiments, a download request includes a set of request headers. Some of the request headers specify a requesting client's requirement as to the freshness of a response, typically a requested document. For example, the “max-age” cache-control directive of the HTTP/1.1 standard indicates that the client is willing to accept a response whose age is no greater than the time in seconds specified by the “max-age” cache-control directive. Similarly, the “min-fresh” cache-control directive indicates that the client is willing to accept a response whose freshness lifetime is no less than its current age plus the time in seconds specified by the “min-fresh” cache-control directive. In other words, the client wants a response that will still be fresh for at least the specified number of seconds.
From analyzing the request headers of the past requests, the document server infers a set of freshness requirements for a document to be uploaded (501). The set of freshness requirements indicates the level of freshness required by the client. In one embodiment, the set of freshness requirements is comprised of the minimum values of the freshness-related headers in a download request. In another embodiment, the set of freshness requirements takes the average values of the freshness-related headers in a download request.
Next, the document server compares the document identified in the client cache map against the set of freshness requirements (503). For example, the document server applies the set of freshness requirements to the cached document. If the cached document meets all the freshness requirements (505, yes), it is presumed to be fresh and therefore there is no need to upload a new version of the document to the client 102. Otherwise, e.g., if at least one of the requirements is not met, the document server provides a new version of the document to the client 102.
In some embodiments, the set of freshness requirements includes a requirement as to the type of client application that renders the document. For example, the freshness requirements specify that the value of the HTTP request header “user-agent” be “Firefox.” A cached document configured for display by the IE browser cannot be served in response to a request that specifies FireFox as the user-agent. This is because different web browsers may have different display requirements. A document that is configured for display (or rendering) by one type of web browser may not work for another one. One skilled in the art will appreciate that other requirements about the validity of a cached document can be implemented in a similar fashion.
As noted above, the client cache 108 has limited space (e.g., 1 GB). To make room for new documents, the client cache 108 implements a cache replacement policy, e.g., by randomly eliminating existing cache entries and/or retiring least-recently used cache entries at a predefined rate. Ideally, the removal of a document from the client cache 108 triggers a removal of a corresponding entry from the client cache map 109 to keep the two entities always in synch. But the Bloom filter does not support such a removal operation, because any bit in the Bloom filter may be mapped to multiple documents. Therefore, as time goes by, the Bloom filter-based cache map may include more and more outdated entries, whose associated documents have already been removed from the client cache. More outdated entries in the Bloom filter increases the false positive probability of the cache map. In some embodiments, a target false positive probability is established for the Bloom filter-based client cache map. When its false positive probability exceeds the target, the client cache map is re-generated to be in synch with the current document contents in the client cache.
The false positive probability of a Bloom filter can be defined as:
Pfalse
where k is the number of hash functions, n is the number of objects inserted into the Bloom filter, and m is the number of bits in the bit vector. The client or document server may select or generate an appropriate Bloom filter, with values of the three parameters k, n, and m that have been selected to meet a target false positive probability. For a fixed number of hash functions, a large cache (measured by the number of documents in the cache) requires a large bit vector to meet the target false positive probability and a small cache only needs a relatively small bit vector. The downside of a large bit vector is that it consumes more network bandwidth during transmission and also occupies more memory space in the document server. In some embodiments, the client 102 selects or generates a Bloom filter, from among a predefined set of Bloom Filters or a predefined range of Bloom filters, that has the smallest cache map size (m) that is consistent with a given target false positive probability, so as to minimize network bandwidth used for transmission of the cache map and to minimize memory space (in both the client and document server) used to store the cache map.
If the current false positive probability is higher than the target one (603, yes), the client 102 determines a new vector size for the client cache map based on the threshold (605). This new vector size depends on the current client cache size and possibly also takes into account its growth rate. The size is selected such that the resultant cache map is predicted to be valid for a predetermined period of time (e.g., the duration of a typical session). Based on the newly selected vector size, the client 102 generates a new client cache map for the current client cache (607). Next, the new client cache map is sent to the document server to replace the old one (609). As noted above, the size of the client cache map may be selected to be as small as possible while still meeting the target false positive probability so as to minimize its associated computational cost (including transmission and storage). As mentioned above, the document server may request a new cache map from a client (see, e.g., the retrieve operation 403 of
In some embodiments, the client cache map received by the document server is stored in the document server's memory for efficiency. The document server, periodically or not, eliminates those client cache maps associated with terminated network sessions from its memory so as to leave free space for hosting new client cache maps or for other purposes. If the document server temporarily runs out of memory space for a client cache map, it may inform the client to submit document download requests directly to various web hosts.
In other embodiments, the client 102 does not update its cache map 109 whenever a new document is inserted into the client cache 108. Instead, the client 102 re-generates the entire cache map when predefined conditions are met (e.g., decision 603 of
Since the Bloom filter-based client cache map reflects the browsing activities by a particular client, it can be used as a tool for client authentication.
Next, the document server selects a fingerprint from the list. The selected fingerprint may be a valid fingerprint or a test fingerprint (703). The document server then queries the client using the selected fingerprint (705) and receives an answer to the query (707). In some embodiments, the document server removes the selected fingerprint from the list to improve the reliability of the authentication result (708). Depending on the type of fingerprint, there are four possible answers:
Note that if the selected fingerprint is a valid fingerprint, the client's answer indicating that it has no matching entry in the client cache is not necessarily an incorrect answer. This is because that the client may have retired the cache entry corresponding to the actual fingerprint according to its cache replacement policy. In practice, the document server may treat such an answer as a correct answer.
Referring again to
On the other hand, even if the client's answer is correct this time (709, yes), there is no guarantee that the client communicating with the document server is the client corresponding to a respective client cache map stored by the document server. Rather, the document server checks if a sufficient number of tests have been conducted against the client. If not (713, no), the document server continues the authentication process by selecting another fingerprint in the list, and repeats the above described process until the client's authenticity is confirmed by enough tests. In this case, the document server validates the client's cookie (715) and the client is allowed to use the cookie to continue its communication with the document server.
Although
Although some of various drawings illustrate a number of logical stages in a particular order, stages which are not order dependent may be reordered and other stages may be combined or broken out. While some reordering or other groupings are specifically mentioned, others will be obvious to those of ordinary skill in the art and so do not present an exhaustive list of alternatives. Moreover, it should be recognized that the stages could be implemented in hardware, firmware, software or any combination thereof.
The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings.
Number | Name | Date | Kind |
---|---|---|---|
4953106 | Gansner et al. | Aug 1990 | A |
5450535 | North | Sep 1995 | A |
5559984 | Nakano et al. | Sep 1996 | A |
5727129 | Barrett et al. | Mar 1998 | A |
5748954 | Mauldin | May 1998 | A |
5752241 | Cohen | May 1998 | A |
5802292 | Mogul | Sep 1998 | A |
5832494 | Egger et al. | Nov 1998 | A |
5835905 | Pirolli et al. | Nov 1998 | A |
5848407 | Ishikawa et al. | Dec 1998 | A |
5867661 | Bittinger et al. | Feb 1999 | A |
5878223 | Becker et al. | Mar 1999 | A |
5946697 | Shen | Aug 1999 | A |
5978791 | Farber et al. | Nov 1999 | A |
5978847 | Kisor et al. | Nov 1999 | A |
6003030 | Kenner et al. | Dec 1999 | A |
6014678 | Inoue et al. | Jan 2000 | A |
6023726 | Saksena | Feb 2000 | A |
6029175 | Chow et al. | Feb 2000 | A |
6055569 | O'Brien et al. | Apr 2000 | A |
6067565 | Horvitz | May 2000 | A |
6085193 | Malkin et al. | Jul 2000 | A |
6085226 | Horvitz | Jul 2000 | A |
6088707 | Bates et al. | Jul 2000 | A |
6098064 | Pirolli et al. | Aug 2000 | A |
6108703 | Leighton et al. | Aug 2000 | A |
6128644 | Nozaki | Oct 2000 | A |
6128701 | Malcolm et al. | Oct 2000 | A |
6134551 | Aucsmith | Oct 2000 | A |
6134583 | Herriot | Oct 2000 | A |
6167438 | Yates et al. | Dec 2000 | A |
6170013 | Murata | Jan 2001 | B1 |
6178461 | Chan et al. | Jan 2001 | B1 |
6182122 | Berstis | Jan 2001 | B1 |
6182133 | Horvitz | Jan 2001 | B1 |
6195622 | Altschuler et al. | Feb 2001 | B1 |
6205481 | Heddaya et al. | Mar 2001 | B1 |
6230168 | Unger et al. | May 2001 | B1 |
6272534 | Guha | Aug 2001 | B1 |
6282542 | Carneal et al. | Aug 2001 | B1 |
6285999 | Page | Sep 2001 | B1 |
6292880 | Mattis et al. | Sep 2001 | B1 |
6317777 | Skarbo et al. | Nov 2001 | B1 |
6338066 | Martin et al. | Jan 2002 | B1 |
6341311 | Smith et al. | Jan 2002 | B1 |
6405252 | Gupta et al. | Jun 2002 | B1 |
6421726 | Kenner et al. | Jul 2002 | B1 |
6442549 | Schneider | Aug 2002 | B1 |
6484143 | Swildens et al. | Nov 2002 | B1 |
6493702 | Adar et al. | Dec 2002 | B1 |
6502125 | Kenner et al. | Dec 2002 | B1 |
6516320 | Odom et al. | Feb 2003 | B1 |
6526479 | Rosenzweig | Feb 2003 | B2 |
6532520 | Dean et al. | Mar 2003 | B1 |
6542964 | Scharber | Apr 2003 | B1 |
6553411 | Dias et al. | Apr 2003 | B1 |
6578113 | Krishnamurthy et al. | Jun 2003 | B2 |
6581090 | Lindbo et al. | Jun 2003 | B1 |
6584498 | Nguyen | Jun 2003 | B2 |
6611908 | Lentz et al. | Aug 2003 | B2 |
6625643 | Colby et al. | Sep 2003 | B1 |
6631451 | Glance et al. | Oct 2003 | B2 |
6638314 | Meyerzon et al. | Oct 2003 | B1 |
6647421 | Logue et al. | Nov 2003 | B1 |
6665726 | Leighton et al. | Dec 2003 | B1 |
6701316 | Li et al. | Mar 2004 | B1 |
6725214 | Garcia-Chiesa | Apr 2004 | B2 |
6742033 | Smith et al. | May 2004 | B1 |
6744452 | McBrearty et al. | Jun 2004 | B1 |
6745295 | Rodriguez | Jun 2004 | B2 |
6757733 | Gupta | Jun 2004 | B2 |
6766313 | Kromann | Jul 2004 | B1 |
6766352 | McBrearty et al. | Jul 2004 | B1 |
6766422 | Beyda | Jul 2004 | B2 |
6772225 | Jennings, III et al. | Aug 2004 | B1 |
6782393 | Balabanovic et al. | Aug 2004 | B1 |
6813690 | Lango et al. | Nov 2004 | B1 |
6853391 | Bates et al. | Feb 2005 | B2 |
6883135 | Obata et al. | Apr 2005 | B1 |
6912591 | Lash | Jun 2005 | B2 |
6973457 | Bastawala et al. | Dec 2005 | B1 |
7003566 | Codella et al. | Feb 2006 | B2 |
7035921 | Baker | Apr 2006 | B1 |
7051111 | Scullin | May 2006 | B1 |
7095949 | Okada | Aug 2006 | B2 |
7100123 | Todd et al. | Aug 2006 | B1 |
7130872 | de Bonet | Oct 2006 | B2 |
7130890 | Kumar et al. | Oct 2006 | B1 |
7155475 | Agnoli et al. | Dec 2006 | B2 |
7185001 | Burdick et al. | Feb 2007 | B1 |
7228350 | Hong et al. | Jun 2007 | B2 |
7249053 | Wohlers et al. | Jul 2007 | B2 |
7328401 | Obata et al. | Feb 2008 | B2 |
7343397 | Kochanski | Mar 2008 | B2 |
7398271 | Borkovsky et al. | Jul 2008 | B1 |
7415536 | Nakazawa | Aug 2008 | B2 |
7426576 | Banga et al. | Sep 2008 | B1 |
7437364 | Fredricksen et al. | Oct 2008 | B1 |
7437409 | Danieli | Oct 2008 | B2 |
7437725 | Chang et al. | Oct 2008 | B1 |
7461155 | Reisman | Dec 2008 | B2 |
7523181 | Swildens et al. | Apr 2009 | B2 |
7548908 | Fu et al. | Jun 2009 | B2 |
7565425 | Van Vleet et al. | Jul 2009 | B2 |
7627628 | King et al. | Dec 2009 | B2 |
7676576 | Kommula | Mar 2010 | B1 |
7725602 | Liu et al. | May 2010 | B2 |
7761594 | Mowat | Jul 2010 | B1 |
7836044 | Kamvar et al. | Nov 2010 | B2 |
8010670 | Singh et al. | Aug 2011 | B2 |
20010020248 | Banga et al. | Sep 2001 | A1 |
20010033557 | Amalfitano | Oct 2001 | A1 |
20010050875 | Kahn et al. | Dec 2001 | A1 |
20020002618 | Vange | Jan 2002 | A1 |
20020004813 | Agrawal et al. | Jan 2002 | A1 |
20020007404 | Vange et al. | Jan 2002 | A1 |
20020007413 | Garcia-Luna-Aceves et al. | Jan 2002 | A1 |
20020016786 | Pitkow et al. | Feb 2002 | A1 |
20020023159 | Vange et al. | Feb 2002 | A1 |
20020031102 | Wiedeman et al. | Mar 2002 | A1 |
20020048269 | Hong et al. | Apr 2002 | A1 |
20020078087 | Stone | Jun 2002 | A1 |
20020078371 | Heilig et al. | Jun 2002 | A1 |
20020082811 | Honjas et al. | Jun 2002 | A1 |
20020097261 | Gottfurcht et al. | Jul 2002 | A1 |
20020107935 | Lowery et al. | Aug 2002 | A1 |
20020143892 | Mogul | Oct 2002 | A1 |
20020143984 | Hudson Michel | Oct 2002 | A1 |
20020156864 | Kniest | Oct 2002 | A1 |
20020156980 | Rodriguez | Oct 2002 | A1 |
20020161860 | Godlin et al. | Oct 2002 | A1 |
20020184340 | Srivastava et al. | Dec 2002 | A1 |
20020188665 | Lash | Dec 2002 | A1 |
20020191610 | Baek et al. | Dec 2002 | A1 |
20020198883 | Nishizawa et al. | Dec 2002 | A1 |
20020198961 | Krishnamurthy et al. | Dec 2002 | A1 |
20030005152 | Diwan et al. | Jan 2003 | A1 |
20030023813 | Malcolm | Jan 2003 | A1 |
20030046343 | Krishnamurthy et al. | Mar 2003 | A1 |
20030065743 | Jenny et al. | Apr 2003 | A1 |
20030079027 | Slocombe et al. | Apr 2003 | A1 |
20030079041 | Parrella et al. | Apr 2003 | A1 |
20030084159 | Blewett | May 2003 | A1 |
20030086098 | Sesek et al. | May 2003 | A1 |
20030101234 | McBrearty et al. | May 2003 | A1 |
20030158913 | Agnoli et al. | Aug 2003 | A1 |
20030161611 | Okada | Aug 2003 | A1 |
20030167257 | de Bonet | Sep 2003 | A1 |
20030172075 | Reisman | Sep 2003 | A1 |
20030172183 | Anderson et al. | Sep 2003 | A1 |
20030212779 | Boyter et al. | Nov 2003 | A1 |
20030217173 | Butt et al. | Nov 2003 | A1 |
20040039798 | Hotz et al. | Feb 2004 | A1 |
20040049598 | Tucker et al. | Mar 2004 | A1 |
20040064577 | Dahlin et al. | Apr 2004 | A1 |
20040073707 | Dillon | Apr 2004 | A1 |
20040078453 | Bhogal et al. | Apr 2004 | A1 |
20040078487 | Cernohous et al. | Apr 2004 | A1 |
20040107296 | Donker et al. | Jun 2004 | A1 |
20040139282 | Yoshioka et al. | Jul 2004 | A1 |
20040205149 | Dillon et al. | Oct 2004 | A1 |
20040205165 | Melamed et al. | Oct 2004 | A1 |
20040215665 | Edgar et al. | Oct 2004 | A1 |
20040225644 | Squillante et al. | Nov 2004 | A1 |
20040230747 | Ims et al. | Nov 2004 | A1 |
20040237044 | Travieso et al. | Nov 2004 | A1 |
20040239681 | Robotham et al. | Dec 2004 | A1 |
20040249971 | Klinker | Dec 2004 | A1 |
20040250119 | Shelest et al. | Dec 2004 | A1 |
20040260466 | Ichihara et al. | Dec 2004 | A1 |
20040262051 | Carro | Dec 2004 | A1 |
20050033803 | Vleet et al. | Feb 2005 | A1 |
20050038787 | Cheung et al. | Feb 2005 | A1 |
20050138176 | Singh et al. | Jun 2005 | A1 |
20050138604 | Harrison | Jun 2005 | A1 |
20050165778 | Obata et al. | Jul 2005 | A1 |
20050165829 | Varasano | Jul 2005 | A1 |
20050198224 | Kobayashi et al. | Sep 2005 | A1 |
20050198327 | Iwamura et al. | Sep 2005 | A1 |
20050198386 | Accapadi et al. | Sep 2005 | A1 |
20050204064 | Ruiz | Sep 2005 | A1 |
20050246347 | Kobayashi | Nov 2005 | A1 |
20050278222 | Nortrup | Dec 2005 | A1 |
20050278417 | Fremantle et al. | Dec 2005 | A1 |
20060047804 | Fredricksen et al. | Mar 2006 | A1 |
20060085601 | Woffinden et al. | Apr 2006 | A1 |
20060089978 | Lee et al. | Apr 2006 | A1 |
20060143568 | Milener et al. | Jun 2006 | A1 |
20060156387 | Eriksen | Jul 2006 | A1 |
20060167862 | Reisman | Jul 2006 | A1 |
20060168348 | Casalaina | Jul 2006 | A1 |
20060179123 | Smith | Aug 2006 | A1 |
20060253612 | Cheshire | Nov 2006 | A1 |
20060271642 | Stavrakos et al. | Nov 2006 | A1 |
20060294223 | Glasgow et al. | Dec 2006 | A1 |
20060294311 | Fu et al. | Dec 2006 | A1 |
20070022102 | Saxena | Jan 2007 | A1 |
20070174774 | Lerman et al. | Jul 2007 | A1 |
20070189708 | Lerman et al. | Aug 2007 | A1 |
20070214052 | Kao | Sep 2007 | A1 |
20070250841 | Scahill et al. | Oct 2007 | A1 |
20070294480 | Moser | Dec 2007 | A1 |
20080010365 | Schneider | Jan 2008 | A1 |
20080140626 | Wilson | Jun 2008 | A1 |
20080195819 | Dumont | Aug 2008 | A1 |
20080222363 | Khemani et al. | Sep 2008 | A1 |
20080229017 | Plamondon | Sep 2008 | A1 |
20090049388 | Taib et al. | Feb 2009 | A1 |
20090119286 | Reisman | May 2009 | A1 |
20090276407 | Van Vleet et al. | Nov 2009 | A1 |
20100257236 | Agnoli et al. | Oct 2010 | A1 |
20110125871 | Subramanian et al. | May 2011 | A1 |
20110264731 | Knowles et al. | Oct 2011 | A1 |
20120185565 | Subramanian et al. | Jul 2012 | A1 |
Number | Date | Country |
---|---|---|
1182589 | Feb 2002 | EP |
2317723 | Apr 1998 | GB |
WO 0155897 | Aug 2001 | WO |
WO 02100117 | Dec 2002 | WO |
WO 2005006129 | Jan 2005 | WO |
Entry |
---|
Bruck, J., et al., “Weighted Bloom Filter,” Information Theory, 2006 IEEE, Jul. 1, 2006 pp. 2304-2308. |
Gong, X., et al., “Bloom filter-based XML Packets Filtering for Millions of Path Queries,” Proceedings of the 21st International Conference on Data Engineering (ICDE 2005), 12 pages. |
International Search Report and Written Opinion for International Application No. PCT/US2008/054167, mailed Jul. 2, 2008. |
International Search Report and Written Opinion for International Application No. PCT/US2008/088047, mailed Feb. 23, 2009. |
Office Action dated Feb. 3, 2009 for related U.S. Appl. No. 11/675,601. |
Office Action dated Feb. 25, 2009 for related U.S. Appl. No. 11/418,648. |
Office Action dated Mar. 5, 2009, for related U.S. Appl. No. 11/418,649. |
Bestavros, A., et al., “Server-initiated Document Dissemination for the WWW,” IEEE Data Engineering Bulletin, 19(3):3-11, Sep. 1996, pp. 1-8. |
Cao, P., et al., “A Study of Integrated Prefetching and Caching Strategies,” Proceeding of 1995 ACM SIGMETRICS, Jun. 1995, pp. 171-182. |
Curewitz, K.M., et al., “Practical Prefetching via Data Compression,” Proceedings of the 1993 ACM Conf. on Management of Data (SIGMOD), Washington DC, May 1993, pp. 257-266. |
Fan, L., et al., “Web Prefetching Between Low-Bandwidth Clients and Proxies: Potential and Performance,” Proceedings of the ACM SIGMET-RICS Conf., May 1999, pp. 178-187. |
Griffioen, J., et al., “Reducing File System Latency Using a Predictive Approach,” Proceedings of 1994 USENIX Summer Conf., Jun. 1994, pp. 197-207. |
Gwertzman, J.S., et al., “The Case for Geographical Push-Caching,” Proceedings on the 1995 Workshop on Hot Operating Systems, 1995, 5 pages. |
Kimbrel, T., et al., “Integrated Parallel Prefetching and Caching,” Proceedings of the 1996 ACM SIGMETRICS Int'l Conf. on Measurement and Modeling of Computer Systems, 1996, pp. 262-263. |
Kroeger, T.M., et al., Digital's Web Proxy Traces, ftp://ftp.digital.com/pub/DEC/traces/proxy/webtraces.html, Dec. 1996. |
Markatos, E.P., et al., “A Top-10 Approach to Prefetching on the Web,” Technical Report No. 173, ICS-Forth, Heraklion, Crete, Greece, Aug. 1996, pp. 1-15. |
Padmanabhan, V.N., et al., “Using Predictive Prefetching to Improve World Wide Web Latency,” ACM SIGCOMM Computer Communication Review, Jul. 1996, 15 pages. |
Palmer, M., et al., “Fido: A Cache That Learns to Fetch,” Proceedings of the 17th Int'l Conf. on Very Large Data Bases, Barcelona, Spain, Sep. 1999, pp. 255-264. |
Patterson, R.H., et al., “Informed Prefetching and Caching,” Proceedings of the 15th ACM Symposium on Operating Systems Principles, Dec. 1995, pp. 79-95. |
Schilit, B.N., et al., “TeleWeb: Loosely Connected Access to the World Wide Web,” 5th Int'l World Wide Web Conference, Paris, France, May 6-10, 1996. |
Tait, C.D., et al., “Detection and Exploitation of File Working Sets,” Proceedings of the 11th Int'l Conf. on Distributed Computing Systems, May 1991, pp. 1-19. |
Vitter, J.S., et al., “Optimal Prefetching via Data Compression,” Journal of the ACM, vol. 43, Sep. 1996, pp. 771-793. |
Williams, S., et al., “Removal Policies in Network Caches for World-Wide Web Documents,” Proceedings of ACM SIGCOMM '96 Conf., Aug. 1996, pp. 293-305. |
Cohen, Proactive Caching of DNS Records: Addressing a Performance Bottleneck, SAINT, Jan. 2001, 10 pgs. |
Arocena Gustavo O. et al., “Applications of a Web Query Language,” Computer Networks and ISDN Systems; vol. 29, No. 8-13, Aug. 12, 1997, 15 pages. |
Banga Gaurav et al., “Optimistic Deltas for WWW Latency Reduction,” 1997 USENIX Technical Conference, pp. 1-15. |
Botafogo Rodrigo A. et al., “Structural Analysis of Hypertext: Identifying Hierarchies and Userful Metrix,” ACM Transactions on Information Systems, vol. 10, No. 2, Apr. 1992, pp. 142-180. |
Boyle Craig et al., “To Link or not to link: An empirical comparison of hypertext linking strategies,” ACM SIGDOC' 92; 1992; pp. 221-231. |
Carriere Jeromy et al., “WebQuery: Searching and Visualizing the Web through Connectivity,” Proceedings of the 6th International World Wide Web Conference; 1997; 14 pages. |
Chan Mun Choon et al., “Cache-based Compaction: A New Technique for Optimizing Web Transfer,” IEEE, 1999, 9 pages. |
Craswell Nick et al., “Effective Site Finding using Link Anchor Information,” ACM 2001, Sep. 2001, pp. 250-257. |
Doreian Patrick, “A Measure of Standing for Citation Networks within a Wider Environment,” Information Processing and Management, vol. 30, No. 1, 1994, pp. 21-31. |
Doreian Patrick, “Measuring the Relative Standing of Disciplinary Journals,” Information Processing and Management, vol. 24, No. 1, 1988, pp. 45-56. |
Douglis Frederick et al., “Dynamic Suppression of Similarity in the Web: a Case for Deployable Detection Mechanisms,” IBM Research Report, Jul. 2002, 8 pages. |
Frisse Mark E., “Searching for Information in Hypertext Medical Handbook,” Communications of the ACM, vol. 31, No. 7, Jul. 1998, pp. 880-886. |
Garfield Eugene, “Citation Analysis as a Tool in Journal Evaluation,” Essays of an Information Scientist, vol. 1, 1962-1973, pp. 527-544. |
Geller Nancy L., “On the Citation Influence Methodology of Pinski and Narin,” Information Processing and Management, vol. 14, 1978, pp. 93-95. |
Henzinger Monika R. et al., “Measuring Index Quality Using Random Walks on the Web.” Proceedings of the 8th International World Wide Web Conference, 1999, 35 pages. |
Hubbell Charles H., “An Input-Output Approach to Clique Identification Sociometry,” University of California Santa Barbara, 1965, pp. 377-399. |
International Search Report, PCT/US2005/022067, Jan. 10, 2006, 7 pages. |
Katz Leo, “A New Status Index Derived from Sociometric Analysis,” Psychometrika, vol. 18, No. 1, 1953, pp. 39-43. |
Kleinberg Jon M., “Authoritative Sources in a Hyperlinked Environment,” Journal of the ACM, vol. 46, No. 1, Sep. 1999, pp. 604-632. |
Luotonen Ari, “World-Wide Web Proxies,” Apr. 1994, pp. 1-8. |
Marchiori Massimo, “The Quest for Correct Information on the Web: Hyper Search Engines,” 1997, 18 pages. |
McBryan Oliver A, “GENVL and WWWW: Tools for Taming the Web,” Proceedings of the 1st International World Wide Web Conference, May 1994; pp. 1-10. |
Mizruchi Mark S et al., “Techniques for Disaggregating Centrality Scores in Social Networks,” Sociological Methodology, 1996, pp. 26-48. |
Mogul Jeffrey C. et al., “Delta Encoding in HTTP,” Network Working Group, Jan. 2002, pp. 1-49. |
Mogul Jeffrey C. et al., “Potential benefits of delta encoding and data compression for HTTP,” ACM, 1997, pp. 181-194. |
Pinski Gabriel et al., “Citation Influence for Journal Aggregates of Scientific Publications. Theory, with Application to the Literature of Physics,” Information Processing and Management, vol. 12, No. 5-A, 1976; pp. 297-312. |
Ramer Arthur, “Similarity, Probability and Database Organization,” IEEE, 1996; pp. 272-276. |
Rhea Sean C. et al., “Value-Based Web Caching,” Proceedings of the 12th International World Wide Web Conference, May 2003, pp. 1-10. |
Sakaguchi Tetsuo et al., “A Browsing Tool for Multi-lingual Documents for Users without Multi-lingual Fonts,” ACM, 1996; pp. 63-71. |
Wang Zheng et al., “Prefetching in World Wide Web,” IEEE, 1996; pp. 28-32. |