SYSTEM, METHOD AND PROGRAM FOR ORDERED ANTICIPATORY CACHING OP LINKED
FILES IN A CLIENT/SERVER NETWORK
Field of the Invention
This invention relates to information transfer over networks of computational devices, and more particularly to ordered anticipatory caching of files linked to a file requested over a network.
Background of the Invention
The continuing proliferation of powerful, convenient computational devices has been accompanied by an increase in the use of networks connecting these devices. Computational devices include computers and other, often portable, devices such as wireless telephones, personal digital assistants, and automobile-based computers. Such portable computational devices are also sometimes termed "pervasive devices". "Computer", as used herein, may refer to any of such computational devices . The networks connecting computational devices may be "wired" networks, formed using "land lines" such as copper wire or fibre optic cable, wireless networks employing earth and/or satellite-based wireless transmission links, or combinations of wired and wireless network portions. Many networks are organised using a client/server architecture, in which "server" computational devices manage resources, such as files, peripheral devices or processing power, which may be requested by "client" computational devices. The client device is often operated by a user of the network. Computational devices not operated directly by a user, such as "proxy servers" which act on behalf of other machines, may act as either clients or servers.
Currently the most widely used network is the Internet, a global network of computational devices which communicate using a set of protocols called TCP/IP (transmission control protocol/Internet protocol) . An especially popular aspect of the Internet is the World Wide Web (WWW, or "web"), a collection of interlinked documents formatted in hypertext markup language (HTML). These documents, or "web pages", may incorporate text, graphics, audio, and/or video content, and may include convenient links to one another, often called "hyperlinks" or simply "links". Documents or files are requested by client computers through an application program called a web browser. The files are requested from server computers, or "web servers". The transmission of the files uses an additional Internet protocol called hypertext transfer protocol (HTTP) . A
user viewing a web page on a computer display screen typically "clicks" on a hyperlink using a pointing device, whereupon the linked document is then transferred to the user's computer and displayed.
The file corresponding to a link selected by a user may not appear instantaneously on the user's display screen, however. The linked file is typically stored on a storage device, such as a hard drive, associated with the web server. The file must therefore typically be retrieved from the storage device and then transferred over the Internet to the user's computer. The time taken for this retrieval and transfer can contribute to a noticeable (and sometimes quite annoying) delay between selection of a link and viewing of the associated file or document. Some web servers may provide partial relief of this problem by keeping a requested file in a cache memory for some period of time after the file is requested. A cache memory as used herein refers to a memory allowing rapid access to stored items. Typically, a cache memory is a portion of system memory allocated for short-term storage of frequently used information. Because a file in cache memory may be transmitted without incurring a delay associated with retrieving the file from a long-term storage device, a user requesting a file which has been requested recently (possibly by a different user) and remains in a cache may experience a shorter delay between selecting the corresponding link and viewing the file. Such caching of a file after its request may be implemented, for example, by proxy servers transmitting web documents between web servers and multiple users. Such proxy servers are often used, for example, by large Internet service providers, or ISPs. Although this type of caching may reduce delays associated with viewing certain documents, the probability that a file corresponding to a link selected by a particular user is in a cache memory is not necessarily high.
Another possible approach to lessening the delays associated with viewing of linked files is sometimes called "anticipatory caching" . In anticipatory caching, files linked to a requested file (via hyperlinks) are moved to the cache memory of the web server and/or downloaded to the client computer in advance of a request by the user for any of the linked files. A typical web page has multiple linked documents, however, and many of the corresponding links may not be selected by the viewer of the web page. Caching and/or downloading all of the linked documents can therefore waste time and unnecessarily tie up resources of the server and client computers (e.g., cache memory space) and of the network (transmission bandwidth). Unnecessary loading of the network's
transmission capability can in turn increase transmission delays across the network in general .
It would therefore be desirable to develop a system and method to reduce the delays associated with viewing of linked documents such as web pages using a network such as the Internet. The desired method would reduce the delay associated with viewing of a large fraction of selected links, while minimising waste of time and resources.
DISCLOSURE OF THE INVENTION
The problems outlined above are in large part addressed by a system and method for transferring link popularity information between a network server and a network client. The link popularity information characterises the popularity of the files linked to a requested file. The popularity may include the relative likelihood of a user request for each of the linked files . The link popularity information may be generated in various ways, which may include analysing a server log file, tracking "hits" on, or visits to, various web pages, or analysing information content such as "cookies" which may be sent to the server by clients. Transfer of the link popularity information from the server to the client may be done in various ways, also. For example, the information may be stored in a separate file which is sent to the client along with a requested file. The link popularity information could also be incorporated into a protocol, such as the HTTP protocol, used to send the requested file. Furthermore, the link popularity information could be included within the requested file itself, such as by inclusion within the code (e.g. HTML) used to define the links to the linked files.
The link popularity information may be used in selecting only the more popular linked files for anticipatory caching. The files corresponding to the links most likely to be selected by a user may be loaded into the cache memory of the server, and/or downloaded to the client computational device, in advance of any link selection by the user. This ordering of files for anticipatory caching based on their popularity may provide a high probability that the file corresponding to a selected link is already stored on a client computer at the time the link is selected. The time between selection of the link by a user and viewing of the corresponding file (sometimes referred to as "latency") may therefore be greatly shortened. Because the most popular linked files are cached first, and less popular files may not be selected for anticipatory caching at all, the time and resources needed to perform the caching may also be
reduced as compared to the case of anticipatory caching of all files linked to a requested file.
In an embodiment of the method, the link popularity information is transferred from the server to the client at approximately the same time that the requested file containing the links corresponding to the popularity information is transferred to the client. At least one of the linked files may then be transferred from the server to the client, where these linked files are transferred in an order determined using the link popularity information. In a preferred embodiment, this transfer of linked files is a download initiated by the client. Upon selection by a user of a link within the original requested document corresponding to one of the linked files, the linked file may then be displayed on the user's display screen (typically a display screen of the client computational device) .
An embodiment of a system for transferring information within a client/server network includes a network server adapted to provide a requested file to a network client, where the network server is further adapted to provide link popularity information associated with the requested file to the network client. The network server may include a processor, a cache memory, a storage device such as a hard drive, and a transmission medium connection. The requested file and additional files linked to the requested file are typically stored on the storage device. The system may further include the network client, where the client is adapted to download one or more of the additional linked files from the server in advance of a user request for any of the linked files. The order of downloading such linked files is determined using the link popularity information. The client is typically adapted to download the additional files using a web browser. The web browser may be adapted to allow a user to choose whether the anticipatory caching is enabled or not.
In addition to the method and system described above, a computer-usable carrier medium is contemplated herein. The carrier medium may be a storage medium, such as a magnetic or optical disk, a magnetic tape, or a memory. In addition, the carrier medium may be a transmission medium, such as a wire, cable, or wireless medium along which data or program instructions are transmitted, or a signal carrying the data or program instructions along such a wire, cable or wireless medium. The carrier medium may contain program instructions executable for carrying out embodiments of the methods described herein.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention will now be described, by way of example only, with reference to the accompanying drawings, in which:
Fig. 1 is a block diagram illustrating an embodiment of a system for transferring information within a client/server network;
Fig. 2 illustrates exemplary link popularity data for links within a file accessible using a client/server network;
Fig. 3 is a flow diagram illustrating an embodiment of a method which may be performed by a server for transferring information within a client/server network; and
Fig. 4 is a flow diagram illustrating an embodiment of a method which may be performed by a client for transferring information within a client/server network.
DETAILED DESCRIPTION OF THE INVENTION
Turning now to the drawings, Fig. 1 illustrates an embodiment of a system 10 for transferring information within a client/server network. System 10 includes a network server 12, a computational device which may be a web server. In the embodiment of Fig. 1, server 12 includes cache 14, processor 16 and storage device 18. Cache 14 is a collection of storage locations which are rapidly accessible by processor 16. In an embodiment, cache 14 may be a portion of the processor's system memory allocated for temporary information storage. Storage device, or storage medium, 18 may take many forms, such as volatile or nonvolatile memory, a magnetic disk such as a hard drive or floppy drive, an optical disk, and/or a magnetic tape. Such a storage device is sometimes referred to as a "direct access storage device" (DASD) . Typically, storage device 18 has a larger storage capacity than cache 14, but takes longer for processor 16 to access.
In the embodiment of Fig. 1, storage device 18 includes files 20 and program instructions 22, also referred to as program executables . The program instructions are typically stored as "executable files" in a storage device and loaded into memory during execution. Files 20 may include documents such as web pages suitable for viewing by a user of the
network, and may contain text, graphics, video and/or audio information. Such document files may be in the HTML language, or in other suitable languages such as Extensible Markup Language (XML) or Wireless Markup Language (WML) . Files 20 may further include data files suitable for use by computational devices in communicating across the network. For example, a file containing link popularity information for the additional files linked to a particular file may be included in files 20. "Files" as used herein may refer to any collection of data suitable for storing on a computational device or transferring within a network. Program instructions 22 may include various program instructions used to implement functions of network server 12, such as program instructions used to implement the methods described herein.
Transmission medium 24 may be used to connect network server 12 to other computational devices, such as proxy server 26 and/or client 28. Transmission medium 24 may include, for example, a wire, cable, wireless transmission path, or a combination -of these. Protocols used for transmission along transmission medium 24 may include TCP/IP, HTTP, and/or other suitable protocols such as Wireless Applications Protocol (WAP) .
System 10 may include client 28, linked to server 12 using transmission medium 24. In the embodiment of Fig. 1, client 28 includes cache 14, processor 16, and storage device 35. Storage device 35 is similar to storage device 18 described above, and may include files 39, a browser program 37 and program instructions 36. Although a browser program such as browser 37 is implemented using program instructions (or executables) such as instructions 36, browser 37 is shown separately in Fig. 1 to emphasise this feature of the client. Browser program 37 may be, for example, a web browser which allows a user to retrieve and view files on the WWW, or a program which performs a similar function on some other network. In some embodiments, client functions involved in implementation of the methods described herein are included in browser 37. Such functions, and/or other functions of the client computing device, may also be implemented in separate program instructions such as program instructions 36. Files 39 may include various files stored on the client computational device, including files downloaded from a network server such as server 12. Client 28 is typically associated with an output device 38 and input device 40, particularly in embodiments for which the client computational device is operated by a user of system 10. Output device 38 may include, for example, a display screen and/or a printer. Input device 40 may include, for example, a keyboard and/or a pointing device such as a mouse.
In some embodiments, system 10 may also include a proxy server 26. A proxy server as used herein refers to a computational device which acts as an intermediary between a client and a "real" server. The proxy server may appear as a server to the client, and as a client to the real server. Requests from the client may be responded to by the proxy server, or passed on to the real server. Files or other communications from the real server may be passed on to the client by the proxy server. A proxy server may be employed in system 10 for various reasons. For example, proxy servers may be used to provide specialised content and/or improved performance to a selected group of client computers. An example of this may be the use of caching by proxy servers to increase the speed of providing some files to subscribers to a particular ISP. Another use of a proxy server may be to filter the information being sent from the client to a real server, and/or in the opposite direction. For example, a proxy server may be used to implement a "firewall" limiting outside access to computers at a company or other institution. In the embodiment of Fig. 1, proxy server 26 includes cache 14, processor 16, and storage device 30. Storage device 30 may include files 32 and proxy server program instructions 34. Files 32 may include any files stored on the proxy server, such as files being transmitted between a server and a client. Program instructions 34 may include various program instructions used to implement functions of proxy server 26, such as interacting with client computers .
In Fig. 1 and any other block diagrams appearing herein, the blocks are intended to represent functionality rather than specific structure. Implementation of the represented system using circuitry and/or software could involve combination of multiple blocks into a single circuit or device, or combination of multiple circuits and/or devices to realise the function of a block. For example, cache 14 may be included on a semiconductor chip embodying processor 16. Furthermore, a system such as system 10 may include other elements not explicitly shown. For example, multiple servers, proxy servers, and/or clients not shown in Fig. 1 may be included in a system used for implementing the methods described herein. Further, the server, proxy server, and/or client computational devices may themselves include additional elements not shown.
An exemplary set of link popularity information 41 which may be used in implementing the methods described herein is shown in Fig. 2. Requested file 42 is a file which may be requested by a user (through, for example, a web browser) , and accordingly requested from a server by a client. In the data of Fig. 2, the requested file is an HTML file called
"corporationx.html". Linked files 44 are files which are linked to within the corresponding requested file 42. In the embodiment of Fig. 2, requested file "corporationx.html" includes links to seven linked files, including "products.html" and "address.html". In embodiments for which requested file 42 is an HTML file, links to linked files 44 may be included in requested file 42 using HTML formatting tags which define the links. Each of linked files 44 is associated with a corresponding popularity indicator 46. In the embodiment of Fig. 2, each of popularity indicators 46 is expressed as a probability that the corresponding linked file will be chosen by a user selecting a link within requested file 42. Since in this example the indicators for all of the linked files add up to one, forty percent of the link selections from "corporationx.html" are likely to be selections of the link corresponding to "products.html". Popularity indicators 46 may be expressed in various other forms, however. For example, a percentage of link selections which select the corresponding file could be stated for each file, or a percentage of users viewing the selected file who select the corresponding link could be used. As another alternative, an actual number of selections of the link over a certain time period could be given, or possibly a selection rate.
In view of link popularity information 41 of Fig. 2, the server containing requested file 42 and linked files 44 (typically on a storage device such as device 18 of Fig. 1) may, upon transferring requested file "corporationx.html" to a client, also load linked files "products.html" and "support.html" into a cache memory on the server, such as cache 14 of Fig. 1. If either of these linked files are subsequently requested by the client, they can therefore be transferred rapidly to the client, without a delay associated with reading the files from the storage device. Link popularity information 41 may also be made available to the client. In view of the link popularity information, the client may download, for example, linked files "products.html" and "support.html" from the server in advance of any selection by a user of a linked file. In this way, if either of these linked files are selected by the user, the file will already be on the client computer, and delay associated with transmission between the server and the client will be eliminated. Because link popularity information 41 indicates that about seventy percent of link selections are for either "products.html" or "support.html", caching and/or downloading of these two files should reduce latency for about seventy percent of link selections from "corporationx.html". This performance improvement may be achieved without the need to use additional time and resources by caching and/or downloading the other, less popular linked files .
Determination of popularity indicators 46 to form link popularity information 41 may be accomplished in various ways. For example, a tracking program may be used to tabulate the number of times particular files stored by a web server are accessed. Multiple implementations of such tracking programs, which typically provide additional information such as which specific users are accessing the files, are currently commercially available. In some embodiments "cookies", or identifying information which may be sent to a web server by a web browser, may be used for tracking selections of particular linked files. An alternative way of determining popularity of linked files is to analyse a server log, or a file containing a record of activity on the server. Web servers typically maintain such log files including each request made to the server. In another alternative embodiment, link popularity information may be estimated based on, for example, knowledge of the nature of the links. Such an estimate may in some embodiments be used as an initial or default setting of the link popularity information, which could be subsequently updated based upon, e.g. server statistics or log file analysis . Updates of the link popularity information may in some embodiments be performed regularly, possibly in conjunction with other updates and maintenance associated with the server.
Link popularity information such as information 41, which is shown in tabular form in Fig. 2, may be stored on a server and transferred to a client in multiple different ways. In one embodiment, information similar to that in Fig. 2 may be stored in a separate file, which may be stored on the server on a device such as storage device 18 of Fig. 1. Such a file, which in the embodiment of Fig. 2 might have a name such as "corporationx_linkpopularity.html", could be transferred to a client at the same time the requested file ("corporationx.html") is transferred. The file could include various programming languages, and any of multiple data structures (e.g., tabular structures or object-oriented structures) could be used to relate the information. Alternatively, link popularity information could be included within the requested file itself, such as within the formatting used to establish each link to a linked file. In such an embodiment, the client browser program is preferably configured to extract the link popularity information from the requested file. The link popularity information might also be included in a header to the requested file, a portion typically at the beginning of the file reserved for information regarding the file. As another example, the link popularity information might be sent from the server to the client using a communications protocol such as HTTP (e.g., in its header information). In some embodiments, implementation of methods for sending link popularity
σ Φ
Φ 3
0"*
0 o
•α a a pi 3 rr Φ a a rr
-*
P rt tr rt- Φ
ET
Φ H μ- rt
H- ø ft1
3
Φ ts o o ts ø rt p) tr Hi
Φ μ- rt li ^
Φ
■§ P
0 rr l-i
3 tr Pi
•<; rr μ- pi o
Ω ø
Ω φ to μ-
P rt
<Q if ) en
Φ l « ϋ oi pi rt rr φ a μ- μ-
H H
Φ φ
Ω
H 01 rt ts ϋ ø Φ O 0 in μ- ø ø •S ts Ω tr 01 Ω s H1 a ts O P P rr Tl s; μ- ^_, φ tr O Φ ii μ* Φ <! ts 3 Ω μ- ø 01 tn 1 o P tr li ts μ- μ- 01 ti a tr ø σ-i tr μ- μ- ø tr Φ μ- 0 φ O ø Φ ts
■g •9 Φ P Φ I-* Hi φ Φ μ- tl Ω 0 μ- li Pt Ω μ- H a μ- a — - ιp rt 0 tS ii Φ O < P ts rt ø t 0 ø ii Ω 0 tr Ω 0 r o rt ø Ω Φ tr <! X μ- ø ø" rt
Φ Φ μ* μ* Φ 03 tn g; Ω i μ- if μj μ- P μ* Φ a -> P IQ Φ ii μ- tn μ- P) Ω 0 μ* O P a ø H- 0 01 Φ Φ li rt 3 ø P ø Ω a ϋ ø >< rt 0 rt ø Φ L ø ii αi Φ ø a μ-
Ω 0 rt 0 H a μ- >-3 Φ ø o 3 ii iQ if μ- Ω μ- rt rt O o < ii •- μ- J^ ι-3 Ω H 0
Hi Φ Pt rt 0 rt tr a rt a rt ø μ- Φ tr P rt ø tr P 03 ø 3 μ-
H- φ H Hi rt Φ μ- Φ if H rt rt <! rr o — . tr o μ- φ rt P ø
H O a μ- ii rt rt Φ Hi O rt Φ rt ■<; tr a Φ 01 μ- iQ ip 3 0 ii Φ 0 H 0 tr a . ø Φ ts 0 3 μ- ii 0 P tn 0 3 IQ
Φ Hi ø O O if 0 Ω μ- 0 Φ ii μ- φ 3 μ- tr Pt ct o a φ 0 φ 0 X ii 0 in
• Hi Pt 3 φ P> ϋ ii tl ø Φ Ω rt if X O t3 μ- 0 P tn :> φ 0 μ- tr H tn μ- φ rt ff Ω 03 3 3 rt μ-1 0 rt s r rr 3 in P φ ø Hl 01 Ω o 3 P tn (Jl >Q μ- ø Φ μ- rt H a rt tr Φ tr rt 0 μ- ι^ Φ rt if P P μ* Φ rt 3 μ* K Ω ii H- to ø Ω Hi ø
Φ Φ if φ 3 Φ *- ø ti μ- ø ø rt H tJ- μ* P ø1 Ω O ω 01 a — Φ ø o 0 Pt ι-3 ts 01 Hi Φ ø O 03 **. μ- *- 01 rt ϋ in tr w μ- Ω o rt a μ- Φ Hi H φ K; 01 Φ Φ Φ I-1 μ- ii rt o ii ii 3 μ- μ- ø tn μ- φ μ-
Hi ø a P Ω 0 P ø μ- ø* a μ- ø IQ P o 0 rt O li Pt rt φ μ- rr a 0 μ- 01 rt μ- 3 Φ t) μ- rt μ* Ω μ- ii o μ- Ω P Φ o P Hi o
01 ø* Φ H μ- a tr μ- φ μ- 0 φ a
3 rt iQ rt a μ- ø 3 φ ø Φ ø ø 0 a a ø rt 0
OO φ 01 μ- w
Φ 3 H P in 0 Hi in ■ O tr if o IQ 01 Ω φ H iQ Ω tn ø
3 3 Φ ø φ φ a O ii 01 rt a 01 μ-
P ;* ø tr μ- 0 ii ø μ- o tl in Hi O M
■9 rt ω μ- ø rt ø μ- 01 a 3 Ω H if Φ rr ϋ tr rt 01 in ø μ* ø μ- rt P rr Hi ϋ 0 φ rt μ- ts 0 ts P if φ ø rt rr ø μ- Φ Pi μ- P Φ 03 O o a a tr μ-* ii P li ϋ - -^ Hi p rt Ω 0 < a 0 Hi Hi φ rr rt tl rt tn t) Hi μ- O Ω μ- φ rr μ- φ o μ- ii μ- μ- 3 rr
O < ø tr O O ii μ- ffi tr t Φ rt O tp 01 rt 5 Ω Φ ts H μ* li rt 1 ii P P rt tr o ø P rt 01 rt rt ø ø Φ ø rt o Hi li Φ 0 3 μ- Φ tl 0 <! o o φ 3 μ- μ- if Φ Ω IQ tr μ* μ- o μ- ^ if X 3 ø μ- & ø ts rt H 0 Φ Ω Φ li 3 in P o Φ P ø Φ o o μ- in Ω rt Ω in if ii Tl pi rt O IQ o tr 3 μ* in tr ø rr rt ø 0 ω if M μ* P ø o ϋ ø μ-
0 Ω Ω O ( l μ- rr £ rt a ts Φ μ- P Φ rt rt ■S μ- tn o Φ φ H μ- tn pt rt μ-* P H ø
3 Ul 0 μ- ø CO |Q μ- O H- o 0 ø ϋ o a * b1 if O O 0 ii Φ ø Ω ϋ • ø P Hi
Φ CO ø ts IP — • O μ- 3 H H 01 Φ Hi 1 rt Φ 0 0 μ- IQ Tl 0 H Pt 0 P ts P 01 ϋ O rt ø if • 0 Ω ø φ a 0 P 01 if 0 ^--. 01 P Φ ϋ rr o 0 3 H ϋ
Ω Ω pi rt > Pi 0 φ μ> a Hi Hi Hi 3 μ*
3 μ- Ω μ- μ- Ω
< P a o li r Φ rr
Hi I-1 a 3 Hi tr ts tn μ- K . 3 ø O μ- μ- g tl rr li μ- P μ* ii
0 ϋ in • rr 3 Φ μ- Φ φ Ω tr μ- μ- φ 3 a μ- P μ- φ 0 3 rt P
01 ø 0 O tr >-3 Hi a μ* μ* μ- rt μ- rt
Φ I-* 0 μ- tr o Hi O tl o 01 rt tn •S tr Φ Tl Pt μ* X μ- rr Φ μ-
0 - φ - ts o a Φ P rt Φ ø μ- m a H Ω μ- 0 rt tr μ- ii Φ μ- φ φ P Ω 0 I-1 01 μ- ii rt μ- O tr 01 Φ Φ i i 0 Tl μ- O ø ii Φ ø μ- Φ a O
0 a Ω ip μ< in 3 P ts Φ Φ if ø ø
Ω Hi H Φ tr Ω o ø tr r o μ- rt ϋ I-1 P t3 t rt rt μ- a t o φ Pt 3 o 3 H- H ii Hi ϋ P if Ω a O 03 0 € a Hi Ω P μ* μ-* φ ti ii μ- μ- ø ø P ■S tn 0 if tn ii in O μj ø O tr 0 Φ Φ μ- tr M rt H φ rr ø P rr ts rt rt O tr in Ω Φ o μ- Hi Ω Ω 0 0 tr Φ - O φ Φ ii if if o pi rt 0 rt < μ- a φ H μ- O tr a μ-
0 3 3 φ rt φ X 3 P o rt Φ a P ii P Φ φ μ- ts ø μ- μ- n
3 li 0 in Ω 3 o Φ a •<; *s 01 μ- 3 ϋ P 0 Hi rt i s P μ- rt Ω ø tr Ω
3 rr rt μ- tr l-1 tn 0 03 - rt Hi ø ø 3 if
Φ ϋ Φ μ* H P μ- 03 μ- μ- a μ-1 0 if φ μ- O ϋ μ- μ- Φ ts Hi rt ts μ- 3 μ- a rt Hi 0 O Ω ø ø rr o rr P H Φ rt ø μ- φ φ rt Ω ϋ H if Ό μ* O Φ ø O Hi rt Ω 3 if Pt li φ P ii tr H 3 tr r 03
X a tr ii ø 0 O Φ O pi ii φ ø 0 tp P Ω μ* Hi tr 3 H Φ <! a 03 Φ μ- P ii Φ 01
Ω Φ Φ rt H Hi a 3 rt O - Hi if μ* Pt μ- μ- Φ Φ μ- rt a a Φ if o Φ . rr rt Φ ϋ φ O ii H Φ tr
« 3 P Hi tn if Pt Ω ø Φ rt ϋ 0 Hi a ϋ K; μ- iQ n Hi φ tn 0 3 rt rt rt pi 0 rt ø tr 01 μ- o o φ μ- rt Φ ø rr Hi 3 Φ 0 ø Φ O IQ in rt Hi Φ pi tr Φ tr tr tr H* μ- H φ Ω ii in tr μ- P rr μ μ- 01 ^ a φ ϋ φ Hi μ- •<; - H μ- φ tr a 0 P 03 μ- μ- P H 3 if ø 0 S μ- ø Φ ø 03 S ϋ 0 μ-
< Hi H* rr 0 3 μ- I-* pi ø in Φ Φ rt Ω Φ ø ø rr φ P Φ rr Φ Hi μ- rt
O Φ Ω Ω μ- Ω H μ- μ* iQ pi ϋ f-* . if tp 01 μ- 0 O rr in o 01 μ- ω g tr, P
Φ li ϋ in Hi
- ø Φ 0 ø ø Φ rt μ- 01 tl μ- ø . μ- μ- Φ
Φ Ω « ø ø x; I-* tr rr li 0 rt μ- μ* rr o Ω Ω ø 01 ø tn tr - rt ■i tr μ- tr a if μ- ^ O 01 ø ø 0 φ rr Ω μ- μ- P Φ Φ 3 ø tp Φ Ω K; μ Pt Φ φ Φ rt Pt H IQ rt ϋ tr tl o 01 Hi ø ø φ 03 rr tr H a o a P a tr
3 tr rt Φ a 3 Hi Φ Φ ii 0 rt μ- pt Ω Φ rr 01 Ω
Φ φ tr in ti
Φ ø rt H a rt if ts Φ φ ϋ H* tn •> o Φ I-1 li Φ P Hi μ- o O Hi rt ≤ μ- ^ 03 ø 0 Ω Ω ø- μ- tr a pi ii ø Ω tr μ- 3 O rr tl P rt a ^ φ Hi ts Φ Ω
01 μ* if Φ 01 a
P a ø φ rt in a * μ- 0 * o ø rt • H1 Φ P ø Φ tr 03 μ- φ ii μ* rt < Φ H H 0 φ o ii rt Ω rt tr o Φ a φ ii 0 φ rt a e ts ø φ P) H* P a 0 Ω o Ω < Ω P tr Φ H P μ- μ- 3 P rt μ* Φ tr Hi 3 0 Pt tr Ω ø μ- O tr ø rt Φ Φ tr ii ii 3 3 P a P μ- μ- a
Φ Φ μ- O 0 Φ ø rt Hi ϋ μ* tr Ω Hi μ* μ-
Φ M- μ- ø • tn 0 H μ- 01 03 a ω P • P 0 a 0 or <! 3 Ω Φ rt μ- a Φ Φ Φ ø 03 rt rt μ- ø 3 03 3 ø ø 3 μ- ω Pt rr φ rt φ in Hi a rt tr tn 01 ø ii 01 Hi ø Ω P Ω ^-^ O rr
Φ K; P Φ 0 01 *- O tr μ- ii a tr μ- 0 Φ
Φ if ø μ* w rt \ Φ rt a ø μ- ø φ in Hi H1 Φ Ω tr o o rt P Hi 0 o μ* rt μ- in r a φ tr 0 Hi ϋ 01 Φ Ω Φ 01 Hi Hi 0 if a in a Φ Φ O r
H pi 03 O O Φ μ- 0 ø a O t H Hi li ii ø a X rr P
resources, however, particularly when it is not known whether the link corresponding to a requested linked file will actually be selected by a user. In some embodiments, therefore, the request from a client for a file may include information as to whether the file is user-requested or requested for anticipatory caching (in advance of any user request) . In such an embodiment, the server may be adapted to send link popularity information only for user-requested files .
Many variations of the method of Fig. 3 are possible and contemplated. For example, if a requested file contains no links, then steps related to linked files would naturally be omitted. The methods described herein are believed to reduce the time and resources spent in providing anticipatory caching as compared to methods in which all linked files are cached. There is some cost in time and resources even for these methods, however, and in some cases a user may wish to disable the ordered anticipatory caching. Disabling of the caching might also be preferred, for example, in situations for which there is a possibility of interference with other applications which may make use of caching. Such disabling could be implemented using, for example, an option in a browser program. In such an embodiment, a request from a client for a file could include, for example, instructions not to send link popularity information. Steps 50 and 54-58 could be omitted in such a case. Some of the steps could also be performed in a different order than shown in Fig.
3. For example, the order of steps 50 and 52 could be reversed in some embodiments, as well as the order of steps 54 and 56.
A flow diagram illustrating another embodiment of a method for transferring information within a client/server network is shown in Fig.
4. The method of Fig. 4 may be performed by a client such as client 28 of Fig. 1, or by a computer acting as a client, such as a proxy server. The method is typically implemented on a client using a browser program such as browser 37 of Fig. 1, but some or all of the method could also be implemented using other program instructions, such as instructions 36 or proxy server instructions 34. In the embodiment of Fig. 4, a file is requested from a server (or possibly a proxy server) in response to a user selection of the file (box 60) . As noted above in the description of Fig. 3 , such a request to the server may in some embodiments include notification that the request is in response to a user selection (as opposed to a request of a file for anticipatory caching) . The request may also include other information in some embodiments, such as a notification that link popularity information is not to be provided (in an embodiment for which ordered anticipatory caching is disabled by a user) . The
requested file is received from the server (box 62) , and in embodiments for which the ordered anticipatory caching is not disabled, link popularity information for any linked files within the requested file is received as well (box 64). The requested file is displayed on the user's display screen (box 66) .
Based on the received link popularity information, one or more of the linked files associated with the requested file may be requested from the server for anticipatory downloading (box 68) . The criteria used to determine how many linked files are requested from the server for downloading may be similar to those used in selecting files for caching on the server, discussed above in the description of Fig. 3. The requested linked files are then received from the server, and may be stored in a cache memory of the client computer (box 70) . If the next file requested by the user (e.g. by selecting a link) is one of these cached linked files ("yes" branch of decision box 72), the requested file may be rapidly displayed (box 74) . If the requested file is not one of the cached linked files ("no" branch of 72), the file is requested from the server (box 60). If the new requested file has linked files within it, steps 62 through 70 may be repeated for the new requested file. Multiple variations of the method of Fig. 4 are possible and contemplated. As in the case of the method of Fig. 3, for example, steps relating to linked files may be omitted in embodiments for which the requested file contains no links, or the ordered anticipatory caching is disabled by a user. Some of the steps in Fig. 4 could be performed in a different order without affecting the usefulness of the method. For example, the ordering of steps 62, 64 and 66 could be changed in some embodiments.
Program instructions, such as instructions 22, 34 or 36 of Fig. 1 or instructions within browser 37, implementing methods such as those illustrated by Figs . 3 and 4 may be transmitted over or stored on a carrier medium. The carrier medium may be a transmission medium such as a wire, cable, or wireless transmission link, or a signal travelling along such a wire, cable or link. The carrier medium may also be a storage medium, such as a volatile or non-volatile memory (e.g., read-only memory or random access memory) , a magnetic or optical disk, or a magnetic tape.