Abstract:
A system and method determines a data transfer rate from a server to a client as follows. A server transfers a test program or a reference to the test program to the client and the client executes the test program. The test program requests test data from the server, measures the elapsed time to obtain the test data, and calculates a transfer rate based on the length of the test data and the elapsed time. Either the client or the server selects data corresponding to the client request, to send to the client based on the calculated transfer rate. The system and method can be used in a WWW environment where the data is a web page and the test program is an applet.

Description:
BACKGROUND OF THE PRESENT INVENTION 
     The present invention relates generally to transfer of data from a server to a client via the internet or other communication medium and deals more particularly with a technique to determine the rate at which data can be transferred across the communication medium. 
     There are many communication mediums available today which interconnect clients to servers and many data formats for the communications. One example is the world wide web (WWW) with its web page data format. The WWW comprises a multitude of computer servers and an “internet” of communications lines and intermediary routers to connect the clients to the servers. The servers manage databases which contain the web pages. Each of the clients includes a “web browser” which is an interface to the user and the WWW. One common web browser is the Netscape Navigator (™) web browser licensed by Netscape Communications Corporation. The Netscape Navigator web browser is further described in “Hands on Netscape” by David Sachs, Prentice Hall, Upper Saddle River, N.J., 1996 ISBN013240284X. 
     Each web page has a “URL” address which comprises an access method/protocol designation such as hypertext transport protocol (HTTP) as a prefix, a server name, and the requested data as a suffix. The server name typically includes a “domain name” which is the name of a company, educational institution or other organization that owns the server. The request indicates a web page associated with the server. There are different ways that a client can obtain a web page. If the client knows the URL, the client can directly request the web page from the server. However, if the client only knows the server name, the client can address the server name and in response, the server will present the “home page” for the server. The home page (and other web pages) typically includes tags or “hot links” which reference other associated web pages. When the user selects a hot link, the web browser requests the respective web page from the corresponding server. In response to the request, the server returns an HTML page which typically includes text and may reference graphics, applets, audio files and video files. The client can then obtain the referenced graphics, applets, audio files and video files from the server(s) which manages them. 
     The rate at which a server can transfer a web page to a client is limited by several factors—the client&#39;s modem or other communication hardware, availability of the target server and any intermediary routers, and availability and throughput of the communication lines. In recent years there has been a large increase in the number of servers, web pages and “network traffic” on the WWW. While this has increased the amount of available information, this has slowed access to the web pages by congesting the servers, routers and communication lines. 
     While the text usually constitutes a small amount of data and can be transferred rapidly with even a modest transfer rate, the graphics, applets, audio files and video files may be lengthy and time consuming to transfer with a modest transfer rate. Existing web browsers permit the user to select a “no graphics” option. When selected, the web browser will not request (or display) any graphics referenced in an HTML that has been downloaded. This greatly reduces the download time for those web pages which reference complex graphics. However, the graphics may provide important information and hot links, and the data transfer rate may have been fast enough to provide the graphics to the client within a reasonable amount of time. 
     An IBM Web Browser Intelligence tool gives the user valuable information as to availability of web pages and the download time. The IBM Web Browser Intelligence tool automatically “pings” each server referenced by a hot link on a web page when the web page is initially loaded and displayed. If the server is in existence and is available to process the ping request, the server responds with a simple acknowledgment of its existence. The IBM Web Browser Intelligence tool also estimates the time required to fetch web pages managed by this server by measuring the time between the sending of the ping request and receipt of an acknowledgment from the server. (The actual fetch time will also depend on the length of data, graphics, applets, audio files and video files of the web page and the performance and availability of the server and web page storage medium for an actual data transfer). The IBM Web Browser Intelligence tool then indicates to the user which servers currently exist and the approximate fetch rate as follows. Red dots adjacent to a hot link indicate that the server is not currently available or very slow to respond. Yellow dots adjacent to a hot link indicate that the respective server is currently available but the fetch rate is slow. Green dots adjacent to a hot link indicate that the respective server is currently available and the fetch rate is fast. The IBM Web Browser Intelligence tool re-pings each server associated with each hot link at a user specified interval to update the availability status of every hot link. Despite the significant value of the IBM Web Browser Intelligence tool, improvements would be helpful to better estimate the download time. 
     It was also known for a server to ask a client user what is its “connectivity rate”. The user will respond either with its modem rate or an estimate based on knowledge of the communications hardware. The client modem rate is a maximum transfer rate to the client; the server, routers or communication lines may be slower. The actual transfer rate can also change with time as the usage of the communication line, server and routers changes. 
     A general object of the present invention is to attempt to provide a client, who has requested data, with at least a meaningful subset of that data in a usable form within a reasonable amount of time. 
     SUMMARY OF THE INVENTION 
     The invention resides in a system and method for determining a data transfer rate from a server to a client. A server transfers a test program or a reference to the test program to the client and the client executes the test program. The test program requests test data from the server, measures the elapsed time to obtain the test data, and calculates a transfer rate based on the length of the test data and the elapsed time. 
     According to one feature of the present invention, either the client or the server selects data corresponding to the client request, to send to the client based on the calculated transfer rate. If the transfer rate is relatively high, then a relatively large amount of data is sent and vice versa. 
     The present invention can be used in a WWW environment where the data is a web page and the test program is an applet. 
    
    
     BRIEF DESCRIPTIONS OF THE FIGURES 
     FIG. 1 is a block diagram of a client, a server and networking communication lines on the WWW in accordance with the present invention. 
     FIG. 2 is a flow chart illustrating functions of the client and server within the network of FIG. 1 according to a first embodiment of the present invention. 
     FIG. 3 is a block diagram of a client, a server and networking communication lines on the WWW in accordance with a second embodiment of the present invention. 
     FIG. 4 is a flow chart illustrating functions of the client and server within the network of FIG. 3 according to a second embodiment of the present invention. 
     FIGS.  5 ( a ) and  5 ( b ) form a flow chart illustrating functions of the client and server within the network of FIG. 3 according to a third embodiment of the present invention. 
     FIG. 6 is a block diagram of a client, a server and networking communication lines on the WWW in accordance with a fourth embodiment of the present invention. 
     FIG. 7 is a flow chart illustrating functions of the client and server within the network of FIG. 6 according to the fourth embodiment of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Referring now to the drawings in detail wherein like reference numbers indicate like elements throughout, FIG. 1 illustrates a client  10 , server  12  and networking communication lines  14 . While the following embodiments are described in a WWW environment, the present invention is also applicable to non-WWW and non-Internet client/server environments in which the client can automatically load and execute a program which has been downloaded from the server. Server  12  manages a data base  16  of HTMLs stored on DASD. There can be other routers (or “intermediary servers) (not shown) between client  10  and server  12  to participate in the routing of communications between the client and the server. The client  10  includes a web browser  17 . In the illustrated example, web browser  17  communicates with the server  12  using the HTTP access method. The server can return an HTML for a web page imbedded in the HTTP communication. The routers, if any, also communicate with the client and server  12  using the HTTP access method. 
     The HTML defines the composition of each entry on the web page and the nature of the entry—text, graphic, hot link, applet, audio file or video file. While the HTML contains the actual text, the HTML contains only a pointer to each graphic, applet, audio file and video file and not the graphic, applet, audio file or video file itself. The graphics, applets, audio files and video files may be stored in a different data base managed by the same or different server. In the illustrated example, server  12  also manages a data base  20  for the graphics, applets, audio files and video files, and uses the HTTP access method for the graphics. (Alternately, a file transport protocol (FTP) access method could be used to access data base  20 .) The industry standard format of the HTMLs is further described in “HTML for Fun and Profit” by Mary E. S. Morris published in 1995 by SunSoft press, A Prentice Hall title. 
     The following is an example of an HTML: 
     
       
         
               
               
             
           
               
                   
               
             
             
               
                 33. 
                 &lt;HTML&gt; 
               
               
                 35. 
                 &lt;HEAD&gt; 
               
               
                 37. 
                 &lt;TITLE&gt;Jim&#39;s home page&lt;TITLE&gt; 
               
               
                 39. 
                 &lt;/HEAD&gt; 
               
               
                 40. 
                 &lt;CENTER&gt;&lt;H1&gt;Jim&lt;/H1&gt;&lt;CENTER&gt; 
               
               
                 41. 
                 &lt;CENTER&gt;&lt;b&gt;&lt;i&gt;LastUpdate - &lt;/i&gt;&lt;/b&lt;tt&gt;September 06th, 
               
               
                   
                 1996&lt;/tt&gt;&lt;/CENTER&gt; 
               
               
                 42. 
                 &lt;p&gt;&lt;br&gt; 
               
               
                 43. 
                 &lt;center&gt;&lt;h3&gt;&lt;IMG SRC = “pics/icons/smiley.gif”&gt; 
               
               
                 48. 
                 RESUME &lt;/h3&gt;&lt;/center&gt; 
               
               
                 49. 
                 &lt;hr&gt; 
               
               
                 50. 
                 &lt;IMG src=”adam.gif” border=0 align=right 
               
               
                   
                 ALT=”Photo not displayed ...”&gt; 
               
               
                 52. 
                 Jim_in_ny@vnet.ibm.com&lt;br&gt; 
               
               
                 54. 
                 &lt;P&gt; 
               
               
                 60. 
                 607-123-4567 &lt;br&gt; 
               
               
                   
                 &lt;br&gt; 
               
               
                   
                 &lt;p&gt; 
               
               
                 70. 
                 &lt;a href=”quicklist.html”&gt; Most Used and Favorite Links &lt;/a&gt; 
               
               
                   
                 &lt;br CLEAR=ALL&gt; 
               
               
                 80. 
                 &lt;RIGHT&gt;No Photo Available for me...Here is my son 
               
               
                   
                 Adam&lt;/RIGHT&gt; 
               
               
                   
                 &lt;HR&gt; 
               
               
                   
                 &lt;br&gt; 
               
               
                 86. 
                 &lt;A HREF=”people.htm”&gt; &lt;IMG SRC=”people2jpg”WIDTH=100 
               
               
                   
                 HEIGHT=56&gt;&lt;/A&gt; 
               
               
                 88. 
                 &lt;A HREF=”resumes.htm”&gt; &lt;IMG SRC=”resumes2.jpg” 
               
               
                   
                 WIDTH=100 HEIGHT=56 ALT=”resumes”&gt;&lt;&#39;A&gt; 
               
               
                   
                 &lt;br&gt; 
               
               
                 89. 
                 &lt;embed src=″http;//xxx.com/HELLO.WAV″hidden=″true″&gt; 
               
               
                 90. 
                 &lt;embed src=”http;//www.xxx.com/vacation.avi″ width=300 
               
               
                   
                 height=300 hidden=”false”&gt; 
               
               
                 91. 
                 &lt;applet code=”bounceword.class” width=435 height=125&gt; 
               
               
                   
                 &lt;!pass in applet background red color value (0-255), default is 255&gt; 
               
               
                   
                 &lt;param name=backrval value=”255″&gt; 
               
               
                   
                 &lt;!pass in applet background green color value (0-255), 
               
               
                   
                 default is 255&gt; 
               
               
                   
                 &lt;param name=backgval value=”255″&gt; 
               
               
                   
                 &lt;!pass in applet background blue color value (0-255), 
               
               
                   
                 default is 255&gt; 
               
               
                   
                 &lt;param name=backbval value=”255″&gt; 
               
               
                   
                 &lt;!pass in string of words to bounce around, default is “hello”&gt; 
               
               
                   
                 &lt;param name=display value=”Your Name Here”&gt; 
               
               
                   
                 &lt;!indicate if you want sound to ping when a word hits a wall 
               
               
                   
                 and display the sound on/off button&gt; 
               
               
                   
                 &lt;param name=sound value=”beep.au”&gt; 
               
               
                   
                 &lt;!indicate if you want to display a start/stop button&gt; 
               
               
                   
                 &lt;param name=stopbutton value=”YES”&gt; 
               
               
                   
                 &lt;/applet&gt; 
               
               
                   
                 &lt;HR&gt; 
               
               
                   
                 &lt;/BODY&gt; 
               
               
                   
                 &lt;/HTML&gt; 
               
               
                   
               
             
          
         
       
     
     The first entry 33 “&lt;HTML&gt;” indicates that this is an html. The next entry 35“&lt;HEAD &gt;” indicates page header. The next entry 37 begins with a tag “&lt;TITLE&gt;” which indicates that the subsequent text is a title of the web page used for print job name and quicklist. The next entry 39 is the tag &lt;/HEAD&gt; which indicates end of page header. The next entry 40 begins with the tag &lt;CENTER&gt;&lt;H1&gt; and indicates the subsequent text should be centered. Likewise the next entry 41 begins with the tag &lt;CENTER&gt; and indicates that the subsequent text should be centered. The next entry 42 comprises the tag &lt;p&gt;&lt;br&gt; which indicates paragraph and break. The next entry 43 begins with the &lt;center&gt; format tag and also includes a tag &lt;IMG src which indicates that the following file names the graphic. Entry 48 indicates the text “RESUME” and the center format. The next entry 49 in the html is “&lt;hr&gt;” which means horizontal rule, i.e. straight line. The next entry 50 describes non-clickable graphic &lt;IMG src=”adam.gif” is the URL for the source of the graphic itself. “Border=0” and “align=right” specify the border and alignment characteristics of the graphic. The next entry 52 is the nonclickable text. The next entry 54 means a paragraph. The next entry 60 is for nonclickable text. Entry 70 begins with tag “&lt;a&gt;” which means that the subsequent text is a hot link/clickable text. Entry 80 is for nonclickable text. Entry 86 is for a hot link/clickable graphic which does not include any alternate text. Thus, each hot link in the HTML is prefaced by &lt;a&gt; or &lt;A&gt;, and the hot links may be simple text or graphics with or without alphanumeric characters. Entry 88 is for a hot link/clickable graphic, and includes alternate text “Resumes”. Entry 89 is a reference to an audio file and entry 90 is a reference to a video file. Entry 91 (which extends for multiple lines) is a reference to an applet. Upon receipt of an HTML, web browser  17  can convert the HTML to a display of the web page, fetching the graphics, audio file, video file and applets. The foregoing HTML and display process is well known in the prior art. 
     Steps  100  and  102  of FIG. 2 illustrate a known process performed by web browser  10  for fetching and displaying a web page. In step  100 , the web browser  17  receives a request from a user for a home (web) page. The request can be made by the user specifying a URL or selecting a hot link. In the latter case, the web browser converts the hot link selection to a URL. Once the URL is known, either from the user or from the conversion, the web browser requests the HTML from the respective server (step  102 ) and the server complies (step  104 ). For purposes of explanation, assume that server  12  manages the requisite HTML. However, unlike the previously known process, the requested or “default” home page  105  does not include the expected information about the company, education institute, or organization. Instead, the default home page includes a reference to a short, Sun Microsystems Java (tm) applet (program)  24  and parameters for the applet  24 . The web browser  17  then fetches the applet  24  and displays the default web page. The default web page comprises text to explain that the transfer rate determination is in progress. The default web page also includes instructions for those users who have web browsers that cannot execute Java applets and a hot link to request the web page with the expected information for the company, education institute or organization. If the client is capable of executing applet  24  and the determination proceeds normally, the determination will usually be completed in less than one half second and the user will not have time to read the text. However, if the client is not capable of executing applet  24  or the determination does not proceed expeditiously, then the default web page will be displayed for an extended period of time to enable the user to understand what is happening and to permit the user to select the hot link for the expected web page. The parameters within the default home page  105  include the URL of “test data file”  32  of known length. In one embodiment of the present invention, the parameters also include two other URLs for web pages which contain the expected information: One of the URLs is text only and does not include pointers to any graphics, other applets, audio files or video files and the other URL includes text and pointers to graphics, other applets, audio files and video files. In a first embodiment of the present invention, the parameters within the default home page also include a transfer rate threshold. 
     After being fetched by web browser  17 , applet  24  executes in the client  10  (step  106 ). Applet  24  obtains a time stamp from the operating system within client  10  (step  108 ). Applet  24  then requests a predetermined “test data file”  32  from server  12  (step  110 ). In response, server  12  proceeds to fetch the test data file  32  and download it to applet  24  within client  10  (step  120 ). Immediately upon receipt of the test data file (step  122 ), applet  24  disconnects from the server (step  123 ), obtains another time stamp (step  124 ) and then calculates the transfer rate as the length of the test data file divided by the difference between the two time stamps ( 128 ). In the first embodiment of the present invention, after the applet  24  determines the transfer rate in step  128 , the applet  24  compares the transfer rate to the threshold parameter (decision  140 ). If the transfer rate is greater than the threshold parameter, then the applet  24  requests the URL for the expected information. This URL includes the pointers for the graphics, other applets, audio files and video files (step  142 ). However, if the transfer rate is less than or equal to the threshold parameter, then the applet  24  requests the URL for the expected information. This URL does not include the pointers for the graphics, other applets, audio files or video files (step  144 ). In response, the server  12  returns to web browser  17  the HTML for the URL requested by the applet  24  (step  145 ). The web browser receives and displays the web page. If the HTML referenced graphics, other applets, audio files and video files, then the web browser fetches them also (step  146 ). 
     The second embodiment of the present invention is illustrated in FIGS. 3 and 4. Steps  100  and  102  are the same as in FIG.  2 . However, a default home page  205  and an applet  224  are stored in server  12  instead of default home page  105  and applet  24 , respectively. Default home page  205  does not include the transfer rate threshold parameter and instead includes the address of a CGI-Bin function within the server. Applet  224  is referenced in the default home page  205  which is returned in step  154  and received by the web browser in step  206 . Web browser  17  receives the default home page  205  and then fetches and executes applet  224  (step  206 ). Steps  108 - 128  are also the same as in FIG.  2 . After the applet  224  determines the data transfer rate in step  128 , the applet  224  sends the transfer rate to the CGI-Bin function in the server  12  (step  156 ). In the server, the CGI-Bin function compares the transfer rate to a transfer rate threshold (decision  158 ). If the transfer rate is greater than the threshold, then the server  12  downloads the HTML that includes the pointers to the graphics, other applets, audio files and video files (step  160 ). However, if the transfer rate is less than or equal to the threshold, then the server  12  downloads the HTML that does not include the pointers to the graphics, other applets, audio files or video files (step  162 ). The client web browser  17  receives the appropriate HTML and displays the web page (step  166 ). 
     A third embodiment of the present invention is illustrated in FIGS.  5 ( a ) and  5 ( b ) and is the same as the second embodiment up to and including step  156 . However, next server  12  compares the transfer rate to two different thresholds (decisions  170  and  172 ). If the transfer rate is above the higher threshold, then the server dynamically generates an HTML that includes text and pointers to all other elements—graphics, other applets, audio files and data files. (step  174 ). If the transfer rate is between the upper and lower thresholds, then the server dynamically generates an HTML that includes text and references to graphics only (step  176 ). If the transfer rate is below both thresholds, then the server dynamically generates an HTML that includes text and no references to graphics, other applets, audio files or video files (step  178 ). Addtional thresholds can be provided and comparisons made to them to further tailor the HTML to the transfer rate. The web browser receives the appropriate HTML and displays the corresonding web page (step  166 ). 
     A fourth embodiment of the present invention is illustrated in FIGS. 6 and 7. In the fourth embodiment, steps  100  and  102  are the same as in the first embodiment. Next, the server returns a default home page  305  which includes a reference to applet  324  (step  186 ). The web browser  17  receives the HTML for default home page  305 , fetches applet  324  and then executes applet  324  in client  10  (step  306 ). Applet  324  determines the transfer rate as described above in steps  108 - 128 . Then, applet  324  compares the transfer rate to a threshold parameter which was included as a parameter within the default web page  305  (decision  140 ). If the transfer rate is greater than the threshold parameter, then applet  324  advises the web browser  17  to display the graphics, other applets, audio files and video files of the next web page that it requests (step  188 ). However if the transfer rate is less than the threshold parameter, then the applet  324  advises the web browser to not fetch or display the graphics of the next web page it requests (step  190 ). Applet  324  then instructs web browser  17  to obtain the web page; included as a parameter within default home page  305  (step  192 ). This web page included as the parameter contains the expected information. In response, web browser  17  obtains and displays the web page indicated by the applet  324  (step  144 ), fetching the graphics, other applets, audio files and video files only if indicated to do so in step  190  (step  197 ). 
     Based on the foregoing, systems and methods according to the present invention have been disclosed for determining the transfer rate of a client and using that determination to select the components of a web page to download and display. However, numerous modifications and substitutions can be made without deviating from the scope of the present invention. For example, the server  12  can record when the server initially sends applet  24 ,  224  or  324  to the client to determine the transfer rate. For an interval thereafter, such as the next thirty minutes, the server  12  will assume that the transfer rate is approximately the same for client  10  and will not resend applet  24 ,  224  or  324  for subsequent HTML requests and will not re-determine the transfer rate. This reduces network traffic and delays in downloading the requested HTML. Therefore, the present invention has been disclosed by way of illustration and not limitation and reference should be made to the following claims to determine the scope of the present invention.