WO2001090912A1 - Enhanced downloading from a computer network and profiling of a user of a computer network - Google Patents

Enhanced downloading from a computer network and profiling of a user of a computer network Download PDF

Info

Publication number
WO2001090912A1
WO2001090912A1 PCT/US2001/016717 US0116717W WO0190912A1 WO 2001090912 A1 WO2001090912 A1 WO 2001090912A1 US 0116717 W US0116717 W US 0116717W WO 0190912 A1 WO0190912 A1 WO 0190912A1
Authority
WO
WIPO (PCT)
Prior art keywords
user
computer
information
readable medium
downloading
Prior art date
Application number
PCT/US2001/016717
Other languages
French (fr)
Inventor
Xavier Ferguson
Nishant Singh
Original Assignee
Qmgn, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qmgn, Inc. filed Critical Qmgn, Inc.
Priority to AU2001264870A priority Critical patent/AU2001264870A1/en
Publication of WO2001090912A1 publication Critical patent/WO2001090912A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Definitions

  • This invention relates generally to computer networks, such as the worldwide computer network known as the Internet, and more particularly to a computer program for enhanced browsing of content on such computer networks and/or enhanced profiling of users of such computer networks.
  • the Internet has seen expansive growth over the past several years, most notably the " user-friendly multimedia portion of this global computer network, known as the world wide web (WWW).
  • WWW world wide web
  • This rapid growth has been driven by two general trends.
  • These two trends have created a perpetual spiral of Internet growth, as more consumers attract more companies, who provide more information and content, which attracts more consumers, and so on.
  • the world wide web section of the Internet is accessed with the use of known client software called a web browser.
  • client is commonly used to describe the user's computer (although it is sometimes used to refer more specifically to a program or module within the user ' s computer) .
  • All web browsers use a graphical interface to provide for ease of use. The browser allows the user to connect to computers all over the world via the world wide web, which is essentially a collection of so-called "server” computers that utilize the hypertext (or hypermedia) transfer protocol (HTTP).
  • HTTP hypertext transfer protocol
  • HTTP is a well known protocol that provides users access to files or web pages (consisting of text, graphics, images, video, sound, etc.) using a standard page description language known as hypertext markup language (HTML) or extensible markup language (XML).
  • HTML hypertext markup language
  • XML extensible markup language
  • users can access web pages by linking to or specifying the address of a page via its computer address, known as a uniform resource locator (URL).
  • URL uniform resource locator
  • the browser makes a request to the server identified in the link or address and receives the requested web page.
  • a user by use of a web browser on his or her client computer is said to "surf" through web pages on the Internet.
  • HTML uses so-called "tags,” denoted by the angle bracket symbols " ⁇ >”, with the actual tag between the brackets. Most tags have a beginning section ( ⁇ tag/>) and an ending section ( ⁇ /tag>) with the slash symbol "/" between.
  • link tags in HTML to enable the viewer ofthe document to jump to another place in the same document, to jump to the top of another document, to jump to a specific place in another document, or to create and jump to a remote link (via a new URL) to another server.
  • Links are typically displayed on a web page in color and/or with an underscore. In response to the user's pointing and clicking on a link, the link is said to be "activated” and begins downloading the linked media (e.g., document or audio and/or video).
  • known caching suffers from the following limitations: First, known caching is not elective; that is, a user cannot select which information to cache. Second, known caching does not allow users to organize cached content. Third, users cannot control the duration during which information is cached.
  • Successful advertising on the Internet faces a myriad of challenges. Most Internet advertising takes the simple form of placing visual indicia on web pages that a certain percentage of a desirable potential market is expected to download, not unlike television, radio or billboard advertising. What is much more valuable, however, is the promise of targeted advertising to specific users meeting predefined criteria.
  • Targeted advertising on the Internet is generally based on one or both of two sources of information about users: (1) a profile of the user, provided by effort of the user and thereafter maintained statically; and (2) historical surfing patterns, such as maintained in "cookies" files on the user's computer. Both of these techniques are limited; they depend for their success on a high correlation between future behavior and historical facts, such as demographic data or past surfing activities. The second technique has the additional limitation that it cannot respond immediately to past surfing activities, so that during the first hit of a site, when perhaps a particular advertisement would be the most valuable, the targeted advertisement cannot be made. Conventional forms of Internet advertising are troublesome to the user. It is inevitable that users will be exposed to advertisements on the Internet. However, users currently have little or no control over the advertising they receive.
  • Targeted advertising if used at all, is based upon limited information about a user. Another troublesome aspect of present Internet advertising is that the downloading of advertisements consumes valuable bandwidth at the expense of what the user wants to download. In deed, advertisements are often the first items downloaded, before the content in which the user is actually interested. All of these factors combine to result in the fact that present advertising displaces what the user wants to download with something having little value to the user. Conventional forms of Internet advertising are also limited in their exposure and modes of expression. Exposure to an advertisement is at a user's discretion. Advertisers presently have no capability to control the exposure to their advertisements. Furthermore, bandwidth limitations on the Internet constrain the mode of advertising expression to simple visual indicia.
  • the present mode of Internet usage makes the Internet ill-equipped for motion video or streaming audio presentations - modes of expression to which advertisers' creativity is presently accustomed.
  • targeted advertising on the Internet is that known forms of targeted advertising are targeted at a particular computer, not necessarily a particular user. For example, cookies, which are a historical trace of URLs downloaded by a browser, are maintained at the computer level. When several users share a computer, as is the case with most home computers, the cookies on that browser are a jumbled compilation of several users' historical downloading activity. This jumble is almost useless for the purposes of targeting advertisements.
  • known software that supports multiple screen names for multiple users on the same computer does not link individual screen names to global surfing patterns.
  • One form of the invention is also a computer readable medium on which is embedded one or more computer programs or computer instructions.
  • the instructions perform a method of enhanced downloading of information from a computer network to a computer operated by a user.
  • the computer sometimes conventionally downloads information from the computer network and sometimes does not conventionally download information from the computer network, thereby causing one or more idle times.
  • the method accepts a selection of a user defined set of one or more pieces of additional information to be downloaded, downloads at least some of the additional information from the computer network during at least one of the idle times, and caches the downloaded additional information.
  • the method accepts a selection of a user defined set of one or more pieces of additional information to be downloaded, downloads at least some of the additional information from the computer network during at least one of the idle times, and displays the downloaded additional information at one or more times selected by the user.
  • the program runs on a computer operated by a user.
  • the computer sometimes conventionally downloads information from the computer network and sometimes does not conventionally download information from the computer network, thereby causing one or more idle times.
  • the program comprises an interface, by which is entered a selection of a user defined set of one or more pieces of additional information to be downloaded.
  • the program also comprises at least one transfer client, connected to the interface, by which at least some of the additional information is requested from the computer network during at least one of the idle times.
  • the program additionally comprises a cache, connected to the transfer client, where the requested additional information is stored for later retrieval.
  • the program comprises an interface and at least one transfer client connected to the interface. Through the interface the user enters a selection of a user defined set of one or more pieces of additional information to be downloaded and user commands for displaying the additional information. By way of the transfer client, at least some of the additional information is requested from the computer network during at least one of the idle times.
  • the instructions perform a method of enhanced downloading of information from a computer network to a computer operated by a user.
  • the computer downloads information from the computer network without fully using the connection bandwidth, thereby resulting in unused connection bandwidth.
  • the method accepts a selection of a user defined set of one or more pieces of additional information to be downloaded, downloads at least some of the additional information from the computer network utilizing the unused connection bandwidth, and caches the downloaded additional information.
  • the program runs on a computer operated by a user.
  • the computer downloads information from the computer network without fully using the connection bandwidth, thereby resulting in unused connection bandwidth.
  • the program comprises an interface, by which is entered a selection of a user defined set of one or more pieces of additional information to be downloaded.
  • the program also comprises at least one transfer client, connected to the interface, that utilizes the unused bandwidth to download at least some of the additional information from the computer network.
  • the program additionally comprises a cache, connected to the transfer client, where the requested additional information is stored for later retrieval.
  • the instructions perform a method of enhanced downloading of information from a computer network to a computer operated by a user.
  • the computer at times executes a conventional downloading thread.
  • the method accepts a selection of a user defined set of one or more pieces of additional information to be downloaded, executes a thread to download at least some of the additional information from the computer network, and caches the downloaded additional information.
  • the thread is distinct from the conventional downloading thread and has a priority lower than the conventional downloading thread.
  • the program runs on a computer operated by a user .
  • the computer at times executes a conventional downloading thread.
  • the program comprises an interface, by which is entered a selection of a user defined set of one or more pieces of additional information to be downloaded.
  • the program also comprises at least one transfer client, connected to the interface.
  • the transfer client executes a thread that is distinct from the conventional thread and at a lower priority level.
  • the program additionally comprises a cache, connected to the transfer client, where the requested additional information is stored for later retrieval.
  • Another form of the invention is a method for profiling a user of a computer network.
  • the method accepts one or more user selections relating to information intended to be downloaded from the computer network in the future and determines a profile of the user at least partially on the basis of the user selections .
  • the information intended to be downloaded from the computer network in the future may be downloaded during periods that are idle from conventional downloading.
  • the information intended to be downloaded from the computer network in the future is preferably deterministic information, known with certainty.
  • the method transmits additional information, such as advertisements, to the user, wherein the additional information is selected at least partially on the basis of the profile of the user.
  • the invention is an apparatus for use by a user of a computer network.
  • the apparatus comprises a user interface and a network communication client.
  • the user interface accepts one or more user selections relating to information intended to be downloaded from the computer network in the future.
  • the network communication client uploads data derived from the user selections to a destination on the computer network.
  • the user interface is a graphical user interface and the information intended to be downloaded in downloaded in the background during idle time.
  • an ad rotator is connected to the user interface, and the ad rotator controls displaying of advertisements in the interface, and the advertisements are selected at least in part on the basis of the uploaded derived data.
  • the invention is a method for profiling a user of a computer network. The user at times operates a client computer connected to the computer network, but one or more other users also operated the client computer at times.
  • the method accepts data relating to the user's downloading of information from the computer network and determines a profile of the user.
  • the profile is independent of the one or more other users.
  • the downloaded information is preferably downloaded during periods that are idle from conventional downloading.
  • the downloaded information can originate from different computers used by the user.
  • the method transmits additional information, such as advertisements, to the user, wherein the additional information is selected at least partially on the basis of the profile of the user.
  • the method accepts data relating to the user's downloading of information from the computer network and transmits the data to a destination, so that the destination can determine a profile of the user. Again, the profile is independent of the one or more other users.
  • the transmitting step further comprises transmitting the data to an intermediary; and transmitting information based on the data to the destination.
  • the transmitting step further comprises: processing the data to produce the information based on the data.
  • the invention is an apparatus for use by a user of a computer network. The user at times operates a client computer connected to the computer network, but one or more other users also operated the client computer at times.
  • the apparatus comprises a user interface and a network communication client.
  • the user interface accepts one or more user selections relating to downloading of information from the computer network.
  • the network communication client uploads to a destination on the computer network data derived from the user selections and not from any data relating to the one or more other users.
  • the user interface is a graphical user interface and the downloaded information is downloaded in the background during idle time.
  • an ad rotator is connected to the user interface, and the ad rotator controls displaying of advertisements in the interface, and the advertisements are selected at least in part on the basis of the uploaded derived data.
  • the computer network may be of any type, public or private, including for example, a LAN, MAN, WAN or the Internet. The computer network may or may not function according to the client-server model.
  • information intended to be downloaded over the network may take many forms, such as hypermedia (e.g., HTML or XML), data files, program files, graphics, text, packaged video and/or audio files (e.g., MPEG or MP3), and streaming audio and/or video.
  • hypermedia e.g., HTML or XML
  • data files e.g., HTML or XML
  • program files e.g., graphics, text, packaged video and/or audio files
  • streaming audio and/or video e.g., MPEG or MP3
  • a piece of information may be an HTML document, as identified by a URL or hyperlink.
  • a profile of a user is any collection of information about a user.
  • a profile may include static (e.g., demographic) and/or dynamic information (e.g., surfing activity — past or future).
  • a profile may be as simple as a single piece of information (e.g., user' s gender) or as complex as a combination of favorite websites, past surfing patterns and intended future URL viewing.
  • certain embodiments of the invention are capable of achieving certain advantages, including some or all of the following: (1) Better utilization of bandwidth on a computer network.
  • connection time that would otherwise be idle can be used productively to download additional information, thus saving valuable time, and possibly money, for the user;
  • Utilization of bandwidth is further maximized in that the additional information downloaded in the background can be dynamically preselected by the user and thus directly fulfills the future needs of the user;
  • Utilization of bandwidth is additionally maximized in that information can be uploaded during the idle times;
  • the program(s) generally provides users a more desirable interface to the Internet, making the Internet more valuable to both users and content providers alike, further feeding the spiraling growth of the Internet;
  • the program(s) can organize the cached information in an intuitively appealing way;
  • the program(s) is expandable to uses other than with a computer network (e.g., with documents, spreadsheets and local files generally);
  • the program(s) provides an additional medium for advertising to users on a computer
  • Figure 1 illustrates a computer network in which the invention can be utilized;
  • Figure 2 illustrates a client computer on which the an embodiment of the invention operates;
  • Figure 3 illustrates a graphical user interface (GUI) of a representative browser along with a GUI of a browser enhancement in a minimized state according to one embodiment of the invention;
  • Figure 4 illustrates the minimized GUI of the browser enhancement from Figure 3 in greater detail;
  • Figure 5 illustrates the GUI of the browser enhancement from Figure 3 in a maximized state;
  • Figure 6 illustrates a mouse for use with the client computer according to one embodiment of the invention;
  • Figure 7 illustrates a popup menu encountered in use of the browser enhancement GUI of Figure 5;
  • Figure 8 is a tree diagram of panes encountered in use of the browser enhancement GUI of Figures 4-5;
  • Figure 9 illustrates a menu pane encountered in use of the browser enhancement GUI of Figures 4-5;
  • Figure 10 is a representative dialog box encountered in use of the browser enhancement GUI of Figures 4-5;
  • Figure 11 is a block
  • the Internet is a known computer network based on the client-server model.
  • the Internet comprises a large network of servers 10 which are accessible by "clients” 120, typically the personal computers of users, through an Internet service provider (ISP) 140 (such as INTERNET AMERICA (TM), NETCOM (TM) and the like) or an online service provider (OSP) 160 (such as AMERICA ONLINE (TM), PRODIGY (TM), MICROSOFT NETWORK (TM), COMPUSERVE (TM) and the like).
  • ISP Internet service provider
  • OSP online service provider
  • Each of the client computers 120 runs a web browser, which is a known software tool used to access information across a computer network (e.g., the world wide web servers of the Internet via the ISPs and OSPs).
  • a server 110 is host to a so-called web site which supports files in the form of documents and pages.
  • a network path to a server is identified by a URL having a known syntax for defining a network connection.
  • the world wide web is a collection of servers 10 of the Internet that utilize the HTTP protocol to provide access to files in the HTML format.
  • Use of an HTML-compliant client browser involves specification of a link URL.
  • the client 120 makes a TCP IP (transmission control protocol / Internet protocol) request to the server 110 identified in the link and receives a (HTML formatted) web page in return.
  • Figure 2 shows a block diagram of a representative "client" computer 120 in which an embodiment of the present invention is used.
  • a system unit 203 includes a system bus or plurality of system buses 218 to which various components are coupled and through which communication between the various components is accomplished.
  • a microprocessor 221 is connected to the system bus 218 and is supported by a read only memory (ROM) 224 and a random access memory (RAM) 227, also connected to the system bus 218.
  • the ROM 224 contains, among other codes, the Basic Input-Output System (BIOS), which controls basic hardware operations such as the interaction with the disk drives and the keyboard.
  • the RAM 227 is the main memory into which the operating system and application programs are loaded.
  • a memory management chip 230 is connected to the system bus 218 and controls direct memory access operations including, passing data between the RAM 227, a hard disk 233, and a floppy disk drive 236.
  • a CD ROM 251 also coupled to the system bus 218, is used to store large amounts of data, e.g. a multimedia program or large database.
  • various I/O controllers a keyboard controller 239, a mouse controller 242, a video controller 245 and an audio controller 248.
  • the keyboard controller 239 provides a hardware interface for a keyboard 206;
  • the mouse controller 242 provides a hardware interface for a mouse 23;
  • the video controller 245 is a hardware interface for a display 212;
  • the audio controller 248 is a hardware interface for speakers 215a and 215b and a microphone 216.
  • a modem 254 enables communication over a connection 56 to a network (such as the Internet) of other computers.
  • the mouse 23 may be another type of point and click device, such as a touch pad, joystick or rolling ball, for example.
  • An operating system 257 of the computer may be DOS (TM), WINDOWS (TM), MAC OS (TM), OS/2 (TM), ATX (TM), UNLX (TM), LINUX (TM) or any other known or future operating system, and each computer 120 is sometimes referred to as a machine.
  • the RAM 227 also supports a number of Internet access tools including, for example, an HTML- compliant web browser 260.
  • GUI graphical user interface
  • the RAM 227 may also support other types of Internet client software, including simple mail transfer protocol (SMTP) or e-mail, file transfer protocol (FTP), network news transfer protocol (NNTP) or "usenet,” and remote terminal access (telnet):
  • SMTP simple mail transfer protocol
  • FTP file transfer protocol
  • NTP network news transfer protocol
  • telnet remote terminal access
  • the web browser 260 running on the client 120 uses a TCP/IP connection to pass a request to a web server 110 running a HTTP "service” (under the WINDOWS (TM) operating system) or "daemon” (under the UNLX (TM) operating system).
  • the HTTP service responds to the request, typically by sending a web page formatted in HTML to the browser 260.
  • the browser 260 displays the web page using local resources (e.g., fonts and colors) on the display 212 of the client computer 120.
  • local resources e.g., fonts and colors
  • a browser enhancement 263 is loaded in the RAM 227 and a cache 266 is allocated on the hard disk 233.
  • the browser enhancement 263 is designed to operate in accompaniment with the operating system 257 and the web browser 260, whose functionality is enhanced as described herein to achieve the benefits outlined above (e.g., accelerated web surfing by background downloading during otherwise idle times).
  • the browser enhancement 263 is preferably a software program. Alternatively, the browser enhancement may be several cooperating software programs.
  • the cache 266 is a storage area where the browser enhancement 263 stores web pages and other information downloaded from the computer network. The cache 266 is independent of the browser 260.
  • the cache 266 is preferably provided on the hard disk 233 ; however, the cache 266 may also be provided in whole or in part in the RAM 227.
  • the choice of whether and how much to apportion the cache 266 among the hard disk 233, the RAM 227 or any other storage medium is typically dictated by such factors as speed of access, size of available storage and its cost.
  • a RAM cache is generally faster but smaller and/or more expensive than a hard disk cache.
  • an inner (or "level 1") cache is provided in the RAM 227, and an outer (or "level 2") cache is provided on the hard disk 233. Information is stored on the level 1 cache if and when space there is available; otherwise the information is stored on the level 2 cache.
  • the cache 266 can be on the computer network, such as ISP 140 or the OSP 160. Network caching does not overcome bandwidth limitations on the connection between the client computer 120 and the ISP 140 or OSP 160, but network caching reduces network traffic and congestion generally. Again, some combination of network and local client caching is possible.
  • the browser enhancement 263 resides in the RAM 227 as one or more software programs when active. However, many alternatives are possible. For example, the browser enhancement 263 may permanently reside in the ROM 224.
  • the browser enhancement 263 may be in the form of firmware on a programmable device (not hown) or hardwired in the form of a dedicated circuit (not shown), such as an application specific integrated circuit (ASIC), that can be a distinct physical part of the system unit 203 or combined in the same physical package with another part.
  • ASIC application specific integrated circuit
  • the browser enhancement 263 exists in a variety of forms both active and inactive.
  • the browser enhancement 263 can exist as software program(s) comprised of program instructions in source code, object code, executable code or other formats; firmware program(s); or hardware description language (HDL) files. Any of the above can be embodied on a computer readable medium, which include storage devices and signals, in compressed or uncompressed form.
  • Exemplary computer readable storage devices include conventional computer system RAM (random access memory), ROM (read only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes.
  • Exemplary computer readable signals are signals that a computer system hosting or running the browser enhancement 263. can be configured to access, including signals downloaded through the Internet or other networks. Concrete examples of the foregoing include distribution of executable software program(s) of the browser enhancement 263 on a CD ROM or via Internet download. In a sense, the Internet itself, as an abstract entity, is a computer readable medium. The same is true of computer networks in general.
  • the browser enhancement 263 can be separate from the browser 260 (i.e., an "add on") or combined with the browser 260 (and possibly other software) to form a single integrated enhanced browser.
  • the browser enhancement 263 is a program of general utility that provides functionality independent of the browser 260.
  • the browser enhancement 263 provides a general desktop platform.
  • the term "browser enhancement” is used herein as a convenient label and is not meant to exclude browser independent aspects of the browser enhancement 263.
  • the term browser is used in this document in its broad, descriptive sense (i.e., any software program used to control the downloading or viewing of information from a computer network or from the client computer 120 local storage), rather than its more recent and restrictive sense (i.e., WWW browsers only).
  • Non-web-based browsers include, for example, West Law Publishing' s WESTMATE (TM) program.
  • the client computer 120 is typically a workstation or home computer; however, this need not be the case.
  • the client computer 120 may exist in other forms .
  • the client computer 120 may be part of an interactive television terminal with Internet connection capabilities (e.g., a WEBTV (TM) terminal), a wireless handheld Internet access device (e.g., a personal digital assistant (PDA) or an Internet-enabled cellular phone).
  • the browser enhancement 263 may be used with any such "computer.” Although the browser enhancement 263 is termed a "browser" enhancement, this nomenclature is employed simply for the sake of brevity and clarity and should not be construed as a limitation on the invention.
  • the browser enhancement 263 may function as an enhancement to any network client program or module. Examples of clients that can be enhanced by the invention include e-mail clients, FTP clients, usenet clients and telnet clients. ⁇ .
  • FIG. 3 illustrates a web page being displayed on a browser GUI 300 while a minimized browser enhancement GUI 400 "floats" above the browser GUI 300.
  • the minimized browser enhancement GUI 400 is depicted in more detail in Figure 4.
  • the minimized browser enhancement GUI 400 has a border 410 surrounding an ad display area 420 and a ticker area 440.
  • the border 410 contains several buttons and indicators, including a hide button 430, a maximize/minimize button 460 and a set of ticker controls 470a-470c. Clicking with a left mouse button (or equivalent) on either the down arrow 460 or anywhere along the lower edge of the border 410 of the minimized GUI 400 opens the interface 400 up to its maximized state 500, as shown in Figure 5.
  • the minimize/maximize button 460 is preferably depicted as a down arrow in the minimized GUI 400 to indicate that clicking on the down arrow unfurls the maximized GUI 500 below, and as an up arrow in the minimized GUI 400 to indicate that clicking on the up arrow pulls up the maximized GUI 500 from below.
  • Clicking on the hide button 430 reduces the GUI 400 or 500 to the task bar of the WINDOWS (TM) operating system.
  • the GUI 400 or 500 may reappear after a predetermined period, such as twenty minutes, for example, after being hidden in the task bar.
  • the hide button 430 may be omitted. In this alternative, the GUI may be minimized but not completely hidden.
  • the ad display area 420 displays advertisements, preferably in accordance with an ad rotation algorithm described in greater detail in a subsequent section.
  • the exposure of advertisements appearing in the ad display area 420 can be controlled by the browser enhancement 263 (or by advertisers) because the ad display area 420 is uncoupled from any particular web page and has a persistent presence. If the user left clicks in the ad display area 420, an advertising action is taken.
  • the advertising action may be a primary (i.e., not in the background) download request to a specified web site associated with the currently displayed advertisement, a secondary (i.e., in the background) download request of the same, downloading an audio file or audio/visual (e.g., animation or MPEG (motion picture expert group)) file for playing on an appropriate browser add-on, or displaying or playing an already stored website, audio file or audio/visual file.
  • audio file or audio/visual e.g., animation or MPEG (motion picture expert group)
  • the ticker area 440 is another area where information can be conveyed to the user. Textual information, such as stock or securities quotes, sports scores, emergency warnings, brief news flashes and messages about the operation or status of the browser enhancement itself (e.g., a reminder that some number of cached web pages remain unviewed), for example, can be scrolled across the ticker area 440.
  • ticker control buttons 470a-470c work as follows : The ticker pause button 470a, when clicked, alternately pauses and resumes scrolling of text across the ticker area 440; the ticker direction button 470b reverses the direction in which text scrolls across the ticker area 440; and the ticker speed control button 470c hastens or slows the scrolling or text across the ticker area 440.
  • a user initiates background downloading by selecting a link from the page currently displayed on the browser GUI 300, dragging the link and dropping it in the browser enhancement GUI 400 or 500. When the link is dropped in the browser enhancement GUI 400 or 500, an audible sound (e.g., ding or plop) is preferably produced.
  • the selection, dragging and dropping operation is typically performed by the user's pointing on the link, pressing the left mouse button and holding the button while moving the link over the browser enhancement GUI 400 or 500, then releasing the left mouse button.
  • the selection of a link for background downloading is accomplished with the use of the mouse 209, as shown in Figure 6, or an equivalent point and click device (e.g., track ball, joystick or thumb pad).
  • the mouse 209 comprises a left button 560, a right button 570 and a middle button 580.
  • the left button 560 is labeled "NOW" or something similar
  • the middle button is labeled "LATER" or something similar.
  • buttons can be included on the keyboard 206, either as a dedicated button (much like the "START” button for WINDOWS (TM) operating system) or an existing function key possibly in combination with the SHIFT, ALT or CTRL key.
  • a "NOW/LATER” toggle button is provided, either on the mouse 209 or the keyboard 206.
  • the "NOW/LATER” toggle button can be the middle button 570 on the mouse 209 or a key on the keyboard 206.
  • Depression of the "NOW/LATER” toggle button switches between two modes. In the "NOW" mode, single clicking of the left mouse button 560 on a hyperlink in the browser GUI 300 causes conventional, foreground loading of the hyperlinked page, as usual. In the "LATER” mode, single clicking of the left mouse button 560 on a hyperlink in the browser GUI 300 causes the hyper to be placed on the queue of the browser enhancement 263 for background downloading, just as would happen if the hyperlink were D&D-ed onto the browser enhancement GUI 400 or 500.
  • the browser enhancement 400 or 500 is preferably provided with a mode indicator.
  • selection of a link may cause different audio sounds in the different modes.
  • the browser enhancement 263 can produce the same sound that is produced at the conclusion of an explicit D&D operation when a link is selected in the "LATER" mode; whereas, no sound may be forthcoming when a link is selected in the "NOW" mode.
  • the selection of a link for background downloading is accomplished by voice activation.
  • the browser enhancement 263 includes voice recognition software, and the user speaks into a microphone connected to the client computer 120 the word "Queue," which is easily recognizable due to its audible distinctiveness, followed by a brief description of the link on the web page currently displayed in the browser GUI 300.
  • the browser enhancement 263 performs speech recognition processing applied to the phrase spoken after "Queue" in order to find its closest match among the hotlinks parsed from the currently displayed web page. Note that the speech recognition processing required for matching a limited set of possibilities is considerably less demanding than that required for speech to text conversion. Therefore, the speech recognition software included in or utilized by the browser enhancement 263 can be a subset of or simplified form of a full featured speech recognition program.
  • the voice recognition software can also be programmed to recognize a keyword such as "Get” followed by a brief description of the link on the web page currently displayed in the browser GUI 300, to cause the browser 260 to perform a foreground download.
  • a button can be added to the browser GUI 300. The added button, when clicked, has the same effect as dropping the page currently displayed on the browser GUI 300 in the browser enhancement GUI 263 and transferring the page to the cache 266, without disrupting the display of the page on the browser GUI 300. In other words, clicking the added button on the browser GUI 300 places the current web page on the browser enhancement's 263 queue (as explained in greater detail with reference to Figure 16).
  • D&D-ed links are queued for background downloading during idle times when the browser 260 or other primary network client is not downloading information from the Internet in its conventional way. Queued links are displayed in a list area 505 in the maximized GUI 500.
  • the list area 505 displays names of web pages and other information content to be downloaded, downloading, or downloaded in the background, as well as any other files or documents that the user desires to keep there.
  • the list area 505 is structured by way of hierarchical folders. If the browser enhancement GUI is in its maximized state 500 when a link is D&D-ed, then the user can drop it with precision into a desired folder.
  • the link defaults to a predetermined folder for unfiled links. Links, folders and other contents in the list area 505 can be moved, copied and manipulated according to standard windows-based conventions.
  • the content is cached in the cache 266 on the user's client computer 120. Thereafter, the user can double-click (or single click, as set by the user's preferences) upon its name in the list area 505 to cause the content to be displayed instantly (or at least nearly instantly) on the browser GUI 300.
  • Cached content can be viewed with greater flexibility than is possible using the browser 260 alone, which typically imposes a linear (back - next) sequence on any viewing pattern.
  • the browser enhancement 263, on the other hand, allows a user to view cached content in any order, at any time, even after disconnection from the network source of the content.
  • the download status of individual D&D-ed links is preferably indicated in the list area 505 of the maximized browser enhancement GUI 500.
  • An exemplary scheme for expressing the download status of an individual link is to display one of the following to the left of the URL or object description: a red light 510 for a queued link awaiting downloading; a yellow light 515 for a link whose background download is in progress; a green light 520 for links whose background downloading and caching is complete, an up-right arrow "TV mark 525 for links that have encountered an error; and a check mark 530 for cached links that have been viewed.
  • Links that have encountered an error are not cached but are preferably stored as shortcuts, which are activated as primary download requests when dragged back into the browser GUI 300.
  • any form of error indication can be presented to the user.
  • files or other objects that are not links are preferably denoted in the list area 505 with a small icon 535 that visually indicates the type of file (e.g., word processing document, spreadsheet, etc. or shortcuts to the same), according to accepted windows style conventions.
  • the overall download status can be indicated on both the minimized GUI 400 and the maximized GUI 500 with a background download indicator 450 that is dull amber when no background downloads are being performed and changes to glowing amber when any background requests are being processed. Although amber on off is a preferred mode of indicating background download status, other modes of expressions are possible.
  • the maximized GUI 500 contains additional buttons and displays at the bottom of the layout depicted in Figure 5.
  • a user tip area 540 when activated, displays useful information ("cue cards") about the component on which the desktop pointer currently hovers. For example, when the pointer is over a button, the user tip area 540 displays a brief description of the button, such as what it does when clicked. As another example, when the pointer is over a link in the list area 505, the user tip area 540 displays the time when the link was downloaded or last refreshed. As another helpful guide to the user, a pointer tip box appears near the pointer and displays full URL of the link over which the pointer sits.
  • the pointer tip box 540 can display the full path to the file.
  • Buttons serving various purposes are preferably included in the maximized GUI 500.
  • One such button is a provider link button 545, which when depressed causes any one or more of a variety of provider specified responses.
  • a typical response is the display of a custom menu of links to pages on the web site of the enterprise providing the browser enhancement 263 to the user.
  • depressing the provider link button 545 can cause a foreground or primary download of the provider' s homepage.
  • Another button is an auto refresh list button 550, which when depressed displays in the list area 505 a list of the queued links that the user designates for automatic refreshing.
  • a menu button 560 causes a main menu pane (described in greater detail below) to be displayed in the list area 505.
  • a queue list display button 565 causes the list area 505 to return to its default state of displaying queued and/or cached links and other objects.
  • One or more custom configurable buttons 570 are also preferably provided.
  • a set of directional scrolling buttons 575 can be used to scroll the list area 505 left, right, up or down.
  • the arrow buttons on the keyboard 206 accomplish the same functions when the pointer is over the list area 505.
  • an upgrade button 580 can be clicked to upgrade the browser enhancement 263 software by Internet download of a new version or new components.
  • the upgrade button preferably changes color, flashes or otherwise produces an indication when an upgrade is available.
  • a user one morning may navigate with the browser GUI 300 to the U.S. Patent & Trademark Office web page, as depicted in Figure 3.
  • the user may wish to read five of the postings whose links are provided on the displayed web page.
  • the user can do so by D&D-ing the five desired links onto the minimized browser enhancement GUI 400. After the D&D-ing operation, the user may leave his client computer 120 unattended to brush his teeth, get dressed or the like.
  • the browser enhancement 260 downloads the D&D-ed links and possibly new advertisements, ticker text data and/or auto refreshed sites (described below).
  • the browser 260 or browser enhancement 263 may automatically disconnect from the Internet after a certain period of inactivity, or the user may return to his client computer 120 to disconnect from the network. Thereafter, while offline - perhaps while eating breakfast or while commuting to work if the client computer 120 is portable, the user can read the cached U.S. Patent & Trademark Office web pages while being exposed to the advertisements and ticker text.
  • FIG. 7 illustrates a popup menu 600 encountered in use of the browser enhancement maximized GUI 500.
  • the popup menus 600 appears when a user right clicks while pointing to an entry in the list area 505. Activation of the contents of a popup menu is context sensitive.
  • the popup menu 600 illustrates examples of possible menu options.
  • the popup menu 600 is displayed when the user right clicks on the always present "Unfiled" folder.
  • the popup menu 600 contains options 605-670 for creating a new URL, creating a new folder, performing edit operations (via a right pop out menu 635), renaming the selection, forcing a download of the selection, stopping a download in progress, designating the selected link for auto refreshing, adding comments and performing package operations, respectively.
  • the options 605-670 may be labeled differently from that shown in Figure 7 and/or arranged in a different order, if desired.
  • the new URL option 605 which is an active choice when the selection is a folder, adds a new object into the folder.
  • the user can directly type a URL in the newly created field.
  • the prefix "http://," if not present, is automatically appended to the beginning of the typed entry.
  • the new folder option 610 is selected, the folder having the default name "New Folder" is created.
  • parenthetical numbers e.g., "(1)" or "(2)
  • Keyboard shortcuts preferably provide the same functions as the new URL option 605 and the new folder option 610 (e.g.
  • the popup menu 600 also contains an edit option 630, which, when selected, produces a right pop out submenu 635 containing more detailed edit choices, such as cut, copy and paste.
  • the popup menu 600 also contains standard manipulation options such as rename option 640 and a delete option 645.
  • Some of the more unique menu items are a force download option 650, a stop download option 655, an auto refresh option 660 and a package option 665.
  • the force download option 650 places the selected link at the top of the queue in terms of priority for background downloading of D&D-ed links.
  • the force download option causes downloading of the link again to replace the previously cached contents. Jf an earlier attempt to download the selected link resulted in an error, then the force download option 650 attempts the download again.
  • the stop download option 655 interrupts a link whose download is in progress (indicated by a yellow circle) and optionally moves the link to the bottom of the queue in terms of priority.
  • Selection of the auto refresh option 660 adds the highlighted link to the user's list of URLs that are to be refreshed automatically according to an algorithm described in detail in a subsequent section. Selection of the add comments option 665 opens a dialog box in which the user can enter text that will later be displayed in the pointer tip box when the pointer is over that item.
  • Selection of the packages option 670 displays a right pop out menu having choices of importing and exporting item(s) to/from the list display area 505.
  • the browser enhancement 263 maintains a list of web sites to automatically refresh. Web sites are added to this list by the auto refresh option 660 in the popup menu 600 (or by the corresponding keyboard shortcuts). This list is displayed in the list area 505 when the user depresses the auto refresh list button 550. When the list is displayed in the list area 505, the user can add or delete links by popup menu options or keyboard shortcuts.
  • the browser enhancement 263 presents to users a number of menu, dialog and other panes. The panes are preferably organized in layers.
  • Figure 8 is a tree diagram 800 of panes encountered in use of the browser enhancement GUIs 400 and 500.
  • the pane at the top level is a main menu pane 805, which contains options for the next level of panes 810-850, either as icons, as shown in Figure 9, or as a textual list.
  • a preferences pane 810 which is a dialog pane in which the user can select various personal options and preferences .
  • a storage settings pane 815 which is a dialog pane for selection of such things as browser choice, cache size and auto refresh intervals.
  • Another dialog pane is a user pane 820, in which user identity can be changed, password parameters set up, and new users can be established.
  • a connection pane 825 is a dialog pane for connection parameters such as modem type and proxy server settings.
  • the skin pane 830 displays information (e.g., creation date and creator) about the appearance (i.e., "skin") of the browser enhancement GUI 400, 500 and optionally launches a skin wizard for use in modifying the GUI appearance.
  • a button configuration pane 835 is a dialog box in which a user can control the custom configurable buttons 570, e.g., to launch a particular application.
  • a tour pane 840 is the starting point for a presentation about the browser enhancement 263.
  • a supplier/brand pane 845 displays information about the company supplying or branding the user' s edition of the browser enhancement.
  • a more pane 850 is a continuation of the main menu pane 805. The more pane 830 contains a menu of the panes 855-880 of the next lower level.
  • An advertisers pane which displays information for or about those who advertise on the browser enhancement GUI 400 or 500.
  • An instructions pane 860 displays help pages and/or a tutorial about the browser enhancement 263.
  • a feedback pane 865 opens the default mail program with a new message directed to the developers of the browser enhancement 263.
  • a developer's pane 870 displays information about the developers of the browser enhancement 263.
  • a registration pane 875 is a dialog pane in which a user can enter and edit personal and demographic information, as described in greater detail below.
  • a tell a friend pane 880 opens the default mail program with a new message about the browser enhancement 263 for sending to another.
  • An about pane 885 displays such things as license information, copyright notices, trademark notices, patent markings, product serial numbers, and the like.
  • An optional mail queue pane 890 opens the default mail program with a new message for sending to another user. Attached to this e-mail is all or selected parts of the user's queue of D&D-ed links as normally shown in the list area 505.
  • the mail queue pane 890 is another gateway to the same functionality as provided by the export option from the packages option 670 in the popup menu 600.
  • Certain panes that predominantly display information may work by optionally or automatically causing a foreground download of a web page containing the information.
  • the information can be stored locally, with selection of the pane initiate display of the local screen(s).
  • Dialog panes utilize the list area 505 to present the user with choices for selection.
  • An representative example of a dialog pane is the connection pane 825, which is illustrated in Figure 10. In Figure 10, the list area 505 displays the connection pane 825.
  • the connection pane 825 includes a drop down list 710 for selection of a type of browser 260 used with the browser enhancement 263.
  • the connection pane 825 also includes a check box 720 for the user to designate whether a proxy server is used when connecting the client computer 120 to the computer network. If the check box 720 is checked, then the user fills in the user name and password fields 730 and 740.
  • the connection pane 825 includes a drop down list 750 for selection of the connection type. The information entered in this field is used by the browser enhancement 263 to determine how many communication threads to set up.
  • FIG. 11 is a block diagram illustrating the external interfaces of the browser enhancement 263.
  • the browser enhancement 263 interfaces with the browser 260, an advertising server 1140, a user 1110, a requested web server 1120 and a ticker data server 1150.
  • the browser 260 is typically a conventional software program, such as NETSCAPE NAVIGATOR (TM) or MICROSOFT INTERNET EXPLORER (TM).
  • the browser enhancement 263 is preferably a software program or set of cooperating software programs that provides the GUIs 400 and 500, various dialog boxes and pull down menus and implements their functionality, including background downloading during idle times.
  • the user 1110 is typically a human person who runs and manipulates the browser 260 and the browser enhancement 263.
  • the advertising server 1140 is one of the servers 10 on the computer network and supplies advertisement data to the browser enhancement 263 for display in the ad display area 420.
  • the advertising server 1140 also performs user profiling and targeting of advertisements, as explained in detail in a subsequent section.
  • the advertising server 1140 may be a single machine, or the functions of the advertising server 1140 can be distributed among several machines.
  • a user profiling server 1130 may be an intermediary node between the browser enhancement 263 and one or more advertising servers 1140.
  • the requested web server 1120 is one of the servers 10 on a computer network from which the browser enhancement retrieves web pages or other data as either a background (i.e., secondary) request or primary request.
  • a link to or URL of the requested web server 1120 is in the list area 505 of the browser enhancement GUI 500 either by virtue of being D&D-ed (dragged-and-dropped) there or by being an automatically updated favorite site.
  • the requested web server 1120 changes from time to time.
  • the requested web server 1120 can be contacted directly by the browser 260, although it is preferred that all conventional browser 260 downloads be monitored by the browser enhancement 263.
  • the ticker data server 1150 supplies data for display in the ticker area 440of the browser enhancement GUI 400 of 500.
  • Figure 11 also illustrates the handshaking signals communicated between the objects depicted in Figure 11.
  • a signal d_d_req 316 is fired by the user 1110 when a link or other object is D&D-ed into the GUI 400 or 500 of the browser enhancement 263.
  • a signal piw_data_req 318 is fired by the user 1110 when the user 1110 selects a queued link from the list area 505 for display.
  • the browser enhancement 263 sends to the browser 260 a signal br_cache_data 314, which is the cached data for display.
  • this action generates a signal conv_url_req 340.
  • the browser 260 In response to the signal conv_url_req 340, the browser 260 generates a signal br_url_req 312, which is intercepted by the browser enhancement 263, which reacts by sending a signal page_req 330 to the requested web server 1120, the URL of which is the URL of the signal conv_url_req 340 .
  • the requested web server 1120 In response to receipt of the signal page_req 306, the requested web server 1120 sends a signal page_send 332 to the browser enhancement 263, which forwards the signal page_send 332 as a signal br_data 313 to the browser 260 for display.
  • a conventional download involves the following signals in the following order: conv_url_req 340, br_url_req 312, page_req 330, page-send 332 and br_data 313.
  • the browser enhancement 263 may not interrupt conventional downloads, in which case the signal conv_url_req 340 causes the browser 260 to sends a signal conv_page_req 342 to the requested web server 1120, which responds by returning a signal conv_page_send 344.
  • the browser enhancement 263 preferably monitors the signals conv_page_req 342 and/or conv_page_send 344.
  • the browser enhancement 263 preferably sends a signal ad_req 324 to the advertising server 1140.
  • the signal ad_req 324 is an HTTP request for an advertisement.
  • the advertising server 1140 sends the advertisement in a signal ad_send 328 back to the browser enhancement 263.
  • the browser enhancement 263 also at times sends a signal user_profile 326 to the advertising server 1140.
  • the signal user_profile which is specified in detail in a subsequent section, is used by the advertising server 1140 to generate or select advertisements targeted at the user 1110.
  • the browser enhancement 263 preferably sends to the ticker data server 1150 a signal tick_req 346, which is an HTTP request for data to display in the ticker area 440 of the browser enhancement GUI 400 or 500.
  • the ticker data server 1150 responds by producing a tick_send signal 348, containing the requested data, back to the browser enhancement 263.
  • B. Component Modules Figure 12 is a more detailed diagram of the browser enhancement 263.
  • Figure 12 depicts the following component modules of the browser enhancement 263: a user interface 1205, a queue manager 1210, a download manager 1215, a storage manager 1220, a user profiling module 1225, a auto refresh manager 1230, a scheduler 1235, a configuration manager 1240, an upgrade manager 1245, an activation manager 1250, a persistence and recovery module 1255 and an advertisement manager 1260.
  • Each component 1205-1260 is preferably a software program, other terms for which include routine, module, agent, function, procedure, thread, daemon or process.
  • the components establish and manipulate numerous passive data structures, data objects and files (e.g., the cache 266) not shown in Figure 12.
  • the components 1205-1260 communicate among each other across a ubiquitous medium, such as shared memory, global variables or interprocess communication techniques well known to those skilled in the art.
  • a ubiquitous medium such as shared memory, global variables or interprocess communication techniques well known to those skilled in the art.
  • discrete interfaces can be established and maintained between particular components as required.
  • Many other alternative architectures to the one depicted in Figure 12 are possible.
  • One particular alternative architecture is one having a "coordinator" main program 1265 that calls the illustrated components as subprograms.
  • the following subsections detail the design of each component module in greater detail. 1.
  • the user interface 1205 of the browser enhancement 263 is described from the user ' s perspective in ⁇ U, supra. This section describes the internal software design of the same.
  • Figure 13 depicts components of the user interface 1205.
  • the drag-and-drop interface 130 provides the ability to drag-and-drop links from the browser 260 and other applications or the desktop.
  • the drag-and-drop interface 130 preferably uses the COM (component object module) for universal data transfer of window objects into the browser enhancement GUI 400 or 500 and the OLE (object link embedding) protocol to accept URL links from the browser GUI 300.
  • the COM standard provides interoperability, programming language independence, extendibility and the ability to communicate between components, even across process and network boundaries.
  • the OLE protocol as is well understood in the art, is a streamlined technique for transferring data through direct mouse action rather than through a clipboard.
  • the OLE protocol brings a data object pointer (termed "IDataObject”) from a source to a target.
  • IDataObject data object pointer
  • the browser 260 implements a drop source interface (termed “IDropSource”) and the drag-and-drop interface 1310 implements a drop target interface (termed “IDropTarget”), which is attached with the OLE API (application program interface) function "RegisterDragDrop.”
  • the list view control module 1320 is responsible for managing the visual organization and appearance of the links and other objects in the list area 505, including their names and download status or other icons.
  • the list view control module 1320 keeps track of the logical and visual organization of the contents of the queue, a data structure described in greater detail in a subsequent section, and hierarchy of folders.
  • the ad rotator 1330 is responsible for displaying and rotating (preferably user specific) advertisements in the ad display area 420 of the browser enhancement GUI 400 or 500.
  • a desirable goal of the ad rotator 1330 is the display of a plurality of advertisements in a manner that is timely from the advertiser's perspective.
  • Another desirable goal of the ad rotator 1330 is the ability to withstand long periods of offline operation, to continue operating when all downloaded advertisements are lost and to recover from display outages without skipping advertisements in the rotation.
  • Figure 14 depicts the ad rotator 1330 and its interaction with related modules and data objects. The ad rotator 1330 works in tandem with the download manager 1215 to download advertisements.
  • a block contains one or more advertisements and also maintains state information about each advertisement in the block. Blocking advertisements together has the advantage of averaging out delays involved in downloading various sized advertisements.
  • the ad rotation engine 1405 sends a request signal ad_block_req 1410 to the download manager 1215.
  • the download manager 1215 acts on the request signal ad_block_req 1410 in accordance with its priority scheme, in which advertisement downloads are a lower priority than queued link downloads, so as not to affect the responsiveness of the browser enhancement 263 in any appreciable way.
  • the download manager downloads an advertisement block ad_block 1420, which is placed in the block storage 1430, and notifies the ad rotator that the download is complete by firing a signal dl_complete 1440.
  • the ad rotator 1330 determines precisely when a new advertisement should be displayed.
  • a timer (not shown) within the ad rotation engine 1405 goes off at a regular interval (thirty seconds, for example) to prompt a change in advertisements. This interval is preferably adjustable, and multiple consecutive intervals can be joined together to display the same advertisement. The timer is held and does not advance whenever the browser GUI 400 or 500 is reduced to the task bar or an icon on the desktop.
  • the value of the timer and the order in the rotation of advertisement are stored when the browser enhancement 263 is shut down. During the next activation of the browser enhancement 263, the rotation of advertisement is resumed exactly or nearly exactly where it left off.
  • the browser enhancement 263 could function without such strict attention to the playing of advertisement (in fact, all advertising features are technically optional), it is important to advertisers to have some assurance that their advertisements get the exposure for which they have bargained. In deed, exposure time of advertisements need not be uniformly the same, and each advertiser can specify a custom exposure time, according to the advertiser's desires and budget, for each advertisement.
  • the content of advertisements can be in any form (e.g., static images, animations, motion video - like the MPEG (motion picture expert group) format with or without audio, audio only). Because advertisement downloads preferably occur in the background during idle time, conventional bandwidth limits do not constrain the complexity of advertisement content.
  • the ad rotation engine 1405 sends a query get_ad 1450 to the current block 1455, which responds by sending an advertisement ad 1460 back to the ad rotator 1330.
  • the ad rotator 1330 receives the ad 1460 without error, it forwards the ad 1460 via a display ad 1465 to an ad display driver 1470, which generates the appropriate image, animation, motion video and/or streaming audio at the ad display area 420 and/or speakers 25a and 25b.
  • the current block 1455, the next block 1475 and/or subsequent blocks make use of a file handler 1480 that provides facilities for checking the state of ad files as well as filing locking and unlocking.
  • the ticker control manager 1340 is another component ofthe user interface 1205 that utilizes the COM standard.
  • Salient features ofthe ticker control manager 1340 are the ability to scroll the ticker text in variable speeds, scroll the text in either direction, pause the scrolling text and later restart it.
  • the ticker control manager 1340 can optionally be configured to respond to a user's clicking on the ticker area by performing a variety of actions, such as a primary download or a background download (a choice selectable by the user) or displaying related content already automatically background downloaded.
  • Figure 15 illustrates the architecture of the menu navigation system 1350 component of the user interface 1205. In one mode, the menu navigation system 1350 is simply built upon the standard toolbox of windows-type controls and facilities in a straightforward way well understood by those skilled in the art.
  • the menu navigation system 1350 is built from a custom set object oriented building blocks, as explained in the following.
  • the advantage ofthe latter approach is reusability, scalability, expandability and portability.
  • the basic structural elements of the menu navigation system 1350 are "panes," which are analogous to "windows" in a conventional windows-type environment.
  • a pane is a self- contained element encapsulating in itself the functionality allowing it to render itself on a given area. For example, a pane can take character input, while another type of pane can handle mouse interactions, such as a button or check box. Anything that can occupy visible area on the display is a pane.
  • FIG. 15 illustrates two exemplary panes - an active pane 1505 and an inactive pane 1510. Only one pane is active at any given time.
  • Each pane 1505 or 1510 contains a pane manager 1515, a method-property manager 1520, a notification manager 1525 and one or more pane controls 1530.
  • the pane manager 1515 is responsible for handling and resolving incoming messages.
  • the method-property manager 1520 exposes the properties and methods associated with a pane to other modules.
  • the notification manager 1525 notifies the other modules about changes in the internal state of the pane.
  • the pane control 1530 is the functionality of the pane 1505 or 1510, such as text edit control, check box, etc.
  • Two constructs of the pane control 1530 are ( 1 ) a default message handler, which is responsible for providing the defined functionality for a control, e.g. drawing behavior; and (2) a custom message handler, which is responsible for providing other functionality.
  • a message dispatcher and device context provider 1540 is a translator between the panes 1505, 1510 and a standard windows-style environment. The message dispatcher and device context provider 1540 interfaces with a message pump 1545, which is a construct in the standard windows-style environment, and forwards messages, when necessary to the pane managers 1515.
  • a bridge 1550 is a translator between an ACTIVEX (TM) environment and the active pane 1505, more specifically the method-property manager 1520 and the notification manager 1525.
  • the user interface 1205 includes the skin wizard 1360, which allows the user or others to change the look and feel - in other words, the "skin" - of the browser enhancement GUI 400, 500.
  • the skin wizard 1360 can configure a myriad of cosmetic factors, such as: frame shape, colors, button positions, button bitmaps, the way controls react upon input, and animation states — so as to make possible drastically different appearances.
  • the skin configuration is directed by a single skin file, which can be easily shared among users, distributed over the Internet, etc.
  • the value of the skin wizard 1360 is realized in a scenario where many different commercial entities provide the browser enhancement 263 to the Internet community at large, in which case each commercial supplier would desire to brand its own version of the browser enhancement 263 in its own distinguishable way.
  • the skin wizard 1360 also allows users to indulge their own creativity, which tends to reinforce the value of the browser enhancement 263 to the user.
  • Queue Manager Figure 16 is a diagram of the queue manager 1210.
  • the queue manager 1210 drives the download manager 1215.
  • the queue manager 1210 maintains a list or queue 1605 of all URLs that are to be downloaded, have been downloaded or are presently downloading.
  • the queue 1605 also preferably stores link names, URL, download status, auto refresh option, flag status and pointer to or filename in the cache 266.
  • the queue 1605 is preferably a queue in the sense that the default order of downloading constituent links is the same order as they are placed on the queue 1605.
  • the queue 1605 is a more general data structure and is not strictly confined to a first in, first out (FIFO) functionality.
  • the queue 1605 has attributes of a tree data structure in that elements can be organized in hierarchical folders, as when the queue 1605 is visually depicted in the list area 505.
  • the term "queue" is more in the nature of a convenient label than a strictly descriptive term for the queue 1605.
  • the queue manager determines the order and scheduling of queued URL downloading, which is preferably combined with other communication activity in accordance with a prioritization algorithm described in detail in a subsequent section.
  • the active modules of the queue manager 1210 include an event handler interface 1610, a queue master 1620 and an auto refresh master 1630.
  • the event handler interface 1610 detects events, such as timer events or ACTIVEX (TM) events, that trigger downloading activity.
  • the queue master 1620 maintains the queue 1605 of all URLs pending downloading or already cached.
  • the queue master 1620 sends download requests to the download manager 1215. In a case when multiple simultaneous downloads are supported, then the queue master 1620 can request multiple URL download requests to the download manager 1215. If not, then the queue master 1620 requests URL downloads one at a time.
  • Download Manager Figure 17 is a block diagram of the download manager 1215.
  • the download manager 1215 comprises a protocol handler 1705, a queued links downloader 1710, an auto refresh manager 1715, a favorites update fetcher 1720, a user profile uploader 1725, an ad fetcher 1730, an upgrade downloader 1735, a ticker data downloader 1740 and various interfaces to other modules.
  • the download manager 1215 is preferably a multi-threaded design, wherein the components of the download manager 1215 are COM threads running in parallel and communicating with each other utilizing a mechanism such as WINDOWS (TM) messaging. Synchronization of threads, where necessary, can be accomplished using synchronization objects such as critical sections.
  • the download manager 1215 preferably uses hash tables and maps to optimize performance.
  • the protocol handler 1705 communicates with the computer network to which the client computer 120 is connected.
  • the protocol handler 1705 preferably contains a HTTP handler 1745, a S-HTTP (secure HTTP) handler 1750 and an FTP handler 1755.
  • Other protocol handlers are possible.
  • the protocol handler 1705 can include an ETHERNET (TM) handler.
  • TM ETHERNET
  • a new instance of the protocol handler 1705 can be invoked to upload or download any link or resource.
  • Each instance of the protocol handler 1705 shares the same Internet session object, which exists until the browser enhancement 263 shuts down.
  • the HTTP handler 1745 communicates with a server 110 by sending and receiving HTTP headers.
  • the HTTP handler 1745 preferably uses MFC (MICROSOFT (TM) foundation class) wrappers or Internet classes over WENTNET (TM) APIs (APIs for developing web-based applications) for accessing the Internet.
  • the HTTP handler 1745 includes a HTML parser 1760 and a cookie manager 1765.
  • the HTML parser 1760 parses downloaded links to determine any further resources that need to be downloaded.
  • the HTML parser 1760 also preferably converts links from relative to absolute URLs.
  • An absolute URL is a complete network path, such as "http://www.asdfghjkl.com images/hello.jpg", whereas a relative URL would be "/image/hello.jpg”.
  • the cookie manager 1765 handles all cookie transactions occurring in the HTTP protocol.
  • the cookie manager 1765 gets and sets cookies for a particular URL. Whenever cookies need to be sent to a server 110, the cookie manager 1765 extracts them from the browser 260. Upon receipt of a cookie, the cookie manager 1765 writes it to the appropriate browser 260 cookie file.
  • the S-HTTP handler 1750 is responsible for downloading and uploading over the S- HTTP protocol.
  • the S-HTTP handler 1750 is similar to the HTTP handler 1765 in all respects except for connection establishment and object requests, which are secured.
  • the FTP handler 1755 is responsible for downloading data according to the FTP protocol.
  • the FTP handler 1755 is preferably implemented using MFC Internet classes.
  • the queued links downloader 1710 is responsible for downloading D&D-ed links.
  • the queued links downloader 1710 communicates with the queue manager 1210 via a queue manager interface 1770.
  • the queue manager 1210 requests the queued links downloader 1710 to download the link and its related resources, if any, from the relevant server 110.
  • the queued links downloader 1710 forwards the request to the appropriate protocol handler.
  • the queued links downloader 1710 notifies the user interface 1205 via a Ul (user interface) interface 1775.
  • the auto refresh manager 1715 schedules downloads for refreshing or updating queued URLs in the cache 266.
  • the auto refresh manager 1715 requests the appropriate protocol handler to check if a URL has expired on its hosting server 110. A URL is said to have expired if it is no longer posted, that is, no longer present on the server 110. If the URL has not expired and it has been modified since it was last downloaded, the auto refresh manager 1715 requests the appropriate protocol handler to download the URL.
  • the auto refresh manager 1715 notifies the user interface 1205 of the refresh status of the URL, preferably by firing an ACTIVEX (TM) event via the Ul interface 1775.
  • TM ACTIVEX
  • the user profile uploader 1725 is responsible for uploading user profile information to the advertising server 1140 or a separate profiling server 1130.
  • the user profile uploader 1725 preferably requests the HTTP handler 1745, rather than the FTP handler 1745, to upload profile information to facilitate downloads from users behind an FTP blocking firewall.
  • the user profile uploader 1725 interfaces with the user interface 1205 via the Ul interface 1775.
  • the user interface 1205 contains valuable user information, such as D&D-ed links.
  • the ad fetcher 1730 is responsible for downloading advertisements from the advertising server 1140. Advertisements are fetched in blocks, as explained above in relation to Figure 14.
  • the ad fetcher 1730 utilizes an ad manager interface 1785 to communicate with the advertisement manager 1260, which specifies the block size to be used by the ad fetcher 1730.
  • the block size is a parameter as part of a fetch request sent from the advertisement manager 1260 to the ad fetcher 1730.
  • the ad fetcher 1730 preferably forwards the requests to the HTTP handler 1745 to avoid blockage by an FTP firewall.
  • the ad fetcher 1730 raises an event flag for the advertisement manager 1260.
  • the upgrade downloader 1735 is responsible for upgrading the browser enhancement 263 software. To perform an upgrade, the upgrade downloader 1735 downloads setup and upgrade files from a server 110 on the Internet.
  • the upgrade downloader 1735 preferably invokes the HTTP handler 1745 to do this task.
  • the upgrade downloader 1735 also sets a flag for sensitive checking by the HTTP handler 1745 and raises an error event if any error is encountered, because even a minor corruption in a software file can completely destroy the integrity of the software.
  • the upgrade downloader 1735 is directed by the upgrade manager 1245 via a upgrade manager interface 1790.
  • the ticker data downloader 1740 requests data from one or more ticker data servers 1150 for display on the ticker area 440.
  • the downloading of ticker data is performed in a conventional way and is scheduled in accordance with a prioritization algorithm described in a subsequent section.
  • 4 Storage Manager Figure 18 is a block diagram of the storage manager 1220 and the cache 266.
  • the storage manager 1220 comprises a storage module 1810, aretrieval module 1820, a deletion module 1830 and a synchronization module 1840.
  • the storage manager maintains a separate cache directory for each user.
  • the preferred cache path for a given user takes the following form: [installation directory] : " ⁇ Users ⁇ ” : [operating system user name] : " ⁇ ” : [browser enhancement 263 user name] : " ⁇ Cache”.
  • the storage module 1810 stores all D&D-ed links, related resources and other cached objects for a given user in this directory.
  • the storage module 1810 creates a new subdirectory within this directory for each link and creates unique identifiers (128 digit hexadecimal numbers in a preferred embodiment) to name the subdirectories and their constituent files.
  • the retrieval module 1820 references these unique identifiers to read the cache 266 whenever necessary (e.g., to display a cached web page selected from the list area 505).
  • the deletion module 1830 is preferably a separate thread that is invoked to delete files from the cache 266. When a particular object is to be deleted from the cache, the deletion module 1830 preferably deletes all associated resources as well as any copies of the same object that the user has created in the tree structured cache.
  • the synchronization module 1840 is also preferably a separate thread.
  • the synchronization module 1840 "synchronizes" folders in the cache 266 in the sense that it removes unreferenced files, which might exist due to indeterminate errors, incomplete downloads, deletion of certain files and other reasons.
  • the synchronization module 1840 is preferably invoked periodically at specific intervals to detect and remove such unreferenced files. 5.
  • the user profiling module 1225 collects limited information about users of the browser enhancement 263. The information is collected on a per user basis and maintained separately for each user. This information is uploaded to the advertising server 1140 or a separate profiling server 1130 via the user profile uploader 1725, as described above. Preferred information fields and formats for their packaging and transport are described below.
  • the user profiling module 1225 preferably collects two types of information about users of the browser enhancement 263.
  • static information is collected.
  • This static information comprises demographic and personal information about the user.
  • dynamic information about a user's web surfing is collected.
  • the static information is preferably collected in a single file and contains information specific to each user, such as, for example, city, state, country and zip code of residence, age, gender, user ID and domain.
  • the user ID is an anonymous identifier unique to the user.
  • Other items of information can also be included in the static information, but this information is preferably limited to data that does not personally identify the user, so as not to offend privacy concerns of users.
  • This static user information is entered by the user through a standard dialog box.
  • the registration information is packaged in an ASCII text file that consists of a single record (i.e., line) of predetermined fields in a predetermined order. Fields are preferably delimited with a predetermined delimiting character, such as a pipe "I", and each field is preferably introduced by a predetermined key tag.
  • Figure 19a is a registration record format table 1910, and an example of a registration record 1920 in accordance with this format is shown in Figure 19b.
  • the user corresponding to the registration record 1920 resides in Boston, Massachusetts, USA; accesses the Internet from the domain twunk.cmgi.com; and has not specified his or her gender or age, those fields not having values associated with them.
  • the registration record 1920 is stored by itself in a file on the user's client computer 120.
  • the filename of this file is unique and is preferably based on a timestamp and the user ' s distinct ID.
  • This file is uploaded using HTTP to the advertising server 1140 or an intermediary user profiling server 1130.
  • the registration information is typically static in the vast majority of cases; however, this need not be so.
  • the browser enhancement 263 preferably uploads the registration file periodically, such as every 60 days, for example, or whenever the user updates the data.
  • a user may alter the city, state, country and/or zip code fields of the registration data when the user travels to another location, so that the user can receive advertisements more appropriate and useful for the user's temporary locale.
  • the browser enhancement 263 preferably collects and uploads dynamic information about the user's web surfing. More specifically, the user profiling module 1225 collects and uploads information garnered from the queue data structure maintained by the queue manager 1210 and favorites information from the auto refresh manager 1230. Three types of dynamic user profile information is uploaded: (1) D&D-ed URLs, (2) viewed URLs and (3) URLs designated for automatic refreshing. Each category represents valuable information about a user for different reasons .
  • Favorite URLs can represent strong, long-term interests of the user. Viewed URLs can represent interests that the user has held, as a historical matter and perhaps again in the future.
  • D&D-ed URLs are a superset of viewed URLs.
  • URLs in the first category but not the second are especially valuable in that they represent with very high likelihood present interests that have not yet extinguished.
  • D&D-ed but not yet viewed URLs can be the basis for nearly certain predictions about the user' s web browsing in the very near term. These predictions can be used to perform non-historical profiling of users. As an example, consider a user who D&Ds links to various web pages concerning certain models of cars.
  • the user profile module 1225 would upload this information as D&D-ed but not viewed URLs to the advertising server 1140, which could respond by sending to the user advertisements for the same or similar models of cars, nearby dealerships of such cars (determined in combination with the geographic information in the static registration data), pertinent car accessories, financing services, insurance brokers, model comparison services, etc.
  • the user profile module 412 preferably collects the dynamic user profile information in three types of files - one for each of the three categories listed above. Like the user registration file, each dynamic user profile file is named uniquely for each user, preferably based on a timestamp and the user' s distinct local cookie.
  • the format of these three types of files is preferably an identical format of a single record of predetermined fields in a predetermined order delimited with a pipe "
  • Figure 20a shows an example of the preceding format in a dynamic user record format table 2010.
  • Figure 20b shows an example of a dynamic user record 2020 in accordance with this format shown in Figure 20b.
  • the user profile module 1225 creates three files (one for each category of URLs) for the URLs in the queue visually depicted in the list area 505. Each files contains one or more records like the dynamic user record 2020. If a particular URL falls into multiple categories, then identical records for that URL will be in two or more of the three files.
  • the dynamic user profile files are preferably uploaded as soon as possible after any change.
  • the user profile files can be uploaded periodically, such as, for example, every thirty minutes of active use or as often as available bandwidth allows.
  • the user profile module 1225 optionally encrypts the user profile files (both static and dynamic) before uploading. Uploading is preferably accomplished using the HTTP protocol and is made to appear as if originating from a browser.
  • the user profile information is received by the advertising server 1140 directly or indirectly. In one mode of operation, the user profile files are sent directly to one or more ad servers 1140, which process the data so as to determine optimal advertisements for the user.
  • Known algorithms for this processing involve scoring the data across various categories, weighting the data and/or scores so as to arrive at a quantitative result for each of the various advertisements in a warehouse of available advertisements to send the user.
  • the user profile files are sent to an intermediary user profiling server 1130, which forwards the information to one or more advertisement servers 1140.
  • the intermediary user profiling server 1130 may manipulate the form of the user profile data to suit different data formatting requirements of different ad servers 1140.
  • the user profiling server 1130 and/or the advertising server 1140 can also archive the user profile data for later use.
  • Auto Refresh Manager The auto refresh manager is responsible for maintaining the local cache copies of a user's automatically updated favorite web sites.
  • the auto refresh manager 1230 communicates with the user interface 1205 to accept a user ' s designation of his or her favorite sites for automatic refreshing.
  • the auto refresh manager 1230 also interfaces with the download manager 1215 and the scheduler 1235 to download updated versions of these favorite web sites, when necessary.
  • the auto refresh manager 1230 implements an algorithm described in detail in a subsequent section for determining when updates are necessary. 7.
  • Scheduler The scheduler 1235 works in cooperation with the download manager 1215 to schedule communication activity with the computer network to which the client computer 120 is connected.
  • the scheduler 1235 prioritizes communication activity, including the use of "idle" time, on the connection to the computer network among the various demands for bandwidth. These demands include primary (i.e., foreground) downloads from the browser 260 and secondary (i.e.
  • the scheduler 1235 implements a prioritizing algorithm (described in detail in subsequent section rV(D)) to resolve these potentially competing needs; in other words, the scheduler 1235 is a priority resolver.
  • the scheduler 1235 gives top priority to primary downloads. Time not consumed by a primary download may be thought of as "idle" time.
  • idle time may be large blocks of unused time, such as when a web page is being read, or small temporal interstices between primary use of the bandwidth when it likely appears to be in use from the user's perspective.
  • the scheduler 1235 prioritizes the processes that consume communication bandwidth, according to the method described in section IV(D) below.
  • the scheduler 1235 manages time utilization directly by detecting idle time and directing a background process to activate during a detected idle time. 8. Upgrade Manager The upgrade manager 1245 is responsible for upgrading the browser enhancement 263 software. The upgrade manager can periodically prompt an upgrade server 110 to check on the availability of an upgrade.
  • Activation Manager Figure 21 is a block diagram of the activation manager 1250.
  • the activation manager 1250 is responsible for activating the browser enhancement 263.
  • the browser enhancement 263 can preferably be activated in two ways — so called "bidirectional launching.” First, the browser enhancement 263 can be activated by a user just like any other computer program. This mode of activation is determined by the operating system of the client computer 120.
  • a user would activate the browser enhancement 263 by double-clicking on an appropriate icon or choosing an appropriate choice from a menu (such as from the start bar).
  • a browser detection module 2110 tests whether an instance of the web browser 260 is running, and, if not, a browser launcher 2120 launches one.
  • a user launches the web browser 260, and launching of the web browser 260 initiates the browser enhancement 263.
  • the second mode of activation is made possible, by the browser detection module 2120 running in the background of the computer 120 since boot up.
  • the browser detection module 2120 tests for the presence of an instance of a web browser 260, in accordance with an algorithm described in greater detail below.
  • the browser launcher 2120 Upon detection of a web browser 260, the browser launcher 2120 begins the browser enhancement 263. Bidirectional launching ensures that the web browser 260 and the browser enhancement 263 run together regardless of which one starts first. 10. Data Persistence & Recovery Module Because the integrity of queued data is very important to a user, the browser enhancement 263 preferably safeguards this data from unexpected crashes.
  • the data persistence and recovery module 1255 which is shown in Figure 22, performs this functionality. Two mechanisms are preferably utilized. First, an auto queue save module 2210 at regular intervals backs-up the current state of the queued links and objects (i.e., the current state of the list area 505) , creating a recovery file 2220.
  • a transaction recorder 2230 records list area transaction (e.g., D&D operations, deletions, moves, copies, viewings, etc.) in a transaction log 2240.
  • a recovery module 2250 reads the recovery file 2220 and the transaction log 2240 to recreate the state of the list area 505 just before the crash.
  • the recovery file 2220 by itself may be insufficient to bring the list area 505 back to its most recent pre-crash state, depending upon the timing of execution of the auto queue save module 2210.
  • the recovery module reads the transaction log 2240 to determine if any operations to the list area 505 were performed subsequent to the last write by the auto queue save module 2210, and, if so, applies those operations to the contents of the recovery file 2220. 11.
  • the advertisement manager 1260 works with the download manager 1215 and the ad rotator 1330 ofthe user interface 1205 to deliver advertising to the user via the ad display area 420.
  • the advertisement manager 1260 provides one or more default advertisements in the block storage 1430 ofthe ad rotator 1330.
  • a single advertisement banner ofthe provider of the browser enhancement software may be the default advertisement.
  • the default advertisement(s) can be hard coded into the browser enhancement 263 or downloaded upon installation of the browser enhancement 263. The default advertisement is utilized if errors prevent downloading of or access to the downloaded advertisement blocks.
  • the advertisement manager 1260 also detects a campaign identifier (CID) associated with each advertisement and includes the CID as a parameter sent to the advertising server 1140 when a user clicks on an advertisement in the ad display area 505, thus requesting a download of additional information as a primary request.
  • CID campaign identifier
  • the advertising server 1140 preferably stores such CID parameters as a key to keep track of user response statistics.
  • FIG. 23 is a flowchart of the first method 2300.
  • the method 2300 accepts a browser 260 choice from the user. This is accomplished when the user registers or sets up the browser enhancement 263, usually when it is installed or run for the first time.
  • the browser enhancement 263 is begun (2320) per standard program invocation techniques of the operating system.
  • the first method 2300 tests (2330) whether an instance of the chosen browser 260 is running.
  • the testing step 2330 is preferably performed by searching through all active applications for one whose title matches that of the chosen browser 260 from step 2310. In the WINDOWS (TM) operating system, the task manager presents a list of active applications that can be queried. If the testing step 2330 determines that an instance of the chosen browser 260 is running, then nothing more needs to be done. If the testing step 2330 does not detect an instance of the chosen browser 260, then the method 2300 launches (2340) one.
  • a flowchart of a second activation method 2400 is shown in Figure 24. The method 2400 begins with the same first step 2310, accepting a user designation of choice of browser 260.
  • the method 2400 tests (2330) whether an instance of the chosen browser 260 is running. This test is preferably performed the same way in both methods 2300 and 2400. If the testing step 2330 does not detect a browser 260, then the method 2400 enters a polling loop 2440, in which the testing step 2330 is repeated every so often. One desirable polling period is ten seconds, which is approximate to the average delay between activation of a browser 260 and display of its default web page on a typical client computer 10. If, during one of the polling loops 2430, the testing step 2330 detects a browser 260, the method 2400 checks (2450) whether an instance of the browser enhancement 263 is already active.
  • the method 2400 returns to the polling loop 2430. If not, the method 2400 launches (2460) the browser enhancement 263. The launching step 2460 of the second method 2400 triggers the beginning step 2320 in the first method 2300. The method 2400 only launches one instance of the browser enhancement 263 even if multiple instances of the browser 260 are running. After the browser 260 and the browser enhancement 263 is closed (2470), the method 2400 returns to the polling loop 2430.
  • the method 2400 preferably is a low-profile process in terms of CPU load and memory consumption, so that the method 2400 does not adversely impact the performance of other processes on the client computer 120.
  • B. Dragging & Dropping The flowchart in Figure 25 illustrates a D&D process 2500.
  • the process 2500 begins at step 2502 as a current web page is being displayed on the browser GUI 300 and the browser enhancement GUI 400 or 500 "floats" above the window of the browser GUI 300. It is assumed that this web page has embedded therein one or more links, each of which are associated with a different web page.
  • a test is made to determine whether the link is valid. If it is not valid, an error message is displayed to the user at step 2508. If the link is valid, the process 2500 continues to step 2516 to determine if the cache is full.
  • step 2516 determines that the cache is full
  • the process 2500 makes room for the D&D-ed link by deleting (2520) older links.
  • the process 2500 determines that the cache is full if the cache residue falls below a predetermined threshold. If it is necessary to make room for new web pages, queued links and web pages are deleted in the order of the oldest link and associated web pages to the newest link and associated web pages (FIFO) until there is sufficient room in the cache 266 for storage of the object being D&D-ed currently.
  • the "age" of a link for purposes of deleting the oldest link(s) is preferably primarily determined from its last viewing time (i.e., least recently viewed links are deleted first).
  • the download time can be the basis for determining the age of an object.
  • the user can take certain actions to avoid the FIFO turnover of links.
  • the user can directly highlight links to delete from any part of the queue 1605.
  • the user can select from the popup menu 600 an option (not shown) to delete everything in the "Unfiled" folder.
  • the user can increase the size of the cache 266 with the appropriate dialog pane. After determining (2516) whether or not the cache 266 is full and, if so, deleting (2520) old links, the process 2500 checks (2540) whether the link is duplicate of one already in the queue 1605 and whether an option is set to disallow multiple copies of links.
  • step 2542 may involve additional processing on the part of the browser enhancement 263 when certain browsers 260, such as pre-INTERNET EXPLORER 4.0 (TM) browsers, are used and the link is an image map. Details of the necessary processing in this case are covered in the application serial number 08/988,347, already cited above.
  • C. Queued Link Management Figure 26 is a flowchart of a process 2600 for managing queued links stored in the queue 1605. The process 2600 begins when the browser enhancement GUI 251 is maximized (164).
  • the process 2600 then reads (2604) the queue 1605 and displays (2608) the tree view of the queue 1605 in the list area 505.
  • the process 2600 determines (2612) the download status of the each link in the queue 1605. This status is preferably displayed in the list area 505as a colored circle to the left of each queued link. Collective download status (downloading if any individual link is presently downloading in progress) is also preferably determined and shown.
  • the process 2600 next awaits input from the user at step 2616. Jf there is no user input, then the process 2600 loops back to the reading step 2604. In the absence of user input, this loop preferably repeats approximately every 19 seconds.
  • the process 2600 again determines (2620) the download status of the selected link. If the selected link has not yet been downloaded (i.e., amber or red status), then the process 2600 displays (2624) a message indicating that the user should drag the link into the browser GUI 300 if she wishes to see the link. Doing so creates a primary connection to the web server 110 of the selected queued link and displays (2628) the web page in the browser GUI 300.
  • the process 2600 can immediately display the text portion of the web page while waiting for graphics to continue to download.
  • the priority scheme is preferably as follows in descending order of priority: (1) Primary download request issued by the browser 260; (2) Background download request activated by D&D-ing operation; (3) Advertising banner downloads from the advertising server 1140; (4) Auto refreshing of cached links; (5) User profile information uploaded to the advertising server 1140; (6) Ticker data downloads; and (7) Downloads of upgrades to the browser enhancement 263.
  • For each level of priority one or more threads perform the indicated communication activity. The relative priorities of these threads is managed.
  • multiple programs or threads appear to execute simultaneously when, in fact, each program shares the microprocessor 221 and other computer resources by repeatedly executing briefly then suspending while other threads execute, as is well known in the art.
  • FIG 27A depicts the various communication threads and their relative priorities. At the top priority (priority 1) are some number of threads for foreground communication activity by the browser 260. In one embodiment, the browser 260 alone is responsible for these threads. In another embodiment, the browser enhancement 263 interrupts communication threads from the browser 260 and sets their priority explicitly. The browser 260 is idle with regard to communication when no priority 1 threads exist or when those threads are not actively being executed in the client computer's 120 multitasking operating system. The browser enhancement 263 spawns the threads at priority levels 2-7 (shown in pattern in Figure 27 A).
  • the browser enhancement 263 distributes its share of the client computer's 120 active execution time among the various threads it spawns.
  • priority level 2 are some number of threads for downloading D&D-ed links, in accordance with the process illustrated in Figure 27B and described below.
  • priority levels 3-7 is no more than a single thread for downloading advertisements, downloading refreshed web pages (and testing for the same), uploading user profile information, downloading ticker data and downloading software upgrades, respectively.
  • Figure 27B is a flowchart of process 2700 for downloading D&D-ed links. The process 2700 reads through the queue 1605 of D&D-ed objects and spawns threads to download links.
  • the process 2700 begins by reading (2705) through the queue 1605 to the next "red” D&D-ed link (i.e., D&D-ed but not yet begun to be downloaded). Preferably the reading step is performed in order from least recently D&D-ed to most recently D&D-ed.
  • the process 2700 inquires (2710) as to the number of active (i.e. , "amber") links and compares this number to a predetermined threshold N, which is a parameter derived from the type of connection specified by the user or automatically detected by the browser enhancement 263.
  • up to M+l threads may be active at once to download a single link, but no more than M actively use the communication bandwidth together.
  • a thread completes its task, it automatically dies.
  • the process 2700 loops back to the reading step 2705, which cycles through the queue 1650.
  • the use of the communication medium is managed directly — rather than the threads that use the communication channel, as described above. Under this approach, communication activity of a given priority level continues until a request is made by a higher priority item, in which case the current communication stops and the higher priority communication is given access to the channel. When the higher priority data exchange is completed, the lower priority data exchange resumes.
  • the process 2750 begins, as does the process 2700, by reading (2705) through the queue 1605 to the next "red" D&D-ed link. When the next "red" D&D-ed link is found, the process 2750 tests (2755) whether the channel is busy with a higher priority use. Exemplary mechanisms for performing the testing step 2755 are detecting active processes associated with the channel and monitoring data transmitted on the channel. If the channel is busy, the process 2750 suspends (2760) and continues testing (2755) whether the channel is busy. If and when the channel is not busy, the process 2750 connects (2765) to the requested server. After connection, the process 2750 again tests (2770) whether the channel is still available.
  • the process 2750 suspends (2775) and continues testing (2770). If the channel is still available, the process 2750 receives (2780) a block of one or more packets of data from the requested server 110. After receipt of each block, the process 2750 again tests (2785) whether the channel is still available. Jf the channel is busy, communication is suspended (2790) and the process 2750 repeatedly tests (2785) whether the channel is busy. Jf the channel is still available after receipt of a block, the process tests (2794) whether the block just transmitted is the end of the requested data.
  • the process 2750 repeats the receiving step 2780, the busy testing step 2785 and the end testing step 2794 in a loop. After receipt of the last block of data, the process 2750 releases (2798) the channel and loops back to the reading step 2705.
  • the process 2750 for downloading a queued link is representative of the processes for other types of communication. On a given channel, communication activity continues until a request is made by a higher priority, in which case the current communication stops and the higher priority communication is given access to the channel. If multiple communication channels are available, then the process 2750 runs concurrently for each communication channel.
  • the browser enhancement 263 can provide multiple communication channels if the connection from the client computer 120 to the computer network has sufficient bandwidth.
  • the modem 50 is a DSL modem or cable modem
  • its single physical channel can be divided into several logical channels - perhaps as many as ten, leaving at least one channel for each category of service.
  • the number of channels in this alternative embodiment is like the number of simultaneous threads in the preferred embodiment.
  • E. Refreshing Figure 28 is a flowchart of an automatic refreshing method 2800.
  • the method 2800 determines when a queued web page that a user has designated for automatic refreshing should be refreshed.
  • the method 2800 is periodically invoked for each queued web page so designated.
  • the method 2800 begins by determining (2805) the date and time (or date-time stamp ⁇ DTS) of the last download of the web page.
  • the method 2800 tests (2810) whether the web page has expired on its hosting web server 110. If the web page is expired, i.e., if it no longer exists on the server 110, then the method 2800 ends. If the web page is not expired, then the method 2800 generally attempts to determine the age (or at least the relative) age of the web page on the server 110. To do so, the method 2800 preferably issues (2815) a head request to the server 110.
  • a typical response to the head request includes a "last modified" field or DTS. However, not every web server 110 provides this information.
  • the method 2800 tests (2820) whether the head request successfully returned a "last modified” DTS (LMDTS), and if so reads (2825) this value from the returned header.
  • the method 2800 compares (2830) the last download DTS (LDDTS) to the LMDTS. If the web page has not been modified since it was last downloaded, then the method 2800 ends. Jf the web page has been modified since it was last downloaded, then the method 2800 schedules (2835) downloading of the web page, preferably in accordance with the priority sensitive downloading process 2700 for the auto refreshing channel.
  • the method 2800 executes a first fallback strategy, which is to read (2840) the "if modified since" ( S) field on the hosting web server 110.
  • the method 2800 tests (2845) whether the IMS field was successfully read. If so, the method 2800 surrogates (2850) the IMS value for the LM DTS and continues to the DTS comparison step 2830. If the testing step 2845 determines that the first fallback strategy is not successful, then the method 2800 executes a second fallback strategy, which is to get (2855) the text only ofthe web page.
  • the method 2800 compares (2860) the size ofthe text just retrieved to the size of the cached text.
  • the method 2800 assumes that the web page on the server is not different from the web page already cached web, and the method 2800 ends. If the sizes of these texts differ, then the method 2800 assumes that the web page has been changed, and the method 2800 continues to the DTS download scheduling step 2835.
  • the page expiration testing step 2810 is optional; if the page has expired, any attempt to refresh it will fail, leaving the old copy in the cache 266.
  • the order of the LDDTS determining step 2805 and the page expiration testing step 2810 can be reversed. Also, the LDDTS determining step 2805 can be performed just before the DTS comparison step 2830.
  • the LDDTS determining step 2805 can be performed simultaneously with other steps in a separate parallel thread.
  • the three the techniques for determining the relative age of the web page on the server 110 i.e., head request, reading the IMS field or size comparison of text only
  • the three the techniques for determining the relative age of the web page on the server 110 can be performed as options in a different order and/or one or two of the techniques can be omitted from the method 2800 entirely.
  • F. Cache Capacity Management comprises two algorithms. The first algorithm is a test for determining when the cache 266 is full. The second algorithm is an automatic deletion algorithm for clearing storage space in the cache 266.
  • the cache 266 is declared to be "full" when the current cache level is within a predetermined amount of the cache size.
  • the current cache level is the total storage space occupied by cached content.
  • the predetermined amount is a parameter CAPACrTY_THRESHOLD.
  • the test for determining whether the cache 266 is full is the following inequality: current cache level ⁇ cache size - CAPACITY_THRESHOLD. If the preceding inequality is true, then the cache 266 is considered full; otherwise, the cache is considered not to be full. This calculation and comparison is preferably performed by the cache full determination step 2516 in the D&D process 2500.
  • FIG. 29 is a flowchart of an automatic deletion algorithm 2900 for clearing storage space in the cache 266.
  • the automatic deletion algorithm 2900 is preferably called by the step 2520 of the D&D process 2500.
  • the algorithm 2900 begins by generating (2910) a list of cached links from the queue 1605.
  • the algorithm 2900 next sorts (2920) the cached links in order from least recently viewed (LRV) to most recently viewed (MRV).
  • the algorithm 2900 then iterates through this list using an index counter I, which is initialized (2930) to be one.
  • the algorithm 2900 deletes (2940) all files associated with the I-th link in the sorted list of flagged queued links. Then, the algorithm 2900 computes (2950) the current cache fill level, preferably by totaling the size of each file in the cache 266. Next, the algorithm 2900 determines (2960) whether sufficient free space is available in the cache 266. The sufficient space determination step 2960 is preferably accomplished by comparing the free space, which is the cache size minus the current cache fill level, to a parameter NORM_RESrDUE. Jf the free space exceeds NORM_RESJDUE, then sufficient space has been cleared and the algorithm 2900 ends.
  • FIG. 30 is a flowchart of a user profiling method 3000 according to one embodiment of the invention.
  • the profiling method 3000 can be performed on a per client computer 120 basis, it is preferably done on a per user basis, where multiple users potentially share the same browser enhancement 263.
  • the user profiling method 3000 begins when an individual user logs on at step 3010.
  • the method 3000 then tests (3020) whether the user's registration data has been uploaded within a predetermined period of time, such as sixty days. If not (including the case when the user is logging on for the first time), then the registration data might be stale, so the method 3000 prompts (3025) the user to update (or create) his/her registration data. The method 3000 then tests (3030) whether the registration data has been modified (or created). If so, then the method 3000 uploads (3040) the registration data, such as the registration record 1920.
  • a predetermined period of time such as sixty days. If not (including the case when the user is logging on for the first time), then the registration data might be stale, so the method 3000 prompts (3025) the user to update (or create) his/her registration data.
  • the method 3000 tests (3030) whether the registration data has been modified (or created). If so, then the method 3000 uploads (3040) the registration data, such as the registration record 1920.
  • the method 3000 accepts (3050) D&D operations and thereafter uploads (3060) user surfing information, such as the dynamic user profile record 2020, that is based on the D&D-ed objects or cookies.
  • the method 3000 is keyed to only D&D objects that are Internet URLs or links.
  • the method 3000 is not necessarily so limited; general objects, such as documents, spreadsheets or other D&D-ed files could form the basis for user profile information (ignoring privacy concerns for the sake of technical disclosure in this document); for example, D&D-ing of a LISP source code file provides valuable information about the user to marketers of LISP compilers, and D&D-ing of a file containing numerous occurrences ofthe term "skateboard" provides valuable information about the user to marketers of skateboards and skateboard accessories.
  • the method 3000 continues by testing (3070) whether the browser enhancement 263 is shut down, in which case the method 3000 terminates, or not, in which case the method loops back to the stale testing step 3020. H.
  • Advertising Figure 31 is a flowchart of a user segregating targeted advertising method 3100 according to one embodiment of the invention.
  • the method 3100 first gathers (3110) user information segregated by users. This information may be slow changing (i.e., "static") demographic/personal information or information based on dynamic web-surfing (e.g., D&D- ing) behavior.
  • the information is segregated by user, not client computer 120, even when multiple users share the same client 120. Preferably, this is accomplished by a user' s logging in individually as they use the browser enhancement 263, which maintains separate queued and cached files for each user.
  • the method 3100 optionally processes (3120) the user information, if necessary.
  • the processing step 3120 occurs at an intermediate server, such as the user profiling server 1130, though other locations, such as the advertising server 1140 or the client computer 120, are feasible.
  • the method 3100 selects (3130), on the basis of the gathered and possibly processed information, one or more advertisements targeted to the individual user. Techniques for performing the selecting step 3130 are known to those skilled in the art.
  • the method displays (3140) the advertisements to the targeted user individually.
  • the display is in the ad display area 420 of the browser enhancement 263 GUI 400 of 500, although other display areas, such as separate pop-up windows, are possible.
  • the user specific display step 3140 is made possible by the fact that the browser enhancement 263 (or its variations) is aware of which actual user is using the software at any time.
  • the method 3100 can measure (3150) the user ' s response to the advertisements, such as if and/or when the user clicks on the advertisement in the ad display area 420.
  • Figure 32 is a flowchart of a targeted advertising method 3200 based on future viewing intentions, according to an embodiment of the invention. The method 3200 does not target advertisements on the basis of merely historical web page viewing behavior of a user.
  • the method 3200 preferably involves actions at the user's client computer 120, as shown on the left side of Figure 32, and actions at the advertising server 1140, as shown on the right side of Figure 32.
  • the method 3200 waits in a loop, detecting (3210) D&D operations by the user at the client computer 120.
  • the method 3200 uploads (3220) to the advertising server 1140 information regarding the D&D operation.
  • the uploading step 3220 may be direct or indirect, such as via the user profiling server 1130.
  • the D&D-ed information is received (3230), and one or more advertisements are selected (3240) at least partially on the basis of this information.
  • the advertising server 1140 downloads (3250) the selected advertisement(s) to the client computer 120, which receives (3260) and optionally stores the advertisement(s). Sometime thereafter, the method 3200 displays (3270) the advertisement(s) to the user. Preferably, the steps 3220- 3270 are performed quickly after a D&D operation is detected (3210), so that the displayed advertisement is a timely response to the D&D operation, which is a indicator of the user' s future viewing intentions and a substantially certain indicator of the user' s future viewing behavior. In other words, the targeted advertisement is preferably displayed (3270) before these future intentions have been fulfilled.
  • the displaying step 3270 can be in accordance with a schedule for display of multiple advertisements, including the targeted advertisement(s) selected in step 3240 and possibly other targeted or untargeted advertisements. Various possibilities exist for controlling the timing of the displaying step 3270.
  • all advertisements targeted on the basis of D&D-ed but unviewed objects can be rotated for display, and once a D&D-ed object is viewed by the user (or some finite time thereafter), the corresponding targeted advertisements are deleted from the rotation. In this way, the targeted advertisements are displayed (3270) when they are likely to be the most valuable: before the user's curiosity in that subject has been satisfied.
  • an advertisement targeted on the basis of a D&D-ed object can be displayed only while the user is viewing that D&D-ed object.
  • the client computer stores a set (or "warehouse") of advertisements locally.
  • This set of advertisements can be updated from time to time by communication with the advertising server 1140.
  • the advertisement selecting step 3240 is performed locally at the client computer 3240, in direct response to the detection (3210) of a D&D operation by the user.
  • An advantage of this alternative process is a faster response time.
  • a disadvantage of this alternative process is that the size and number of advertisements in the local warehouse is more limited than possible in a typical advertising server 1140. In a hybrid local/server approach, some combination of local and server advertisement storage is utilized.
  • a user with multiple computers may have the browser enhancement 263 on two or more client computers 120.
  • the user may have a desktop personal computer at his office, another at his home, an Internet-enabled television terminal and a PDA with Internet connectivity.
  • Installed on all four of these computers can be an instance of the browser enhancement 263.
  • the user can use each instance of the browser enhancement 263 with the same user ID.
  • the user profiling server 1130 forms a profile of the user based on the user' s use of all four computers. In this way, the profile is a more comprehensive and accurate representation of the user' s overall Internet usage. This joint profiling of a user across several different platforms avoids the problem of partial profiles, which may be skewed if the user utilizes the Internet differently at his home from at his office, as is often the case.
  • the user can access the same queue 1605 with each instance of the browser enhancement 263.
  • the user typically modifies the queue 1605 by D&D operations.
  • the queue 1605 is a data structure stored in the client computer 120 running the active instance of the browser enhancement 263. Recall that the queue 1605 is a collection of URLs, shortcuts and other pointers; the queue 1605 typically does not store content itself, but rather points to content, a copy of which is stored in the cache 266 of the client computer 120. The queue 1605 therefore does not occupy a large amount of memory.
  • the queue 1605 in one form or another, is also regularly uploaded to the user profiling server 1130.
  • the final form of the queue 1605 is preferably uploaded again to the user profiling server.
  • Storage ofthe queue 1605 on a server, such as the user profiling server 1130, enables synchronization of multiple instances of the browser enhancement 263.
  • the activation procedure preferably uploads from the user profiling server 1130 the copy of the queue 1605 stored there.
  • the browser enhancement 263 compares the uploaded queue 1605 with the last known state of the queue 1605 on the client computer 120 to determine the download status of queue 1605 entries on that client computer 120.
  • URLs D&D-ed during the previous session on the previous client computer 120 initially have an amber download status on the current client computer 120.
  • the browser enhancement 263 can then utilize idle time on the current client computer 120 to populate the local cache 266 with the web page content at these URLs. In this way, the user can access on any computer URLs D&D-ed on any other computer.
  • This feature provides seamless use of the browser enhancement 263 across various hardware platforms. Many variations of multi-computer interoperability are possible.
  • the user profiling server 1130 is a convenient server for queue 1605 storage and synchronization because the user profiling server 1130 collects that information anyway, a separate server could be used in place of the user profiling server 1130 for this function.
  • the user can force synchronization at any time, not just at initialization.
  • synchronization is optional in its entirety or on a link-by-link basis.
  • one particular instance of the browser enhancement 263 can be designated as the master, so that only its queue 1605 is uploaded to a server, and all other instances of the browser enhancement are synchronized to the master.

Abstract

In a first form of the invention, computer instructions perform a method of enhanced downloading of information from a computer network to a computer (120) operated by a user. The computer (120) sometimes conventionally downloads information from the computer network and sometimes does not conventionally download information from the computer network, thereby causing one or more idle times. The method accepts a selection of a user defined set of one of more pieces of additional information from the computer network during at least one of more idle times. Another form of the invention determines a profile of the user at least partially on the basis of the user selections. The second method accepts data relating to the user's downloading of information from the computer network and determines a profile of the user, independent of the one of more other users.

Description

ENHANCED DOWNLOADING FROM A COMPUTER NETWORK AND PROFILING OF A USER OF A COMPUTER NETWORK
RELATED APPLICATIONS This application claims the priority of the following earlier-filed United States patent applications: provisional serial number 60/206,958, entitled "Article for Background Downloading of Information from a Computer Network," filed May 25, 2000; serial number 09/628,026, entitled "Article For Background Downloading of Information From a Computer Network," filed July 28, 2000; serial number 09/628,027, entitled "Individually Profiling of a User of a Computer Network," filed July 28, 2000; and serial number 09/628,029, entitled "Profiling of a User of a Computer Network Based on Intended Future Behavior," filed July 28, 2000. All of the preceding patent applications are hereby incorporated by reference. United States patent application serial number 08/988,347, entitled "Method of Background Downloading of Information from a Computer Network," filed December 10, 1997, is also incorporated herein by reference.
FIELD OF THE INVENTION This invention relates generally to computer networks, such as the worldwide computer network known as the Internet, and more particularly to a computer program for enhanced browsing of content on such computer networks and/or enhanced profiling of users of such computer networks.
BACKGROUND OF THE INVENTION The Internet has seen expansive growth over the past several years, most notably the " user-friendly multimedia portion of this global computer network, known as the world wide web (WWW). This rapid growth has been driven by two general trends. First, the general public is becoming more comfortable with computers and how computers, when linked together, can provide vast amounts of information with the point of a mouse or the stroke of a few keys on a home computer. Second, large companies are attracted to the world wide web as the latest marketing communications forum in which to reach millions of consumers from all over the world with brand new types of database-driven advertising. These two trends have created a perpetual spiral of Internet growth, as more consumers attract more companies, who provide more information and content, which attracts more consumers, and so on. The world wide web section of the Internet is accessed with the use of known client software called a web browser. The term "client" is commonly used to describe the user's computer (although it is sometimes used to refer more specifically to a program or module within the user ' s computer) . All web browsers use a graphical interface to provide for ease of use. The browser allows the user to connect to computers all over the world via the world wide web, which is essentially a collection of so-called "server" computers that utilize the hypertext (or hypermedia) transfer protocol (HTTP). HTTP is a well known protocol that provides users access to files or web pages (consisting of text, graphics, images, video, sound, etc.) using a standard page description language known as hypertext markup language (HTML) or extensible markup language (XML). Using an HTML- or XML-compliant browser, users can access web pages by linking to or specifying the address of a page via its computer address, known as a uniform resource locator (URL). Upon such specification, the browser makes a request to the server identified in the link or address and receives the requested web page. A user by use of a web browser on his or her client computer is said to "surf" through web pages on the Internet. HTML uses so-called "tags," denoted by the angle bracket symbols "< >", with the actual tag between the brackets. Most tags have a beginning section (<tag/>) and an ending section (</tag>) with the slash symbol "/" between. There are numerous link tags in HTML to enable the viewer ofthe document to jump to another place in the same document, to jump to the top of another document, to jump to a specific place in another document, or to create and jump to a remote link (via a new URL) to another server. Links are typically displayed on a web page in color and/or with an underscore. In response to the user's pointing and clicking on a link, the link is said to be "activated" and begins downloading the linked media (e.g., document or audio and/or video). For more details on HTML, the reader is directed to the HTML Reference Manual. Published by Sandia National Laboratories or the HTML Quick Reference, published by the University of Kansas. Each of these publications are incorporated herein by reference. While information is easily available on the internet, it is not without its costs. To connect to the Internet, the use of cables or wiring is generally necessary. The information is transferred from one computer to another along these cables, which, for the vast majority of users, consist of ordinary copper pair telephone wire. Since copper pair wiring was originally constructed to carry analog voice traffic, the transmission of digital information, otherwise known as downloading or uploading, is subject to great delays in which the user is forced to wait for the information to be transferred to their computers for display. This delay can result in a significant waste of users' time, and even money if the transmission is subject to a per- minute Internet connect and/or telephone charges. Per-minute telephone charges for local calls are prevalent throughout the world outside the United States. Even with enhanced communication technology this delay will continue to exist. Digital subscriber line (DSL) technology, cable modems, fiber optic cabling and wireless communications technologies offer increased bandwidth over ordinary copper pair telephone wiring, enabling uploading and/or downloading of digital data at faster rates. However, as communication technology has increased available bandwidth, information content providers, such as those posting web pages, have consumed greater and greater bandwidth. This trend will continue. At the same time, users of the Internet have become increasingly intolerant of delays. For example, 56 kb/s (kilobit per second) modems were perceived by most as being inadequate only a few years after their introduction. All of these factors combine to make clear the fact that bandwidth will always be a scarce commodity and a bottleneck causing delay on the Internet. There will always be a need to utilize available bandwidth more efficiently. In prevalent forms of Internet usage, the downloading of information is inefficiently linked to the viewing of that information. After a browser makes a request to a server to download a web page, for example, there is a time delay during transmission until the web page can be displayed on the user's computer. Once the page is downloaded and displayed, the user then reads the page. Usually, while a user is actively viewing a web page, the connection between the client and the server remains idle. When the connection is terminated, viewing of the information is limited, and the information is typically lost soon thereafter. This coupling of downloading and viewing results in inefficient utilization of both the communication link and the user's time. It is known to use idle time to download information from the Internet in the background. Prevalent forms of background downloading are either non-selective or based on extremely complicated prediction algorithms. An example of the former is the automatic downloading of all links on a currently viewed page. Examples of the latter can be found in U.S. Pat. Nos. 5,802,292 and 5,715,445 It is also known to cache at a client computer information downloaded from the Internet. Most browsers automatically cache the last several web pages that are downloaded. However, known caching suffers from the following limitations: First, known caching is not elective; that is, a user cannot select which information to cache. Second, known caching does not allow users to organize cached content. Third, users cannot control the duration during which information is cached. Successful advertising on the Internet faces a myriad of challenges. Most Internet advertising takes the simple form of placing visual indicia on web pages that a certain percentage of a desirable potential market is expected to download, not unlike television, radio or billboard advertising. What is much more valuable, however, is the promise of targeted advertising to specific users meeting predefined criteria. Targeted advertising on the Internet is generally based on one or both of two sources of information about users: (1) a profile of the user, provided by effort of the user and thereafter maintained statically; and (2) historical surfing patterns, such as maintained in "cookies" files on the user's computer. Both of these techniques are limited; they depend for their success on a high correlation between future behavior and historical facts, such as demographic data or past surfing activities. The second technique has the additional limitation that it cannot respond immediately to past surfing activities, so that during the first hit of a site, when perhaps a particular advertisement would be the most valuable, the targeted advertisement cannot be made. Conventional forms of Internet advertising are troublesome to the user. It is inevitable that users will be exposed to advertisements on the Internet. However, users currently have little or no control over the advertising they receive. Targeted advertising, if used at all, is based upon limited information about a user. Another troublesome aspect of present Internet advertising is that the downloading of advertisements consumes valuable bandwidth at the expense of what the user wants to download. In deed, advertisements are often the first items downloaded, before the content in which the user is actually interested. All of these factors combine to result in the fact that present advertising displaces what the user wants to download with something having little value to the user. Conventional forms of Internet advertising are also limited in their exposure and modes of expression. Exposure to an advertisement is at a user's discretion. Advertisers presently have no capability to control the exposure to their advertisements. Furthermore, bandwidth limitations on the Internet constrain the mode of advertising expression to simple visual indicia. The present mode of Internet usage makes the Internet ill-equipped for motion video or streaming audio presentations - modes of expression to which advertisers' creativity is presently accustomed. Yet another limitation to targeted advertising on the Internet is that known forms of targeted advertising are targeted at a particular computer, not necessarily a particular user. For example, cookies, which are a historical trace of URLs downloaded by a browser, are maintained at the computer level. When several users share a computer, as is the case with most home computers, the cookies on that browser are a jumbled compilation of several users' historical downloading activity. This jumble is almost useless for the purposes of targeting advertisements. As another example, known software that supports multiple screen names for multiple users on the same computer does not link individual screen names to global surfing patterns.
SUMMARY OF THE INVENTION One form of the invention is also a computer readable medium on which is embedded one or more computer programs or computer instructions. In a first respect, the instructions perform a method of enhanced downloading of information from a computer network to a computer operated by a user. The computer sometimes conventionally downloads information from the computer network and sometimes does not conventionally download information from the computer network, thereby causing one or more idle times. The method accepts a selection of a user defined set of one or more pieces of additional information to be downloaded, downloads at least some of the additional information from the computer network during at least one of the idle times, and caches the downloaded additional information. In another respect, the method accepts a selection of a user defined set of one or more pieces of additional information to be downloaded, downloads at least some of the additional information from the computer network during at least one of the idle times, and displays the downloaded additional information at one or more times selected by the user. In yet another respect, the program runs on a computer operated by a user. The computer sometimes conventionally downloads information from the computer network and sometimes does not conventionally download information from the computer network, thereby causing one or more idle times. The program comprises an interface, by which is entered a selection of a user defined set of one or more pieces of additional information to be downloaded. The program also comprises at least one transfer client, connected to the interface, by which at least some of the additional information is requested from the computer network during at least one of the idle times. The program additionally comprises a cache, connected to the transfer client, where the requested additional information is stored for later retrieval. In still another respect, the program comprises an interface and at least one transfer client connected to the interface. Through the interface the user enters a selection of a user defined set of one or more pieces of additional information to be downloaded and user commands for displaying the additional information. By way of the transfer client, at least some of the additional information is requested from the computer network during at least one of the idle times.
/ In another respect, the instructions perform a method of enhanced downloading of information from a computer network to a computer operated by a user. The computer downloads information from the computer network without fully using the connection bandwidth, thereby resulting in unused connection bandwidth. The method accepts a selection of a user defined set of one or more pieces of additional information to be downloaded, downloads at least some of the additional information from the computer network utilizing the unused connection bandwidth, and caches the downloaded additional information. In another respect, the program runs on a computer operated by a user. The computer downloads information from the computer network without fully using the connection bandwidth, thereby resulting in unused connection bandwidth. The program comprises an interface, by which is entered a selection of a user defined set of one or more pieces of additional information to be downloaded. The program also comprises at least one transfer client, connected to the interface, that utilizes the unused bandwidth to download at least some of the additional information from the computer network. The program additionally comprises a cache, connected to the transfer client, where the requested additional information is stored for later retrieval. In another respect, the instructions perform a method of enhanced downloading of information from a computer network to a computer operated by a user. The computer at times executes a conventional downloading thread. The method accepts a selection of a user defined set of one or more pieces of additional information to be downloaded, executes a thread to download at least some of the additional information from the computer network, and caches the downloaded additional information. The thread is distinct from the conventional downloading thread and has a priority lower than the conventional downloading thread. In another respect, the program runs on a computer operated by a user . The computer at times executes a conventional downloading thread. The program comprises an interface, by which is entered a selection of a user defined set of one or more pieces of additional information to be downloaded. The program also comprises at least one transfer client, connected to the interface. The transfer client executes a thread that is distinct from the conventional thread and at a lower priority level. The program additionally comprises a cache, connected to the transfer client, where the requested additional information is stored for later retrieval. Another form of the invention is a method for profiling a user of a computer network. The method accepts one or more user selections relating to information intended to be downloaded from the computer network in the future and determines a profile of the user at least partially on the basis of the user selections . The information intended to be downloaded from the computer network in the future may be downloaded during periods that are idle from conventional downloading. The information intended to be downloaded from the computer network in the future is preferably deterministic information, known with certainty. Optionally, the method transmits additional information, such as advertisements, to the user, wherein the additional information is selected at least partially on the basis of the profile of the user. In a second respect, the invention is an apparatus for use by a user of a computer network. The apparatus comprises a user interface and a network communication client. The user interface accepts one or more user selections relating to information intended to be downloaded from the computer network in the future. The network communication client uploads data derived from the user selections to a destination on the computer network. Preferably, the user interface is a graphical user interface and the information intended to be downloaded in downloaded in the background during idle time. Optionally, an ad rotator is connected to the user interface, and the ad rotator controls displaying of advertisements in the interface, and the advertisements are selected at least in part on the basis of the uploaded derived data. In another respect, the invention is a method for profiling a user of a computer network. The user at times operates a client computer connected to the computer network, but one or more other users also operated the client computer at times. The method accepts data relating to the user's downloading of information from the computer network and determines a profile of the user. The profile is independent of the one or more other users. The downloaded information is preferably downloaded during periods that are idle from conventional downloading. The downloaded information can originate from different computers used by the user. Optionally, the method transmits additional information, such as advertisements, to the user, wherein the additional information is selected at least partially on the basis of the profile of the user. In yet another respect, the method accepts data relating to the user's downloading of information from the computer network and transmits the data to a destination, so that the destination can determine a profile of the user. Again, the profile is independent of the one or more other users. Optionally, the transmitting step further comprises transmitting the data to an intermediary; and transmitting information based on the data to the destination. As another option, the transmitting step further comprises: processing the data to produce the information based on the data. In still another respect, the invention is an apparatus for use by a user of a computer network. The user at times operates a client computer connected to the computer network, but one or more other users also operated the client computer at times. The apparatus comprises a user interface and a network communication client. The user interface accepts one or more user selections relating to downloading of information from the computer network. The network communication client uploads to a destination on the computer network data derived from the user selections and not from any data relating to the one or more other users. Preferably, the user interface is a graphical user interface and the downloaded information is downloaded in the background during idle time. Optionally, an ad rotator is connected to the user interface, and the ad rotator controls displaying of advertisements in the interface, and the advertisements are selected at least in part on the basis of the uploaded derived data. As used herein, the computer network may be of any type, public or private, including for example, a LAN, MAN, WAN or the Internet. The computer network may or may not function according to the client-server model. As used herein, information intended to be downloaded over the network may take many forms, such as hypermedia (e.g., HTML or XML), data files, program files, graphics, text, packaged video and/or audio files (e.g., MPEG or MP3), and streaming audio and/or video. As an example, a piece of information may be an HTML document, as identified by a URL or hyperlink. As used herein, a profile of a user is any collection of information about a user. A profile may include static (e.g., demographic) and/or dynamic information (e.g., surfing activity — past or future). A profile may be as simple as a single piece of information (e.g., user' s gender) or as complex as a combination of favorite websites, past surfing patterns and intended future URL viewing. In comparison to known prior art, certain embodiments of the invention are capable of achieving certain advantages, including some or all of the following: (1) Better utilization of bandwidth on a computer network. Connection time that would otherwise be idle (such as when reading a web page) can be used productively to download additional information, thus saving valuable time, and possibly money, for the user; (2) Utilization of bandwidth is further maximized in that the additional information downloaded in the background can be dynamically preselected by the user and thus directly fulfills the future needs of the user; (3) Utilization of bandwidth is additionally maximized in that information can be uploaded during the idle times; (4) By caching the downloaded information, it can be viewed or accessed anytime, even after disconnection from the network, thus saving significant per-minute connection charges, where applicable; (5) The program(s) generally provides users a more desirable interface to the Internet, making the Internet more valuable to both users and content providers alike, further feeding the spiraling growth of the Internet; (6) The program(s) can organize the cached information in an intuitively appealing way; (7) The program(s) is expandable to uses other than with a computer network (e.g., with documents, spreadsheets and local files generally); (8) The program(s) provides an additional medium for advertising to users on a computer network; (9) The temporal exposure of advertisements on this new medium can be controlled by advertisers; (10) The downloading of advertisements can be accomplished without interference to the downloading of information that the user primarily desires; (11) The improved utilization of connection bandwidth and the new medium for advertising combine to enable traditional forms of advertising (e.g., bandwidth intensive motion video, animation and/or streaming audio) over a computer network without impact to the user; (12) Targeting of advertisements can be improved significantly by exploiting knowledge of a user's use of the program(s); (13) In particular, the limitations of predictive targeting can be avoided by exploiting knowledge of a user' s dynamically preselected selections for additional information. That is, targeting can be done on the basis of what the user is known with near certainty to access in the future (most likely in the near future), rather than questionable predictions derived from historical data; and (14) Profiling of users and subsequent targeting of advertising can discriminate among users individually, not client computers which may be shared by several users. Those skilled in the art will appreciate these and other advantages and benefits of various embodiments of the invention upon reading the following detailed description of a preferred embodiment with reference to the below-listed drawings.
BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 illustrates a computer network in which the invention can be utilized; Figure 2 illustrates a client computer on which the an embodiment of the invention operates; Figure 3 illustrates a graphical user interface (GUI) of a representative browser along with a GUI of a browser enhancement in a minimized state according to one embodiment of the invention; Figure 4 illustrates the minimized GUI of the browser enhancement from Figure 3 in greater detail; Figure 5 illustrates the GUI of the browser enhancement from Figure 3 in a maximized state; Figure 6 illustrates a mouse for use with the client computer according to one embodiment of the invention; Figure 7 illustrates a popup menu encountered in use of the browser enhancement GUI of Figure 5; Figure 8 is a tree diagram of panes encountered in use of the browser enhancement GUI of Figures 4-5; Figure 9 illustrates a menu pane encountered in use of the browser enhancement GUI of Figures 4-5; Figure 10 is a representative dialog box encountered in use of the browser enhancement GUI of Figures 4-5; Figure 11 is a block diagram illustrating the external interfaces of a browser enhancement according to one embodiment of the invention; Figure 12 depicts component modules of the browser enhancement of Figure 11 ; Figure 13 illustrates the architecture of the user interface of the browser enhancement of Figure 11; Figure 14 illustrates the architecture of an ad rotator of the browser enhancement of Figure 11; Figure 15 illustrates the architecture of a menu navigation system of the browser enhancement of Figure 11 ; Figure 16 illustrates the architecture of a queue manager of the browser enhancement of Figure 11; Figure 17 illustrates the architecture of a download manager of the browser enhancement of Figure 11 ; Figure 18 is a block diagram of a storage manager of the browser enhancement of Figure 11; Figure 19 is a table illustrating a format of a user registration record; Figure 20 is a table illustrating a format of a surfing record; Figure 21 is a block diagram of an activation manager of the browser enhancement of Figure 11; Figure 22 illustrates a data persistence and recovery module of the browser enhancement of Figure 11 ; Figure 23 is a flowchart of a first activation method according to an embodiment of the invention; Figure 24 is a flowchart of a second activation method according to an embodiment of the invention; Figure 25 is a flowchart for a link dragging and dropping process according to an embodiment of the invention; Figure 26 is a flowchart for a queued links management process according to an embodiment of the invention; Figure 27 A depicts various communication threads and their priorities; Figure 27B is a flowchart of a priority sensitive downloading process according to a first embodiment of the invention; Figure 27C is a flowchart of a first priority sensitive downloading process according to a second embodiment of the invention; Figure 28 is a flowchart of an automatic refreshing method according to one embodiment of the invention; Figure 29 is a flowchart of an automatic deletion algorithm for clearing storage space in a cache, according to an embodiment of the invention; Figure 30 is a flowchart of a user profiling method according to one embodiment of the invention; Figure 31 is a flowchart of a user segregating targeted advertising method according to one embodiment of the invention; and. Figure 32 is a flowchart of a targeted advertising method based on future viewing intentions, according to an embodiment of the invention.
DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT A preferred embodiment of the invention will next be described in detail. To facilitate a complete understanding of the described embodiment, the overall organization of this detailed description is first presented. This detailed description is arranged in the following sections and subsections: I. Hardware Environment π. User's Perspective Ul. Software Architecture A. External Interfaces B. Component Modules 1. User Interface 2. Queue Manager 3. Download Manager 4. Storage Manager 5. User Profiling Module 6. Auto Refresh Manager 7. Scheduler 8. Upgrade Manager 9. Activation Manager 10. Data Persistence & Recovery Module 11. Advertisement Manager IV. Software Processes A. Activation B. Dragging & Dropping C. Queued Link Management D. Prioritization E. Refreshing F. Cache Memory Management G. User Profiling H. Advertising I. Management of Multiple Instances of a User's Browser Enhancement
I. Hardware Environment As represented in Figure 1, the Internet is a known computer network based on the client-server model. The Internet comprises a large network of servers 10 which are accessible by "clients" 120, typically the personal computers of users, through an Internet service provider (ISP) 140 (such as INTERNET AMERICA (TM), NETCOM (TM) and the like) or an online service provider (OSP) 160 (such as AMERICA ONLINE (TM), PRODIGY (TM), MICROSOFT NETWORK (TM), COMPUSERVE (TM) and the like). Each of the client computers 120 runs a web browser, which is a known software tool used to access information across a computer network (e.g., the world wide web servers of the Internet via the ISPs and OSPs). A server 110 is host to a so-called web site which supports files in the form of documents and pages. A network path to a server is identified by a URL having a known syntax for defining a network connection. The world wide web is a collection of servers 10 of the Internet that utilize the HTTP protocol to provide access to files in the HTML format. Use of an HTML-compliant client browser involves specification of a link URL. Upon such specification, the client 120 makes a TCP IP (transmission control protocol / Internet protocol) request to the server 110 identified in the link and receives a (HTML formatted) web page in return. Figure 2 shows a block diagram of a representative "client" computer 120 in which an embodiment of the present invention is used. A system unit 203 includes a system bus or plurality of system buses 218 to which various components are coupled and through which communication between the various components is accomplished. A microprocessor 221 is connected to the system bus 218 and is supported by a read only memory (ROM) 224 and a random access memory (RAM) 227, also connected to the system bus 218. The ROM 224 contains, among other codes, the Basic Input-Output System (BIOS), which controls basic hardware operations such as the interaction with the disk drives and the keyboard. The RAM 227 is the main memory into which the operating system and application programs are loaded. A memory management chip 230 is connected to the system bus 218 and controls direct memory access operations including, passing data between the RAM 227, a hard disk 233, and a floppy disk drive 236. A CD ROM 251, also coupled to the system bus 218, is used to store large amounts of data, e.g. a multimedia program or large database. Also connected to the system bus 218 are various I/O controllers: a keyboard controller 239, a mouse controller 242, a video controller 245 and an audio controller 248. The keyboard controller 239 provides a hardware interface for a keyboard 206; the mouse controller 242 provides a hardware interface for a mouse 23; the video controller 245 is a hardware interface for a display 212; and the audio controller 248 is a hardware interface for speakers 215a and 215b and a microphone 216. A modem 254 enables communication over a connection 56 to a network (such as the Internet) of other computers. The mouse 23 may be another type of point and click device, such as a touch pad, joystick or rolling ball, for example. As used herein, the term "mouse" is shorthand for all such equivalent devices. An operating system 257 of the computer may be DOS (TM), WINDOWS (TM), MAC OS (TM), OS/2 (TM), ATX (TM), UNLX (TM), LINUX (TM) or any other known or future operating system, and each computer 120 is sometimes referred to as a machine. The RAM 227 also supports a number of Internet access tools including, for example, an HTML- compliant web browser 260. Known web browser software includes NETSCAPE NAVIGATOR (TM), NETSCAPE COMMUNICATOR (TM), MICROSOFT INTERNET EXPLORER (TM) and the like. The web browser 260 typically includes a graphical user interface (GUI). The RAM 227 may also support other types of Internet client software, including simple mail transfer protocol (SMTP) or e-mail, file transfer protocol (FTP), network news transfer protocol (NNTP) or "usenet," and remote terminal access (telnet): As noted above, the web browser 260 running on the client 120 uses a TCP/IP connection to pass a request to a web server 110 running a HTTP "service" (under the WINDOWS (TM) operating system) or "daemon" (under the UNLX (TM) operating system). The HTTP service then responds to the request, typically by sending a web page formatted in HTML to the browser 260. The browser 260 then displays the web page using local resources (e.g., fonts and colors) on the display 212 of the client computer 120. According to one embodiment of the invention, a browser enhancement 263 is loaded in the RAM 227 and a cache 266 is allocated on the hard disk 233. The browser enhancement 263 is designed to operate in accompaniment with the operating system 257 and the web browser 260, whose functionality is enhanced as described herein to achieve the benefits outlined above (e.g., accelerated web surfing by background downloading during otherwise idle times). The browser enhancement 263 is preferably a software program. Alternatively, the browser enhancement may be several cooperating software programs. The cache 266 is a storage area where the browser enhancement 263 stores web pages and other information downloaded from the computer network. The cache 266 is independent of the browser 260. The cache 266 is preferably provided on the hard disk 233 ; however, the cache 266 may also be provided in whole or in part in the RAM 227. The choice of whether and how much to apportion the cache 266 among the hard disk 233, the RAM 227 or any other storage medium is typically dictated by such factors as speed of access, size of available storage and its cost. A RAM cache is generally faster but smaller and/or more expensive than a hard disk cache. In an exemplary multilevel caching arrangement, an inner (or "level 1") cache is provided in the RAM 227, and an outer (or "level 2") cache is provided on the hard disk 233. Information is stored on the level 1 cache if and when space there is available; otherwise the information is stored on the level 2 cache. Information is retrieved by first checking the level 1 cache. If the desired information is not in the level 1 cache (an event called a "level 1 miss"), then the level 2 cache is checked. Techniques for utilizing multilevel caches are known in the computer art. In another alternative, the cache 266 can be on the computer network, such as ISP 140 or the OSP 160. Network caching does not overcome bandwidth limitations on the connection between the client computer 120 and the ISP 140 or OSP 160, but network caching reduces network traffic and congestion generally. Again, some combination of network and local client caching is possible. In a preferred form, the browser enhancement 263 resides in the RAM 227 as one or more software programs when active. However, many alternatives are possible. For example, the browser enhancement 263 may permanently reside in the ROM 224. As another example, the browser enhancement 263 may be in the form of firmware on a programmable device (not hown) or hardwired in the form of a dedicated circuit (not shown), such as an application specific integrated circuit (ASIC), that can be a distinct physical part of the system unit 203 or combined in the same physical package with another part. The browser enhancement 263 exists in a variety of forms both active and inactive. For example, the browser enhancement 263 can exist as software program(s) comprised of program instructions in source code, object code, executable code or other formats; firmware program(s); or hardware description language (HDL) files. Any of the above can be embodied on a computer readable medium, which include storage devices and signals, in compressed or uncompressed form. Exemplary computer readable storage devices include conventional computer system RAM (random access memory), ROM (read only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes. Exemplary computer readable signals, whether modulated using a carrier or not, are signals that a computer system hosting or running the browser enhancement 263. can be configured to access, including signals downloaded through the Internet or other networks. Concrete examples of the foregoing include distribution of executable software program(s) of the browser enhancement 263 on a CD ROM or via Internet download. In a sense, the Internet itself, as an abstract entity, is a computer readable medium. The same is true of computer networks in general. The browser enhancement 263 can be separate from the browser 260 (i.e., an "add on") or combined with the browser 260 (and possibly other software) to form a single integrated enhanced browser. One skilled in the art will appreciate that the description provided herein with respect to the browser enhancement 263 applies equally well to an enhanced, integrated browser. Indeed, the browser enhancement 263 is a program of general utility that provides functionality independent of the browser 260. The browser enhancement 263 provides a general desktop platform. The term "browser enhancement" is used herein as a convenient label and is not meant to exclude browser independent aspects of the browser enhancement 263. The term browser is used in this document in its broad, descriptive sense (i.e., any software program used to control the downloading or viewing of information from a computer network or from the client computer 120 local storage), rather than its more recent and restrictive sense (i.e., WWW browsers only). Non-web-based browsers include, for example, West Law Publishing' s WESTMATE (TM) program. The client computer 120 is typically a workstation or home computer; however, this need not be the case. One skilled in the art will also appreciate that the client computer 120 may exist in other forms . For example, the client computer 120 may be part of an interactive television terminal with Internet connection capabilities (e.g., a WEBTV (TM) terminal), a wireless handheld Internet access device (e.g., a personal digital assistant (PDA) or an Internet-enabled cellular phone). The browser enhancement 263 may be used with any such "computer." Although the browser enhancement 263 is termed a "browser" enhancement, this nomenclature is employed simply for the sake of brevity and clarity and should not be construed as a limitation on the invention. The browser enhancement 263 may function as an enhancement to any network client program or module. Examples of clients that can be enhanced by the invention include e-mail clients, FTP clients, usenet clients and telnet clients. π. User's Perspective Figure 3 illustrates a web page being displayed on a browser GUI 300 while a minimized browser enhancement GUI 400 "floats" above the browser GUI 300. The minimized browser enhancement GUI 400 is depicted in more detail in Figure 4. The minimized browser enhancement GUI 400 has a border 410 surrounding an ad display area 420 and a ticker area 440. The border 410 contains several buttons and indicators, including a hide button 430, a maximize/minimize button 460 and a set of ticker controls 470a-470c. Clicking with a left mouse button (or equivalent) on either the down arrow 460 or anywhere along the lower edge of the border 410 of the minimized GUI 400 opens the interface 400 up to its maximized state 500, as shown in Figure 5. The minimize/maximize button 460 is preferably depicted as a down arrow in the minimized GUI 400 to indicate that clicking on the down arrow unfurls the maximized GUI 500 below, and as an up arrow in the minimized GUI 400 to indicate that clicking on the up arrow pulls up the maximized GUI 500 from below. Clicking on the hide button 430 reduces the GUI 400 or 500 to the task bar of the WINDOWS (TM) operating system. As an optional feature, the GUI 400 or 500 may reappear after a predetermined period, such as twenty minutes, for example, after being hidden in the task bar. As another alternative, to further maximize viewership of advertisements, the hide button 430 may be omitted. In this alternative, the GUI may be minimized but not completely hidden. On both the minimized GUI 400 and the maximized GUI 500, the ad display area 420 displays advertisements, preferably in accordance with an ad rotation algorithm described in greater detail in a subsequent section. The exposure of advertisements appearing in the ad display area 420 can be controlled by the browser enhancement 263 (or by advertisers) because the ad display area 420 is uncoupled from any particular web page and has a persistent presence. If the user left clicks in the ad display area 420, an advertising action is taken. The advertising action may be a primary (i.e., not in the background) download request to a specified web site associated with the currently displayed advertisement, a secondary (i.e., in the background) download request of the same, downloading an audio file or audio/visual (e.g., animation or MPEG (motion picture expert group)) file for playing on an appropriate browser add-on, or displaying or playing an already stored website, audio file or audio/visual file. Many other forms of advertising actions are possible, as one skilled in the art would readily appreciate. Should the user wish to quit the application, per normal windows-style functionality, he/she uses the "X" button in the upper right corner of the browser GUI 300, which, when the browser enhancement 263 has been installed by the user, also launches the exit procedure of the browser enhancement 263. In other words, the user terminates the browser enhancement 263 by terminating the browser 260. By making it impossible to shut down the browser enhancement 263 before shutting down the browser 260, viewership of the advertising displayed in the ad display area 420 is maximized. The ticker area 440 is another area where information can be conveyed to the user. Textual information, such as stock or securities quotes, sports scores, emergency warnings, brief news flashes and messages about the operation or status of the browser enhancement itself (e.g., a reminder that some number of cached web pages remain unviewed), for example, can be scrolled across the ticker area 440. The ticker control buttons 470a-470c work as follows : The ticker pause button 470a, when clicked, alternately pauses and resumes scrolling of text across the ticker area 440; the ticker direction button 470b reverses the direction in which text scrolls across the ticker area 440; and the ticker speed control button 470c hastens or slows the scrolling or text across the ticker area 440. A user initiates background downloading by selecting a link from the page currently displayed on the browser GUI 300, dragging the link and dropping it in the browser enhancement GUI 400 or 500. When the link is dropped in the browser enhancement GUI 400 or 500, an audible sound (e.g., ding or plop) is preferably produced. The selection, dragging and dropping operation is typically performed by the user's pointing on the link, pressing the left mouse button and holding the button while moving the link over the browser enhancement GUI 400 or 500, then releasing the left mouse button. According to another technique, the selection of a link for background downloading is accomplished with the use of the mouse 209, as shown in Figure 6, or an equivalent point and click device (e.g., track ball, joystick or thumb pad). The mouse 209 comprises a left button 560, a right button 570 and a middle button 580. Preferably, the left button 560 is labeled "NOW" or something similar, and the middle button is labeled "LATER" or something similar. When the pointer on the screen is over a hyperlink in the browser GUI 300, clicking on the "NOW" left button causes a primary download in the foreground. When the pointer on the screen is over a hyperlink in the browser GUI 300, clicking on the "LATER" middle button causes the hyperlink to be selected for background downloading by the browser enhancement 263, just as if it had been dragged-and-dropped (D&D-ed) in the browser enhancement GUI 400 or 500. Alternatively or additionally, the "NOW" and/or "LATER" buttons can be included on the keyboard 206, either as a dedicated button (much like the "START" button for WINDOWS (TM) operating system) or an existing function key possibly in combination with the SHIFT, ALT or CTRL key. In another variation, a "NOW/LATER" toggle button is provided, either on the mouse 209 or the keyboard 206. For example, the "NOW/LATER" toggle button can be the middle button 570 on the mouse 209 or a key on the keyboard 206. Depression of the "NOW/LATER" toggle button switches between two modes. In the "NOW" mode, single clicking of the left mouse button 560 on a hyperlink in the browser GUI 300 causes conventional, foreground loading of the hyperlinked page, as usual. In the "LATER" mode, single clicking of the left mouse button 560 on a hyperlink in the browser GUI 300 causes the hyper to be placed on the queue of the browser enhancement 263 for background downloading, just as would happen if the hyperlink were D&D-ed onto the browser enhancement GUI 400 or 500. In this way, the user can use the same simple, familiar operation to accomplish either function. To help the user keep track of the current mode, the browser enhancement 400 or 500 is preferably provided with a mode indicator. As another aid to the user, selection of a link may cause different audio sounds in the different modes. For example, the browser enhancement 263 can produce the same sound that is produced at the conclusion of an explicit D&D operation when a link is selected in the "LATER" mode; whereas, no sound may be forthcoming when a link is selected in the "NOW" mode. According to yet another technique, the selection of a link for background downloading is accomplished by voice activation. With this technique, the browser enhancement 263 includes voice recognition software, and the user speaks into a microphone connected to the client computer 120 the word "Queue," which is easily recognizable due to its audible distinctiveness, followed by a brief description of the link on the web page currently displayed in the browser GUI 300. The browser enhancement 263 performs speech recognition processing applied to the phrase spoken after "Queue" in order to find its closest match among the hotlinks parsed from the currently displayed web page. Note that the speech recognition processing required for matching a limited set of possibilities is considerably less demanding than that required for speech to text conversion. Therefore, the speech recognition software included in or utilized by the browser enhancement 263 can be a subset of or simplified form of a full featured speech recognition program. The voice recognition software can also be programmed to recognize a keyword such as "Get" followed by a brief description of the link on the web page currently displayed in the browser GUI 300, to cause the browser 260 to perform a foreground download. As a last example of a user selection mechanism, a button can be added to the browser GUI 300. The added button, when clicked, has the same effect as dropping the page currently displayed on the browser GUI 300 in the browser enhancement GUI 263 and transferring the page to the cache 266, without disrupting the display of the page on the browser GUI 300. In other words, clicking the added button on the browser GUI 300 places the current web page on the browser enhancement's 263 queue (as explained in greater detail with reference to Figure 16). Although this mechanism does not cause background downloading, it is a convenient way to add an item to the cache 266. To summarize, dragging-and-dropping, clicking a dedicated mouse or keyboard button, toggling between input response states and voice recognition are exemplary forms of selecting a link for background downloading. Those skilled in the art will readily recognize other mechanisms for link selection, such as retinal tracking. All such other mechanisms are encompassed in the present invention, even though the remainder of this specification refers only to dragging-and-dropping (D&D-ing) for the sake of concreteness and conciseness. In other words, all general forms of link selection are interchangeable with D&D-ing, as used herein. D&D-ed links are queued for background downloading during idle times when the browser 260 or other primary network client is not downloading information from the Internet in its conventional way. Queued links are displayed in a list area 505 in the maximized GUI 500. The list area 505 displays names of web pages and other information content to be downloaded, downloading, or downloaded in the background, as well as any other files or documents that the user desires to keep there. Preferably, the list area 505 is structured by way of hierarchical folders. If the browser enhancement GUI is in its maximized state 500 when a link is D&D-ed, then the user can drop it with precision into a desired folder. If the D&D-ed link is not dropped within a specific folder (such as when the browser enhancement GUI is in its minimized state 400), then the link defaults to a predetermined folder for unfiled links. Links, folders and other contents in the list area 505 can be moved, copied and manipulated according to standard windows-based conventions. Once a queued link has been downloaded in the background, the content is cached in the cache 266 on the user's client computer 120. Thereafter, the user can double-click (or single click, as set by the user's preferences) upon its name in the list area 505 to cause the content to be displayed instantly (or at least nearly instantly) on the browser GUI 300. Cached content can be viewed with greater flexibility than is possible using the browser 260 alone, which typically imposes a linear (back - next) sequence on any viewing pattern. The browser enhancement 263, on the other hand, allows a user to view cached content in any order, at any time, even after disconnection from the network source of the content. The download status of individual D&D-ed links is preferably indicated in the list area 505 of the maximized browser enhancement GUI 500. An exemplary scheme for expressing the download status of an individual link is to display one of the following to the left of the URL or object description: a red light 510 for a queued link awaiting downloading; a yellow light 515 for a link whose background download is in progress; a green light 520 for links whose background downloading and caching is complete, an up-right arrow "TV mark 525 for links that have encountered an error; and a check mark 530 for cached links that have been viewed. Links that have encountered an error are not cached but are preferably stored as shortcuts, which are activated as primary download requests when dragged back into the browser GUI 300. Alternatively, when a link has encountered a download error, any form of error indication can be presented to the user. In addition to links, files or other objects that are not links are preferably denoted in the list area 505 with a small icon 535 that visually indicates the type of file (e.g., word processing document, spreadsheet, etc. or shortcuts to the same), according to accepted windows style conventions. As a further option, the overall download status can be indicated on both the minimized GUI 400 and the maximized GUI 500 with a background download indicator 450 that is dull amber when no background downloads are being performed and changes to glowing amber when any background requests are being processed. Although amber on off is a preferred mode of indicating background download status, other modes of expressions are possible. The maximized GUI 500 contains additional buttons and displays at the bottom of the layout depicted in Figure 5. Other arrangements of the display areas and user controls are well within the skill of those in the art. A user tip area 540, when activated, displays useful information ("cue cards") about the component on which the desktop pointer currently hovers. For example, when the pointer is over a button, the user tip area 540 displays a brief description of the button, such as what it does when clicked. As another example, when the pointer is over a link in the list area 505, the user tip area 540 displays the time when the link was downloaded or last refreshed. As another helpful guide to the user, a pointer tip box appears near the pointer and displays full URL of the link over which the pointer sits. Optionally, when the pointer is over a shortcut to a local file, the pointer tip box 540 can display the full path to the file. Buttons serving various purposes are preferably included in the maximized GUI 500. One such button is a provider link button 545, which when depressed causes any one or more of a variety of provider specified responses. For example, a typical response is the display of a custom menu of links to pages on the web site of the enterprise providing the browser enhancement 263 to the user. As another example, depressing the provider link button 545 can cause a foreground or primary download of the provider' s homepage. Another button is an auto refresh list button 550, which when depressed displays in the list area 505 a list of the queued links that the user designates for automatic refreshing. For links so designated, the browser enhancement 263 automatically tests those URLs for modifications, according to an algorithm described in detail in a later section, and, if changed, downloads the most recent version of the web page during idle time. A menu button 560 causes a main menu pane (described in greater detail below) to be displayed in the list area 505. A queue list display button 565 causes the list area 505 to return to its default state of displaying queued and/or cached links and other objects. One or more custom configurable buttons 570 are also preferably provided. A set of directional scrolling buttons 575 can be used to scroll the list area 505 left, right, up or down. Preferably, the arrow buttons on the keyboard 206 accomplish the same functions when the pointer is over the list area 505. Finally, an upgrade button 580 can be clicked to upgrade the browser enhancement 263 software by Internet download of a new version or new components. The upgrade button preferably changes color, flashes or otherwise produces an indication when an upgrade is available. As an example of the use of the browser enhancement 263, a user one morning may navigate with the browser GUI 300 to the U.S. Patent & Trademark Office web page, as depicted in Figure 3. The user may wish to read five of the postings whose links are provided on the displayed web page. The user can do so by D&D-ing the five desired links onto the minimized browser enhancement GUI 400. After the D&D-ing operation, the user may leave his client computer 120 unattended to brush his teeth, get dressed or the like. In the meantime, the browser enhancement 260 downloads the D&D-ed links and possibly new advertisements, ticker text data and/or auto refreshed sites (described below). The browser 260 or browser enhancement 263 may automatically disconnect from the Internet after a certain period of inactivity, or the user may return to his client computer 120 to disconnect from the network. Thereafter, while offline - perhaps while eating breakfast or while commuting to work if the client computer 120 is portable, the user can read the cached U.S. Patent & Trademark Office web pages while being exposed to the advertisements and ticker text. If the user clicks on the logo 480 that is displayed on the top of the browser enhancement GUI 400 or 500, a web page is downloaded (as a conventional or primary download, i.e., not in the background) and displayed in the open instance ofthe browser GUI 300 with the homepage of the company which distributes the particular edition of the browser enhancement 263. The browser enhancement GUI 400 or 500 can be augmented with additional buttons that act similarly as shortcuts to predetermined or user-configured sites as primary downloads. Figure 7 illustrates a popup menu 600 encountered in use of the browser enhancement maximized GUI 500. The popup menus 600 appears when a user right clicks while pointing to an entry in the list area 505. Activation of the contents of a popup menu is context sensitive. In other words, different menu options may or may not be disabled depending upon what entry is selected when the right mouse button (or equivalent) is clicked. The popup menu 600 illustrates examples of possible menu options. The popup menu 600 is displayed when the user right clicks on the always present "Unfiled" folder. The popup menu 600 contains options 605-670 for creating a new URL, creating a new folder, performing edit operations (via a right pop out menu 635), renaming the selection, forcing a download of the selection, stopping a download in progress, designating the selected link for auto refreshing, adding comments and performing package operations, respectively. The options 605-670 may be labeled differently from that shown in Figure 7 and/or arranged in a different order, if desired. The labels and order depicted in Figure 7 are merely illustrative. The new URL option 605, which is an active choice when the selection is a folder, adds a new object into the folder. The user can directly type a URL in the newly created field. The prefix "http://," if not present, is automatically appended to the beginning of the typed entry. When the new folder option 610 is selected, the folder having the default name "New Folder" is created. To distinguish between files or folders with the same name, parenthetical numbers (e.g., "(1)" or "(2)") are preferably appended to the end of the name. Keyboard shortcuts preferably provide the same functions as the new URL option 605 and the new folder option 610 (e.g. , CRTL + U to create a new URL, CTRL + N to create a new folder). The popup menu 600 also contains an edit option 630, which, when selected, produces a right pop out submenu 635 containing more detailed edit choices, such as cut, copy and paste. The popup menu 600 also contains standard manipulation options such as rename option 640 and a delete option 645. Some of the more unique menu items are a force download option 650, a stop download option 655, an auto refresh option 660 and a package option 665. The force download option 650 places the selected link at the top of the queue in terms of priority for background downloading of D&D-ed links. If the selected link is already cached, then the force download option causes downloading of the link again to replace the previously cached contents. Jf an earlier attempt to download the selected link resulted in an error, then the force download option 650 attempts the download again. The stop download option 655 interrupts a link whose download is in progress (indicated by a yellow circle) and optionally moves the link to the bottom of the queue in terms of priority. Selection of the auto refresh option 660 adds the highlighted link to the user's list of URLs that are to be refreshed automatically according to an algorithm described in detail in a subsequent section. Selection of the add comments option 665 opens a dialog box in which the user can enter text that will later be displayed in the pointer tip box when the pointer is over that item. Selection of the packages option 670 displays a right pop out menu having choices of importing and exporting item(s) to/from the list display area 505. The browser enhancement 263 maintains a list of web sites to automatically refresh. Web sites are added to this list by the auto refresh option 660 in the popup menu 600 (or by the corresponding keyboard shortcuts). This list is displayed in the list area 505 when the user depresses the auto refresh list button 550. When the list is displayed in the list area 505, the user can add or delete links by popup menu options or keyboard shortcuts. The browser enhancement 263 presents to users a number of menu, dialog and other panes. The panes are preferably organized in layers. Figure 8 is a tree diagram 800 of panes encountered in use of the browser enhancement GUIs 400 and 500. The pane at the top level is a main menu pane 805, which contains options for the next level of panes 810-850, either as icons, as shown in Figure 9, or as a textual list. One of those panes at the next level is a preferences pane 810, which is a dialog pane in which the user can select various personal options and preferences . Another pane at the next level is a storage settings pane 815, which is a dialog pane for selection of such things as browser choice, cache size and auto refresh intervals. Another dialog pane is a user pane 820, in which user identity can be changed, password parameters set up, and new users can be established. A connection pane 825 is a dialog pane for connection parameters such as modem type and proxy server settings. The skin pane 830 displays information (e.g., creation date and creator) about the appearance (i.e., "skin") of the browser enhancement GUI 400, 500 and optionally launches a skin wizard for use in modifying the GUI appearance. A button configuration pane 835 is a dialog box in which a user can control the custom configurable buttons 570, e.g., to launch a particular application. A tour pane 840 is the starting point for a presentation about the browser enhancement 263. A supplier/brand pane 845 displays information about the company supplying or branding the user' s edition of the browser enhancement. A more pane 850 is a continuation of the main menu pane 805. The more pane 830 contains a menu of the panes 855-880 of the next lower level. One of these constituent panes at the next lower level is an advertisers pane, which displays information for or about those who advertise on the browser enhancement GUI 400 or 500. An instructions pane 860 displays help pages and/or a tutorial about the browser enhancement 263. A feedback pane 865 opens the default mail program with a new message directed to the developers of the browser enhancement 263. A developer's pane 870 displays information about the developers of the browser enhancement 263. A registration pane 875 is a dialog pane in which a user can enter and edit personal and demographic information, as described in greater detail below. A tell a friend pane 880 opens the default mail program with a new message about the browser enhancement 263 for sending to another. An about pane 885 displays such things as license information, copyright notices, trademark notices, patent markings, product serial numbers, and the like. An optional mail queue pane 890 opens the default mail program with a new message for sending to another user. Attached to this e-mail is all or selected parts of the user's queue of D&D-ed links as normally shown in the list area 505. The mail queue pane 890 is another gateway to the same functionality as provided by the export option from the packages option 670 in the popup menu 600. Certain panes that predominantly display information (e.g., the tour pane 840, supplier/brand pane 845, advertisers' pane 855, instructions pane 860, developer's pane 865 and about pane 885) may work by optionally or automatically causing a foreground download of a web page containing the information. Alternatively, the information can be stored locally, with selection of the pane initiate display of the local screen(s). A combination of both techniques is also possible. Dialog panes utilize the list area 505 to present the user with choices for selection. An representative example of a dialog pane is the connection pane 825, which is illustrated in Figure 10. In Figure 10, the list area 505 displays the connection pane 825. The connection pane 825 includes a drop down list 710 for selection of a type of browser 260 used with the browser enhancement 263. The connection pane 825 also includes a check box 720 for the user to designate whether a proxy server is used when connecting the client computer 120 to the computer network. If the check box 720 is checked, then the user fills in the user name and password fields 730 and 740. Finally, the connection pane 825 includes a drop down list 750 for selection of the connection type. The information entered in this field is used by the browser enhancement 263 to determine how many communication threads to set up. With this example of a dialog pane, the design and implementation of the other disclosed dialog panes (and numerous other variations) are well within the skill of those working in the art.
HI. Software Architecture A. External interfaces Figure 11 is a block diagram illustrating the external interfaces of the browser enhancement 263. As the figure shows, the browser enhancement 263 interfaces with the browser 260, an advertising server 1140, a user 1110, a requested web server 1120 and a ticker data server 1150. The browser 260 is typically a conventional software program, such as NETSCAPE NAVIGATOR (TM) or MICROSOFT INTERNET EXPLORER (TM). The browser enhancement 263 is preferably a software program or set of cooperating software programs that provides the GUIs 400 and 500, various dialog boxes and pull down menus and implements their functionality, including background downloading during idle times. The user 1110 is typically a human person who runs and manipulates the browser 260 and the browser enhancement 263. The advertising server 1140 is one of the servers 10 on the computer network and supplies advertisement data to the browser enhancement 263 for display in the ad display area 420. The advertising server 1140 also performs user profiling and targeting of advertisements, as explained in detail in a subsequent section. The advertising server 1140 may be a single machine, or the functions of the advertising server 1140 can be distributed among several machines. For example, a user profiling server 1130 may be an intermediary node between the browser enhancement 263 and one or more advertising servers 1140. The requested web server 1120 is one of the servers 10 on a computer network from which the browser enhancement retrieves web pages or other data as either a background (i.e., secondary) request or primary request. L the case of a background request, a link to or URL of the requested web server 1120 is in the list area 505 of the browser enhancement GUI 500 either by virtue of being D&D-ed (dragged-and-dropped) there or by being an automatically updated favorite site. The requested web server 1120 changes from time to time. Optionally, the requested web server 1120 can be contacted directly by the browser 260, although it is preferred that all conventional browser 260 downloads be monitored by the browser enhancement 263. The ticker data server 1150 supplies data for display in the ticker area 440of the browser enhancement GUI 400 of 500. Figure 11 also illustrates the handshaking signals communicated between the objects depicted in Figure 11. A signal d_d_req 316 is fired by the user 1110 when a link or other object is D&D-ed into the GUI 400 or 500 of the browser enhancement 263. A signal piw_data_req 318 is fired by the user 1110 when the user 1110 selects a queued link from the list area 505 for display. In response to the signal piw_data_req 318, the browser enhancement 263 sends to the browser 260 a signal br_cache_data 314, which is the cached data for display. When the user 1110 requests a URL in the browser 260 directly, this action generates a signal conv_url_req 340. In response to the signal conv_url_req 340, the browser 260 generates a signal br_url_req 312, which is intercepted by the browser enhancement 263, which reacts by sending a signal page_req 330 to the requested web server 1120, the URL of which is the URL of the signal conv_url_req 340 . In response to receipt of the signal page_req 306, the requested web server 1120 sends a signal page_send 332 to the browser enhancement 263, which forwards the signal page_send 332 as a signal br_data 313 to the browser 260 for display. To summarize, a conventional download involves the following signals in the following order: conv_url_req 340, br_url_req 312, page_req 330, page-send 332 and br_data 313. As an alternative, the browser enhancement 263 may not interrupt conventional downloads, in which case the signal conv_url_req 340 causes the browser 260 to sends a signal conv_page_req 342 to the requested web server 1120, which responds by returning a signal conv_page_send 344. In this alternative mode of conventional downloading, the browser enhancement 263 preferably monitors the signals conv_page_req 342 and/or conv_page_send 344. Additionally, the browser enhancement 263 preferably sends a signal ad_req 324 to the advertising server 1140. The signal ad_req 324 is an HTTP request for an advertisement. In response to the signal ad_req 324, the advertising server 1140 sends the advertisement in a signal ad_send 328 back to the browser enhancement 263. The browser enhancement 263 also at times sends a signal user_profile 326 to the advertising server 1140. The signal user_profile, which is specified in detail in a subsequent section, is used by the advertising server 1140 to generate or select advertisements targeted at the user 1110. Finally, the browser enhancement 263 preferably sends to the ticker data server 1150 a signal tick_req 346, which is an HTTP request for data to display in the ticker area 440 of the browser enhancement GUI 400 or 500. The ticker data server 1150 responds by producing a tick_send signal 348, containing the requested data, back to the browser enhancement 263. B. Component Modules Figure 12 is a more detailed diagram of the browser enhancement 263. Figure 12 depicts the following component modules of the browser enhancement 263: a user interface 1205, a queue manager 1210, a download manager 1215, a storage manager 1220, a user profiling module 1225, a auto refresh manager 1230, a scheduler 1235, a configuration manager 1240, an upgrade manager 1245, an activation manager 1250, a persistence and recovery module 1255 and an advertisement manager 1260. Each component 1205-1260 is preferably a software program, other terms for which include routine, module, agent, function, procedure, thread, daemon or process. The components establish and manipulate numerous passive data structures, data objects and files (e.g., the cache 266) not shown in Figure 12. Preferably the components 1205-1260 communicate among each other across a ubiquitous medium, such as shared memory, global variables or interprocess communication techniques well known to those skilled in the art. Alternatively, discrete interfaces can be established and maintained between particular components as required. Many other alternative architectures to the one depicted in Figure 12 are possible. One particular alternative architecture is one having a "coordinator" main program 1265 that calls the illustrated components as subprograms. The following subsections detail the design of each component module in greater detail. 1. User Interface The user interface 1205 of the browser enhancement 263 is described from the user ' s perspective in § U, supra. This section describes the internal software design of the same. Figure 13 depicts components of the user interface 1205. These components include a drag- and-drop interface 1310, a list view control modulel320, an ad rotator 1330, a ticker control module 1340, a menu navigation system 1350 and a skin wizard 1360. The following details these components of the user interface 1205. The drag-and-drop interface 130 provides the ability to drag-and-drop links from the browser 260 and other applications or the desktop. In the WINDOWS (TM) environment, the drag-and-drop interface 130 preferably uses the COM (component object module) for universal data transfer of window objects into the browser enhancement GUI 400 or 500 and the OLE (object link embedding) protocol to accept URL links from the browser GUI 300. The COM standard provides interoperability, programming language independence, extendibility and the ability to communicate between components, even across process and network boundaries. The OLE protocol, as is well understood in the art, is a streamlined technique for transferring data through direct mouse action rather than through a clipboard. The OLE protocol brings a data object pointer (termed "IDataObject") from a source to a target. To facilitate the exchange of data object pointers, the browser 260 implements a drop source interface (termed "IDropSource") and the drag-and-drop interface 1310 implements a drop target interface (termed "IDropTarget"), which is attached with the OLE API (application program interface) function "RegisterDragDrop." The list view control module 1320 is responsible for managing the visual organization and appearance of the links and other objects in the list area 505, including their names and download status or other icons. The list view control module 1320 keeps track of the logical and visual organization of the contents of the queue, a data structure described in greater detail in a subsequent section, and hierarchy of folders. The ad rotator 1330 is responsible for displaying and rotating (preferably user specific) advertisements in the ad display area 420 of the browser enhancement GUI 400 or 500. A desirable goal of the ad rotator 1330 is the display of a plurality of advertisements in a manner that is timely from the advertiser's perspective. Another desirable goal of the ad rotator 1330 is the ability to withstand long periods of offline operation, to continue operating when all downloaded advertisements are lost and to recover from display outages without skipping advertisements in the rotation. Figure 14 depicts the ad rotator 1330 and its interaction with related modules and data objects. The ad rotator 1330 works in tandem with the download manager 1215 to download advertisements. Although it is possible (and simple) to download each advertisement individually, multiple advertisements are preferably downloaded together in a "block." A block contains one or more advertisements and also maintains state information about each advertisement in the block. Blocking advertisements together has the advantage of averaging out delays involved in downloading various sized advertisements. The ad rotation engine 1405 sends a request signal ad_block_req 1410 to the download manager 1215. The download manager 1215 acts on the request signal ad_block_req 1410 in accordance with its priority scheme, in which advertisement downloads are a lower priority than queued link downloads, so as not to affect the responsiveness of the browser enhancement 263 in any appreciable way. At some time after receipt of the request signal ad_block_req 1410, the download manager downloads an advertisement block ad_block 1420, which is placed in the block storage 1430, and notifies the ad rotator that the download is complete by firing a signal dl_complete 1440. The ad rotator 1330 determines precisely when a new advertisement should be displayed. A timer (not shown) within the ad rotation engine 1405 goes off at a regular interval (thirty seconds, for example) to prompt a change in advertisements. This interval is preferably adjustable, and multiple consecutive intervals can be joined together to display the same advertisement. The timer is held and does not advance whenever the browser GUI 400 or 500 is reduced to the task bar or an icon on the desktop. The value of the timer and the order in the rotation of advertisement are stored when the browser enhancement 263 is shut down. During the next activation of the browser enhancement 263, the rotation of advertisement is resumed exactly or nearly exactly where it left off. Although the browser enhancement 263 could function without such strict attention to the playing of advertisement (in fact, all advertising features are technically optional), it is important to advertisers to have some assurance that their advertisements get the exposure for which they have bargained. In deed, exposure time of advertisements need not be uniformly the same, and each advertiser can specify a custom exposure time, according to the advertiser's desires and budget, for each advertisement. The content of advertisements can be in any form (e.g., static images, animations, motion video - like the MPEG (motion picture expert group) format with or without audio, audio only). Because advertisement downloads preferably occur in the background during idle time, conventional bandwidth limits do not constrain the complexity of advertisement content. When the timer expires, signifying a need to change advertisements, the ad rotation engine 1405 sends a query get_ad 1450 to the current block 1455, which responds by sending an advertisement ad 1460 back to the ad rotator 1330. If the ad rotator 1330 receives the ad 1460 without error, it forwards the ad 1460 via a display ad 1465 to an ad display driver 1470, which generates the appropriate image, animation, motion video and/or streaming audio at the ad display area 420 and/or speakers 25a and 25b. To handle file manipulations, the current block 1455, the next block 1475 and/or subsequent blocks (if present) make use of a file handler 1480 that provides facilities for checking the state of ad files as well as filing locking and unlocking. The ticker control manager 1340 is another component ofthe user interface 1205 that utilizes the COM standard. Salient features ofthe ticker control manager 1340 are the ability to scroll the ticker text in variable speeds, scroll the text in either direction, pause the scrolling text and later restart it. The ticker control manager 1340 can optionally be configured to respond to a user's clicking on the ticker area by performing a variety of actions, such as a primary download or a background download (a choice selectable by the user) or displaying related content already automatically background downloaded. Figure 15 illustrates the architecture of the menu navigation system 1350 component of the user interface 1205. In one mode, the menu navigation system 1350 is simply built upon the standard toolbox of windows-type controls and facilities in a straightforward way well understood by those skilled in the art. In a more ambitious mode, the menu navigation system 1350 is built from a custom set object oriented building blocks, as explained in the following. The advantage ofthe latter approach is reusability, scalability, expandability and portability. The basic structural elements of the menu navigation system 1350 are "panes," which are analogous to "windows" in a conventional windows-type environment. A pane is a self- contained element encapsulating in itself the functionality allowing it to render itself on a given area. For example, a pane can take character input, while another type of pane can handle mouse interactions, such as a button or check box. Anything that can occupy visible area on the display is a pane. Figure 15 illustrates two exemplary panes - an active pane 1505 and an inactive pane 1510. Only one pane is active at any given time. Each pane 1505 or 1510 contains a pane manager 1515, a method-property manager 1520, a notification manager 1525 and one or more pane controls 1530. The pane manager 1515 is responsible for handling and resolving incoming messages. The method-property manager 1520 exposes the properties and methods associated with a pane to other modules. The notification manager 1525 notifies the other modules about changes in the internal state of the pane. The pane control 1530 is the functionality of the pane 1505 or 1510, such as text edit control, check box, etc. Two constructs of the pane control 1530 are ( 1 ) a default message handler, which is responsible for providing the defined functionality for a control, e.g. drawing behavior; and (2) a custom message handler, which is responsible for providing other functionality. A message dispatcher and device context provider 1540 is a translator between the panes 1505, 1510 and a standard windows-style environment. The message dispatcher and device context provider 1540 interfaces with a message pump 1545, which is a construct in the standard windows-style environment, and forwards messages, when necessary to the pane managers 1515. A bridge 1550 is a translator between an ACTIVEX (TM) environment and the active pane 1505, more specifically the method-property manager 1520 and the notification manager 1525. As an optional feature, the user interface 1205 includes the skin wizard 1360, which allows the user or others to change the look and feel - in other words, the "skin" - of the browser enhancement GUI 400, 500. The skin wizard 1360 can configure a myriad of cosmetic factors, such as: frame shape, colors, button positions, button bitmaps, the way controls react upon input, and animation states — so as to make possible drastically different appearances. Preferably, the skin configuration is directed by a single skin file, which can be easily shared among users, distributed over the Internet, etc. The value of the skin wizard 1360 is realized in a scenario where many different commercial entities provide the browser enhancement 263 to the Internet community at large, in which case each commercial supplier would desire to brand its own version of the browser enhancement 263 in its own distinguishable way. The skin wizard 1360 also allows users to indulge their own creativity, which tends to reinforce the value of the browser enhancement 263 to the user. 2. Queue Manager Figure 16 is a diagram of the queue manager 1210. The queue manager 1210 drives the download manager 1215. The queue manager 1210 maintains a list or queue 1605 of all URLs that are to be downloaded, have been downloaded or are presently downloading. The queue 1605 also preferably stores link names, URL, download status, auto refresh option, flag status and pointer to or filename in the cache 266. The queue 1605 is preferably a queue in the sense that the default order of downloading constituent links is the same order as they are placed on the queue 1605. However, the queue 1605 is a more general data structure and is not strictly confined to a first in, first out (FIFO) functionality. For example, the queue 1605 has attributes of a tree data structure in that elements can be organized in hierarchical folders, as when the queue 1605 is visually depicted in the list area 505. Thus, the term "queue" is more in the nature of a convenient label than a strictly descriptive term for the queue 1605. The queue manager determines the order and scheduling of queued URL downloading, which is preferably combined with other communication activity in accordance with a prioritization algorithm described in detail in a subsequent section. The active modules of the queue manager 1210 include an event handler interface 1610, a queue master 1620 and an auto refresh master 1630. The event handler interface 1610 detects events, such as timer events or ACTIVEX (TM) events, that trigger downloading activity. The queue master 1620 maintains the queue 1605 of all URLs pending downloading or already cached. The queue master 1620 sends download requests to the download manager 1215. In a case when multiple simultaneous downloads are supported, then the queue master 1620 can request multiple URL download requests to the download manager 1215. If not, then the queue master 1620 requests URL downloads one at a time. 3. Download Manager Figure 17 is a block diagram of the download manager 1215. The download manager 1215 comprises a protocol handler 1705, a queued links downloader 1710, an auto refresh manager 1715, a favorites update fetcher 1720, a user profile uploader 1725, an ad fetcher 1730, an upgrade downloader 1735, a ticker data downloader 1740 and various interfaces to other modules. The download manager 1215 is preferably a multi-threaded design, wherein the components of the download manager 1215 are COM threads running in parallel and communicating with each other utilizing a mechanism such as WINDOWS (TM) messaging. Synchronization of threads, where necessary, can be accomplished using synchronization objects such as critical sections. The download manager 1215 preferably uses hash tables and maps to optimize performance. The protocol handler 1705 communicates with the computer network to which the client computer 120 is connected. In the case where the computer network is the Internet, the protocol handler 1705 preferably contains a HTTP handler 1745, a S-HTTP (secure HTTP) handler 1750 and an FTP handler 1755. Other protocol handlers are possible. For example, if the computer network is a LAN (local area network) or something similar, the protocol handler 1705 can include an ETHERNET (TM) handler. Depending upon the protocol, a new instance of the protocol handler 1705 can be invoked to upload or download any link or resource. Each instance of the protocol handler 1705 shares the same Internet session object, which exists until the browser enhancement 263 shuts down. The HTTP handler 1745 communicates with a server 110 by sending and receiving HTTP headers. The HTTP handler 1745 preferably uses MFC (MICROSOFT (TM) foundation class) wrappers or Internet classes over WENTNET (TM) APIs (APIs for developing web-based applications) for accessing the Internet. The HTTP handler 1745 includes a HTML parser 1760 and a cookie manager 1765. The HTML parser 1760 parses downloaded links to determine any further resources that need to be downloaded. The HTML parser 1760 also preferably converts links from relative to absolute URLs. An absolute URL is a complete network path, such as "http://www.asdfghjkl.com images/hello.jpg", whereas a relative URL would be "/image/hello.jpg". After downloading resources, the HTML parser replaces the resource links with newly generated ones. The cookie manager 1765 handles all cookie transactions occurring in the HTTP protocol. The cookie manager 1765 gets and sets cookies for a particular URL. Whenever cookies need to be sent to a server 110, the cookie manager 1765 extracts them from the browser 260. Upon receipt of a cookie, the cookie manager 1765 writes it to the appropriate browser 260 cookie file. The S-HTTP handler 1750 is responsible for downloading and uploading over the S- HTTP protocol. The S-HTTP handler 1750 is similar to the HTTP handler 1765 in all respects except for connection establishment and object requests, which are secured. The FTP handler 1755 is responsible for downloading data according to the FTP protocol. Like the HTTP handler 1745 and the S-HTTP handler 1750, the FTP handler 1755 is preferably implemented using MFC Internet classes. The queued links downloader 1710 is responsible for downloading D&D-ed links. The queued links downloader 1710 communicates with the queue manager 1210 via a queue manager interface 1770. Whenever a link is D&D-ed onto the browser enhancement GUI 400 or 500, the queue manager 1210 (as described below) requests the queued links downloader 1710 to download the link and its related resources, if any, from the relevant server 110. Upon receipt of such a request, the queued links downloader 1710 forwards the request to the appropriate protocol handler. After the protocol handler completes the download, the queued links downloader 1710 notifies the user interface 1205 via a Ul (user interface) interface 1775. The auto refresh manager 1715 schedules downloads for refreshing or updating queued URLs in the cache 266. The auto refresh manager 1715 requests the appropriate protocol handler to check if a URL has expired on its hosting server 110. A URL is said to have expired if it is no longer posted, that is, no longer present on the server 110. If the URL has not expired and it has been modified since it was last downloaded, the auto refresh manager 1715 requests the appropriate protocol handler to download the URL. The auto refresh manager 1715 notifies the user interface 1205 of the refresh status of the URL, preferably by firing an ACTIVEX (TM) event via the Ul interface 1775. The user profile uploader 1725 is responsible for uploading user profile information to the advertising server 1140 or a separate profiling server 1130. The user profile uploader 1725 preferably requests the HTTP handler 1745, rather than the FTP handler 1745, to upload profile information to facilitate downloads from users behind an FTP blocking firewall. The user profile uploader 1725 interfaces with the user interface 1205 via the Ul interface 1775. The user interface 1205 contains valuable user information, such as D&D-ed links. The ad fetcher 1730 is responsible for downloading advertisements from the advertising server 1140. Advertisements are fetched in blocks, as explained above in relation to Figure 14. The ad fetcher 1730 utilizes an ad manager interface 1785 to communicate with the advertisement manager 1260, which specifies the block size to be used by the ad fetcher 1730. The block size is a parameter as part of a fetch request sent from the advertisement manager 1260 to the ad fetcher 1730. The ad fetcher 1730 preferably forwards the requests to the HTTP handler 1745 to avoid blockage by an FTP firewall. When the download is complete, the ad fetcher 1730 raises an event flag for the advertisement manager 1260. The upgrade downloader 1735 is responsible for upgrading the browser enhancement 263 software. To perform an upgrade, the upgrade downloader 1735 downloads setup and upgrade files from a server 110 on the Internet. The upgrade downloader 1735 preferably invokes the HTTP handler 1745 to do this task. The upgrade downloader 1735 also sets a flag for sensitive checking by the HTTP handler 1745 and raises an error event if any error is encountered, because even a minor corruption in a software file can completely destroy the integrity of the software. The upgrade downloader 1735 is directed by the upgrade manager 1245 via a upgrade manager interface 1790. The ticker data downloader 1740 requests data from one or more ticker data servers 1150 for display on the ticker area 440. The downloading of ticker data is performed in a conventional way and is scheduled in accordance with a prioritization algorithm described in a subsequent section. 4 Storage Manager Figure 18 is a block diagram of the storage manager 1220 and the cache 266. The storage manager 1220 comprises a storage module 1810, aretrieval module 1820, a deletion module 1830 and a synchronization module 1840. The storage manager maintains a separate cache directory for each user. The preferred cache path for a given user takes the following form: [installation directory] : "\Users\" : [operating system user name] : "\" : [browser enhancement 263 user name] : "\Cache". The storage module 1810 stores all D&D-ed links, related resources and other cached objects for a given user in this directory. The storage module 1810 creates a new subdirectory within this directory for each link and creates unique identifiers (128 digit hexadecimal numbers in a preferred embodiment) to name the subdirectories and their constituent files. The retrieval module 1820 references these unique identifiers to read the cache 266 whenever necessary (e.g., to display a cached web page selected from the list area 505). The deletion module 1830 is preferably a separate thread that is invoked to delete files from the cache 266. When a particular object is to be deleted from the cache, the deletion module 1830 preferably deletes all associated resources as well as any copies of the same object that the user has created in the tree structured cache. The synchronization module 1840 is also preferably a separate thread. The synchronization module 1840 "synchronizes" folders in the cache 266 in the sense that it removes unreferenced files, which might exist due to indeterminate errors, incomplete downloads, deletion of certain files and other reasons. The synchronization module 1840 is preferably invoked periodically at specific intervals to detect and remove such unreferenced files. 5. User Profiling Module The user profiling module 1225 collects limited information about users of the browser enhancement 263. The information is collected on a per user basis and maintained separately for each user. This information is uploaded to the advertising server 1140 or a separate profiling server 1130 via the user profile uploader 1725, as described above. Preferred information fields and formats for their packaging and transport are described below. The user profiling module 1225 preferably collects two types of information about users of the browser enhancement 263. First, static information is collected. This static information comprises demographic and personal information about the user. Second, dynamic information about a user's web surfing is collected. The static information is preferably collected in a single file and contains information specific to each user, such as, for example, city, state, country and zip code of residence, age, gender, user ID and domain. The user ID is an anonymous identifier unique to the user. Other items of information can also be included in the static information, but this information is preferably limited to data that does not personally identify the user, so as not to offend privacy concerns of users. This static user information is entered by the user through a standard dialog box. In an exemplary format, the registration information is packaged in an ASCII text file that consists of a single record (i.e., line) of predetermined fields in a predetermined order. Fields are preferably delimited with a predetermined delimiting character, such as a pipe "I", and each field is preferably introduced by a predetermined key tag. An example of the preceding format is shown in Figure 19a, which is a registration record format table 1910, and an example of a registration record 1920 in accordance with this format is shown in Figure 19b. The user corresponding to the registration record 1920 resides in Boston, Massachusetts, USA; accesses the Internet from the domain twunk.cmgi.com; and has not specified his or her gender or age, those fields not having values associated with them. The registration record 1920 is stored by itself in a file on the user's client computer 120. The filename of this file is unique and is preferably based on a timestamp and the user ' s distinct ID. This file is uploaded using HTTP to the advertising server 1140 or an intermediary user profiling server 1130. The registration information is typically static in the vast majority of cases; however, this need not be so. To ensure that a user's registration data is up to date, the browser enhancement 263 preferably uploads the registration file periodically, such as every 60 days, for example, or whenever the user updates the data. A user may alter the city, state, country and/or zip code fields of the registration data when the user travels to another location, so that the user can receive advertisements more appropriate and useful for the user's temporary locale. In addition to static user registration information, the browser enhancement 263 preferably collects and uploads dynamic information about the user's web surfing. More specifically, the user profiling module 1225 collects and uploads information garnered from the queue data structure maintained by the queue manager 1210 and favorites information from the auto refresh manager 1230. Three types of dynamic user profile information is uploaded: (1) D&D-ed URLs, (2) viewed URLs and (3) URLs designated for automatic refreshing. Each category represents valuable information about a user for different reasons . Favorite URLs can represent strong, long-term interests of the user. Viewed URLs can represent interests that the user has held, as a historical matter and perhaps again in the future. D&D-ed URLs are a superset of viewed URLs. URLs in the first category but not the second (i.e., D&D-ed but not yet viewed) are especially valuable in that they represent with very high likelihood present interests that have not yet extinguished. D&D-ed but not yet viewed URLs can be the basis for nearly certain predictions about the user' s web browsing in the very near term. These predictions can be used to perform non-historical profiling of users. As an example, consider a user who D&Ds links to various web pages concerning certain models of cars. The user profile module 1225 would upload this information as D&D-ed but not viewed URLs to the advertising server 1140, which could respond by sending to the user advertisements for the same or similar models of cars, nearby dealerships of such cars (determined in combination with the geographic information in the static registration data), pertinent car accessories, financing services, insurance brokers, model comparison services, etc. The user profile module 412 preferably collects the dynamic user profile information in three types of files - one for each of the three categories listed above. Like the user registration file, each dynamic user profile file is named uniquely for each user, preferably based on a timestamp and the user' s distinct local cookie. The format of these three types of files is preferably an identical format of a single record of predetermined fields in a predetermined order delimited with a pipe "|" character. Unused fields are preferably occupied by a placeholder, such as the dash "-". Figure 20a shows an example of the preceding format in a dynamic user record format table 2010. Figure 20b shows an example of a dynamic user record 2020 in accordance with this format shown in Figure 20b. The user profile module 1225 creates three files (one for each category of URLs) for the URLs in the queue visually depicted in the list area 505. Each files contains one or more records like the dynamic user record 2020. If a particular URL falls into multiple categories, then identical records for that URL will be in two or more of the three files. The dynamic user profile files are preferably uploaded as soon as possible after any change. As an alternative, the user profile files can be uploaded periodically, such as, for example, every thirty minutes of active use or as often as available bandwidth allows. The user profile module 1225 optionally encrypts the user profile files (both static and dynamic) before uploading. Uploading is preferably accomplished using the HTTP protocol and is made to appear as if originating from a browser. The user profile information is received by the advertising server 1140 directly or indirectly. In one mode of operation, the user profile files are sent directly to one or more ad servers 1140, which process the data so as to determine optimal advertisements for the user. Known algorithms for this processing involve scoring the data across various categories, weighting the data and/or scores so as to arrive at a quantitative result for each of the various advertisements in a warehouse of available advertisements to send the user. In another mode, the user profile files are sent to an intermediary user profiling server 1130, which forwards the information to one or more advertisement servers 1140. The intermediary user profiling server 1130 may manipulate the form of the user profile data to suit different data formatting requirements of different ad servers 1140. The user profiling server 1130 and/or the advertising server 1140 can also archive the user profile data for later use. 6. Auto Refresh Manager The auto refresh manager is responsible for maintaining the local cache copies of a user's automatically updated favorite web sites. The auto refresh manager 1230 communicates with the user interface 1205 to accept a user ' s designation of his or her favorite sites for automatic refreshing. The auto refresh manager 1230 also interfaces with the download manager 1215 and the scheduler 1235 to download updated versions of these favorite web sites, when necessary. The auto refresh manager 1230 implements an algorithm described in detail in a subsequent section for determining when updates are necessary. 7. Scheduler The scheduler 1235 works in cooperation with the download manager 1215 to schedule communication activity with the computer network to which the client computer 120 is connected. The scheduler 1235 prioritizes communication activity, including the use of "idle" time, on the connection to the computer network among the various demands for bandwidth. These demands include primary (i.e., foreground) downloads from the browser 260 and secondary (i.e. , background) downloads and uploads from the browser enhancement 263. Examples of the latter category include downloading of queued links, auto refreshing of queued links, uploading of user profile data, fetching advertisements, downloading upgrades to the browser enhancement software 263 and downloading ticker information. The scheduler 1235 implements a prioritizing algorithm (described in detail in subsequent section rV(D)) to resolve these potentially competing needs; in other words, the scheduler 1235 is a priority resolver. The scheduler 1235 gives top priority to primary downloads. Time not consumed by a primary download may be thought of as "idle" time. Note that idle time may be large blocks of unused time, such as when a web page is being read, or small temporal interstices between primary use of the bandwidth when it likely appears to be in use from the user's perspective. In a preferred form, the scheduler 1235 prioritizes the processes that consume communication bandwidth, according to the method described in section IV(D) below. In an alternative form, the scheduler 1235 manages time utilization directly by detecting idle time and directing a background process to activate during a detected idle time. 8. Upgrade Manager The upgrade manager 1245 is responsible for upgrading the browser enhancement 263 software. The upgrade manager can periodically prompt an upgrade server 110 to check on the availability of an upgrade. When an upgrade is automatically sensed or when a user initiates an upgrade, the upgrade manager 1245 directs the download manager 1215 to download the new software f ile(s) . The upgrade manager 1245 then installs the new software file(s). 9. Activation Manager Figure 21 is a block diagram of the activation manager 1250. The activation manager 1250 is responsible for activating the browser enhancement 263. The browser enhancement 263 can preferably be activated in two ways — so called "bidirectional launching." First, the browser enhancement 263 can be activated by a user just like any other computer program. This mode of activation is determined by the operating system of the client computer 120. Under windows style operating systems, a user would activate the browser enhancement 263 by double-clicking on an appropriate icon or choosing an appropriate choice from a menu (such as from the start bar). In this first mode, a browser detection module 2110 tests whether an instance of the web browser 260 is running, and, if not, a browser launcher 2120 launches one. In a second mode of activation, a user launches the web browser 260, and launching of the web browser 260 initiates the browser enhancement 263. The second mode of activation is made possible, by the browser detection module 2120 running in the background of the computer 120 since boot up. The browser detection module 2120 tests for the presence of an instance of a web browser 260, in accordance with an algorithm described in greater detail below. Upon detection of a web browser 260, the browser launcher 2120 begins the browser enhancement 263. Bidirectional launching ensures that the web browser 260 and the browser enhancement 263 run together regardless of which one starts first. 10. Data Persistence & Recovery Module Because the integrity of queued data is very important to a user, the browser enhancement 263 preferably safeguards this data from unexpected crashes. The data persistence and recovery module 1255, which is shown in Figure 22, performs this functionality. Two mechanisms are preferably utilized. First, an auto queue save module 2210 at regular intervals backs-up the current state of the queued links and objects (i.e., the current state of the list area 505) , creating a recovery file 2220. Second, a transaction recorder 2230 records list area transaction (e.g., D&D operations, deletions, moves, copies, viewings, etc.) in a transaction log 2240. After a crash or other loss of data integrity, a recovery module 2250 reads the recovery file 2220 and the transaction log 2240 to recreate the state of the list area 505 just before the crash. The recovery file 2220 by itself may be insufficient to bring the list area 505 back to its most recent pre-crash state, depending upon the timing of execution of the auto queue save module 2210. The recovery module reads the transaction log 2240 to determine if any operations to the list area 505 were performed subsequent to the last write by the auto queue save module 2210, and, if so, applies those operations to the contents of the recovery file 2220. 11. Advertisement Manager The advertisement manager 1260 works with the download manager 1215 and the ad rotator 1330 ofthe user interface 1205 to deliver advertising to the user via the ad display area 420. The advertisement manager 1260 provides one or more default advertisements in the block storage 1430 ofthe ad rotator 1330. For example, a single advertisement banner ofthe provider of the browser enhancement software may be the default advertisement. The default advertisement(s) can be hard coded into the browser enhancement 263 or downloaded upon installation of the browser enhancement 263. The default advertisement is utilized if errors prevent downloading of or access to the downloaded advertisement blocks. The advertisement manager 1260 also detects a campaign identifier (CID) associated with each advertisement and includes the CID as a parameter sent to the advertising server 1140 when a user clicks on an advertisement in the ad display area 505, thus requesting a download of additional information as a primary request. The advertising server 1140 preferably stores such CID parameters as a key to keep track of user response statistics.
rV. Software Processes The previous section described the objects and modules that make up the browser enhancement 263. Those skilled in the art will recognize that different architectures of objects and modules can be designed to accomplish the same functionality. This section describes that functionality from a process point of view — that is, the methods and algorithms that are performed by the browser enhancement 263. A. Activation Bidirectional launching supports two methods of activating the browser enhancement 263. Figure 23 is a flowchart of the first method 2300. In a first step 2310, the method 2300 accepts a browser 260 choice from the user. This is accomplished when the user registers or sets up the browser enhancement 263, usually when it is installed or run for the first time. Next, the browser enhancement 263 is begun (2320) per standard program invocation techniques of the operating system. The first method 2300 then tests (2330) whether an instance of the chosen browser 260 is running. The testing step 2330 is preferably performed by searching through all active applications for one whose title matches that of the chosen browser 260 from step 2310. In the WINDOWS (TM) operating system, the task manager presents a list of active applications that can be queried. If the testing step 2330 determines that an instance of the chosen browser 260 is running, then nothing more needs to be done. If the testing step 2330 does not detect an instance of the chosen browser 260, then the method 2300 launches (2340) one. A flowchart of a second activation method 2400 is shown in Figure 24. The method 2400 begins with the same first step 2310, accepting a user designation of choice of browser 260. After the host computer system 120 boots (2420), the method 2400 tests (2330) whether an instance of the chosen browser 260 is running. This test is preferably performed the same way in both methods 2300 and 2400. If the testing step 2330 does not detect a browser 260, then the method 2400 enters a polling loop 2440, in which the testing step 2330 is repeated every so often. One desirable polling period is ten seconds, which is approximate to the average delay between activation of a browser 260 and display of its default web page on a typical client computer 10. If, during one of the polling loops 2430, the testing step 2330 detects a browser 260, the method 2400 checks (2450) whether an instance of the browser enhancement 263 is already active. Jf so, the method 2400 returns to the polling loop 2430. If not, the method 2400 launches (2460) the browser enhancement 263. The launching step 2460 of the second method 2400 triggers the beginning step 2320 in the first method 2300. The method 2400 only launches one instance of the browser enhancement 263 even if multiple instances of the browser 260 are running. After the browser 260 and the browser enhancement 263 is closed (2470), the method 2400 returns to the polling loop 2430. The method 2400 preferably is a low-profile process in terms of CPU load and memory consumption, so that the method 2400 does not adversely impact the performance of other processes on the client computer 120. B. Dragging & Dropping The flowchart in Figure 25 illustrates a D&D process 2500. The process 2500 begins at step 2502 as a current web page is being displayed on the browser GUI 300 and the browser enhancement GUI 400 or 500 "floats" above the window of the browser GUI 300. It is assumed that this web page has embedded therein one or more links, each of which are associated with a different web page. In step 2504, the user clicks and holds the left mouse button 75 (or equivalent single) on the link he/she wishes to view in the future. The user drags the link onto browser enhancement GUI 400 or 500 and then releases the left mouse button 75 (or the equivalent). At step 2506, a test is made to determine whether the link is valid. If it is not valid, an error message is displayed to the user at step 2508. If the link is valid, the process 2500 continues to step 2516 to determine if the cache is full. If the test in step 2516 determines that the cache is full, then the process 2500 makes room for the D&D-ed link by deleting (2520) older links. The process 2500 determines that the cache is full if the cache residue falls below a predetermined threshold. If it is necessary to make room for new web pages, queued links and web pages are deleted in the order of the oldest link and associated web pages to the newest link and associated web pages (FIFO) until there is sufficient room in the cache 266 for storage of the object being D&D-ed currently. The "age" of a link for purposes of deleting the oldest link(s) is preferably primarily determined from its last viewing time (i.e., least recently viewed links are deleted first). In the event of a tie (e.g., as when all links are unviewed), then the download time can be the basis for determining the age of an object. Note that the user can take certain actions to avoid the FIFO turnover of links. First, the user can directly highlight links to delete from any part of the queue 1605. Second, the user can select from the popup menu 600 an option (not shown) to delete everything in the "Unfiled" folder. Third, the user can increase the size of the cache 266 with the appropriate dialog pane. After determining (2516) whether or not the cache 266 is full and, if so, deleting (2520) old links, the process 2500 checks (2540) whether the link is duplicate of one already in the queue 1605 and whether an option is set to disallow multiple copies of links. If both conditions are true, the D&D operation is not completed. Otherwise, the link is placed (2542) in the queue 1605 to await downloading. Note that the step 2542 may involve additional processing on the part of the browser enhancement 263 when certain browsers 260, such as pre-INTERNET EXPLORER 4.0 (TM) browsers, are used and the link is an image map. Details of the necessary processing in this case are covered in the application serial number 08/988,347, already cited above. C. Queued Link Management Figure 26 is a flowchart of a process 2600 for managing queued links stored in the queue 1605. The process 2600 begins when the browser enhancement GUI 251 is maximized (164). The process 2600 then reads (2604) the queue 1605 and displays (2608) the tree view of the queue 1605 in the list area 505. The process 2600 then determines (2612) the download status of the each link in the queue 1605. This status is preferably displayed in the list area 505as a colored circle to the left of each queued link. Collective download status (downloading if any individual link is presently downloading in progress) is also preferably determined and shown. The process 2600 next awaits input from the user at step 2616. Jf there is no user input, then the process 2600 loops back to the reading step 2604. In the absence of user input, this loop preferably repeats approximately every 19 seconds. Jf the user's input is to view a queued link (e.g., left clicking on the link in the list area 505), then the process 2600 again determines (2620) the download status of the selected link. If the selected link has not yet been downloaded (i.e., amber or red status), then the process 2600 displays (2624) a message indicating that the user should drag the link into the browser GUI 300 if she wishes to see the link. Doing so creates a primary connection to the web server 110 of the selected queued link and displays (2628) the web page in the browser GUI 300. In an alternative embodiment, when the user selects an amber link to view, the process 2600 can immediately display the text portion of the web page while waiting for graphics to continue to download. This alternative embodiment is described in the above referenced application serial number 08/988,347. If the status of the selected link is fully downloaded and cached (i.e., green status) after the determining step 2620, then the process 2600 displays (2644) the page in the browser GUI 300 from the cache 266. If the user's input in response to step 2616 is to perform another action with the link (e.g., to delete the entry, copy the entry, force its download, stop its download), then the process 2600 performs (2664) the appropriate action according to techniques well known in the art. D. Prioritization The browser enhancement 263 resolves conflicts between connection requests from the various component clients (i.e., the components 1710 - 1740 in Figure 17). The priority scheme is preferably as follows in descending order of priority: (1) Primary download request issued by the browser 260; (2) Background download request activated by D&D-ing operation; (3) Advertising banner downloads from the advertising server 1140; (4) Auto refreshing of cached links; (5) User profile information uploaded to the advertising server 1140; (6) Ticker data downloads; and (7) Downloads of upgrades to the browser enhancement 263. For each level of priority, one or more threads perform the indicated communication activity. The relative priorities of these threads is managed. In a time-shared multitasking client computer 120, multiple programs or threads appear to execute simultaneously when, in fact, each program shares the microprocessor 221 and other computer resources by repeatedly executing briefly then suspending while other threads execute, as is well known in the art. Controlling the priority of a thread indirectly controls the percentage of time it is actually executed. Figure 27A depicts the various communication threads and their relative priorities. At the top priority (priority 1) are some number of threads for foreground communication activity by the browser 260. In one embodiment, the browser 260 alone is responsible for these threads. In another embodiment, the browser enhancement 263 interrupts communication threads from the browser 260 and sets their priority explicitly. The browser 260 is idle with regard to communication when no priority 1 threads exist or when those threads are not actively being executed in the client computer's 120 multitasking operating system. The browser enhancement 263 spawns the threads at priority levels 2-7 (shown in pattern in Figure 27 A). The browser enhancement 263 distributes its share of the client computer's 120 active execution time among the various threads it spawns. At priority level 2 are some number of threads for downloading D&D-ed links, in accordance with the process illustrated in Figure 27B and described below. At each of priority levels 3-7 is no more than a single thread for downloading advertisements, downloading refreshed web pages (and testing for the same), uploading user profile information, downloading ticker data and downloading software upgrades, respectively. Figure 27B is a flowchart of process 2700 for downloading D&D-ed links. The process 2700 reads through the queue 1605 of D&D-ed objects and spawns threads to download links. The process 2700 begins by reading (2705) through the queue 1605 to the next "red" D&D-ed link (i.e., D&D-ed but not yet begun to be downloaded). Preferably the reading step is performed in order from least recently D&D-ed to most recently D&D-ed. When the next "red" D&D-ed link is found, the process 2700 inquires (2710) as to the number of active (i.e. , "amber") links and compares this number to a predetermined threshold N, which is a parameter derived from the type of connection specified by the user or automatically detected by the browser enhancement 263. As an example, N = 2 f or telephone modem connections or N = 3 for DSL or cable modem connections. If N or more links are already in progress, then the process 2700 waits (2715) and returns to the reading step 2705. Jf less than N links are in progress, then the process 2700 spawns (2720) a thread at priority level 2 to get the main HTML page at the link' s URL. The process 2700 then parses (2725) the main HTML page to compile a list of resources needed by the web page. The process 2700 then spawns (2730) up to M threads at priority level 2 to download the resources. In one embodiment, M = 4. The parsing step 2725 can be performed by the thread spawned in step 2720, and the M other threads can be invoked by the thread spawned in step 2740 as children. Thus, up to M+l threads may be active at once to download a single link, but no more than M actively use the communication bandwidth together. Once a thread completes its task, it automatically dies. After the spawning step 2730, the process 2700 loops back to the reading step 2705, which cycles through the queue 1650. In another embodiment, the use of the communication medium is managed directly — rather than the threads that use the communication channel, as described above. Under this approach, communication activity of a given priority level continues until a request is made by a higher priority item, in which case the current communication stops and the higher priority communication is given access to the channel. When the higher priority data exchange is completed, the lower priority data exchange resumes. Representative of this approach is a priority sensitive downloading process 2750 of a queued link in priority level 2. The process 2750 begins, as does the process 2700, by reading (2705) through the queue 1605 to the next "red" D&D-ed link. When the next "red" D&D-ed link is found, the process 2750 tests (2755) whether the channel is busy with a higher priority use. Exemplary mechanisms for performing the testing step 2755 are detecting active processes associated with the channel and monitoring data transmitted on the channel. If the channel is busy, the process 2750 suspends (2760) and continues testing (2755) whether the channel is busy. If and when the channel is not busy, the process 2750 connects (2765) to the requested server. After connection, the process 2750 again tests (2770) whether the channel is still available. If the channel is now busy, i.e., use of the channel has been preempted with a higher priority use, the process 2750 suspends (2775) and continues testing (2770). If the channel is still available, the process 2750 receives (2780) a block of one or more packets of data from the requested server 110. After receipt of each block, the process 2750 again tests (2785) whether the channel is still available. Jf the channel is busy, communication is suspended (2790) and the process 2750 repeatedly tests (2785) whether the channel is busy. Jf the channel is still available after receipt of a block, the process tests (2794) whether the block just transmitted is the end of the requested data. If not, then the process 2750 repeats the receiving step 2780, the busy testing step 2785 and the end testing step 2794 in a loop. After receipt of the last block of data, the process 2750 releases (2798) the channel and loops back to the reading step 2705. The process 2750 for downloading a queued link is representative of the processes for other types of communication. On a given channel, communication activity continues until a request is made by a higher priority, in which case the current communication stops and the higher priority communication is given access to the channel. If multiple communication channels are available, then the process 2750 runs concurrently for each communication channel. The browser enhancement 263 can provide multiple communication channels if the connection from the client computer 120 to the computer network has sufficient bandwidth. For example, if the modem 50 is a DSL modem or cable modem, its single physical channel can be divided into several logical channels - perhaps as many as ten, leaving at least one channel for each category of service.. In other words, the number of channels in this alternative embodiment is like the number of simultaneous threads in the preferred embodiment. One can generally think of the browser enhancement 263 as utilizing idle bandwidth, and this view is not changed when multiple channels are provided. All but the primary channel can be thought of as representing idle bandwidth. Reserving some bandwidth as "idle" bandwidth for non-primary use may be the most efficient allocation in certain circumstances. E. Refreshing Figure 28 is a flowchart of an automatic refreshing method 2800. The method 2800 determines when a queued web page that a user has designated for automatic refreshing should be refreshed. The method 2800 is periodically invoked for each queued web page so designated. The method 2800 begins by determining (2805) the date and time (or date-time stamp ~ DTS) of the last download of the web page. The method 2800 then tests (2810) whether the web page has expired on its hosting web server 110. If the web page is expired, i.e., if it no longer exists on the server 110, then the method 2800 ends. If the web page is not expired, then the method 2800 generally attempts to determine the age (or at least the relative) age of the web page on the server 110. To do so, the method 2800 preferably issues (2815) a head request to the server 110. A typical response to the head request includes a "last modified" field or DTS. However, not every web server 110 provides this information. The method 2800 tests (2820) whether the head request successfully returned a "last modified" DTS (LMDTS), and if so reads (2825) this value from the returned header. The method 2800 compares (2830) the last download DTS (LDDTS) to the LMDTS. If the web page has not been modified since it was last downloaded, then the method 2800 ends. Jf the web page has been modified since it was last downloaded, then the method 2800 schedules (2835) downloading of the web page, preferably in accordance with the priority sensitive downloading process 2700 for the auto refreshing channel. Jf the testing step 2820 determines that the head request did not successfully return a LM DTS, then the method 2800 executes a first fallback strategy, which is to read (2840) the "if modified since" ( S) field on the hosting web server 110. The method 2800 tests (2845) whether the IMS field was successfully read. If so, the method 2800 surrogates (2850) the IMS value for the LM DTS and continues to the DTS comparison step 2830. If the testing step 2845 determines that the first fallback strategy is not successful, then the method 2800 executes a second fallback strategy, which is to get (2855) the text only ofthe web page. The method 2800 then compares (2860) the size ofthe text just retrieved to the size of the cached text. If the sizes of these texts are the same, then the method 2800 assumes that the web page on the server is not different from the web page already cached web, and the method 2800 ends. If the sizes of these texts differ, then the method 2800 assumes that the web page has been changed, and the method 2800 continues to the DTS download scheduling step 2835. Many variations of the automatic refreshing method 2800 are possible. For example, the page expiration testing step 2810 is optional; if the page has expired, any attempt to refresh it will fail, leaving the old copy in the cache 266. As another example, the order of the LDDTS determining step 2805 and the page expiration testing step 2810 can be reversed. Also, the LDDTS determining step 2805 can be performed just before the DTS comparison step 2830. As yet another example, the LDDTS determining step 2805 can be performed simultaneously with other steps in a separate parallel thread. As a final example, the three the techniques for determining the relative age of the web page on the server 110 (i.e., head request, reading the IMS field or size comparison of text only) can be performed as options in a different order and/or one or two of the techniques can be omitted from the method 2800 entirely. Those skilled in the art will appreciate these and many other variations. F. Cache Capacity Management Cache capacity management comprises two algorithms. The first algorithm is a test for determining when the cache 266 is full. The second algorithm is an automatic deletion algorithm for clearing storage space in the cache 266. The cache 266 is declared to be "full" when the current cache level is within a predetermined amount of the cache size. The current cache level is the total storage space occupied by cached content. The predetermined amount is a parameter CAPACrTY_THRESHOLD. Mathematically, the test for determining whether the cache 266 is full is the following inequality: current cache level ≥cache size - CAPACITY_THRESHOLD. If the preceding inequality is true, then the cache 266 is considered full; otherwise, the cache is considered not to be full. This calculation and comparison is preferably performed by the cache full determination step 2516 in the D&D process 2500. If the cache 266 is a multi-level cache, then this calculation and comparison can be performed at each level, first at the innermost level and then at successively outer levels. Figure 29 is a flowchart of an automatic deletion algorithm 2900 for clearing storage space in the cache 266. The automatic deletion algorithm 2900 is preferably called by the step 2520 of the D&D process 2500. The algorithm 2900 begins by generating (2910) a list of cached links from the queue 1605. The algorithm 2900 next sorts (2920) the cached links in order from least recently viewed (LRV) to most recently viewed (MRV). The algorithm 2900 then iterates through this list using an index counter I, which is initialized (2930) to be one. During each iteration, the algorithm 2900 deletes (2940) all files associated with the I-th link in the sorted list of flagged queued links. Then, the algorithm 2900 computes (2950) the current cache fill level, preferably by totaling the size of each file in the cache 266. Next, the algorithm 2900 determines (2960) whether sufficient free space is available in the cache 266. The sufficient space determination step 2960 is preferably accomplished by comparing the free space, which is the cache size minus the current cache fill level, to a parameter NORM_RESrDUE. Jf the free space exceeds NORM_RESJDUE, then sufficient space has been cleared and the algorithm 2900 ends. Jf the free space does not exceed NORM_RESJDUE, then the algorithm continues iterating through the list by incrementing (2970) the index counter I and looping back to the deleting step 2940. G. User Profiling Figure 30 is a flowchart of a user profiling method 3000 according to one embodiment of the invention. Although the profiling method 3000 can be performed on a per client computer 120 basis, it is preferably done on a per user basis, where multiple users potentially share the same browser enhancement 263. The browser enhancement 263, however, maintains different queues 1605 and different caches 266 for each user. The user profiling method 3000 begins when an individual user logs on at step 3010. The method 3000 then tests (3020) whether the user's registration data has been uploaded within a predetermined period of time, such as sixty days. If not (including the case when the user is logging on for the first time), then the registration data might be stale, so the method 3000 prompts (3025) the user to update (or create) his/her registration data. The method 3000 then tests (3030) whether the registration data has been modified (or created). If so, then the method 3000 uploads (3040) the registration data, such as the registration record 1920. After the uploading step 3040 or if the user's registration data is unchanged, the method 3000 accepts (3050) D&D operations and thereafter uploads (3060) user surfing information, such as the dynamic user profile record 2020, that is based on the D&D-ed objects or cookies. Preferably, the method 3000 is keyed to only D&D objects that are Internet URLs or links. However, the method 3000 is not necessarily so limited; general objects, such as documents, spreadsheets or other D&D-ed files could form the basis for user profile information (ignoring privacy concerns for the sake of technical disclosure in this document); for example, D&D-ing of a LISP source code file provides valuable information about the user to marketers of LISP compilers, and D&D-ing of a file containing numerous occurrences ofthe term "skateboard" provides valuable information about the user to marketers of skateboards and skateboard accessories. The method 3000 continues by testing (3070) whether the browser enhancement 263 is shut down, in which case the method 3000 terminates, or not, in which case the method loops back to the stale testing step 3020. H. Advertising Figure 31 is a flowchart of a user segregating targeted advertising method 3100 according to one embodiment of the invention. The method 3100 first gathers (3110) user information segregated by users. This information may be slow changing (i.e., "static") demographic/personal information or information based on dynamic web-surfing (e.g., D&D- ing) behavior. The information is segregated by user, not client computer 120, even when multiple users share the same client 120. Preferably, this is accomplished by a user' s logging in individually as they use the browser enhancement 263, which maintains separate queued and cached files for each user. Alternatively, this could be accomplished with an enhanced, integrated browser to which users log on individually to launch and which stores user information in a segregated manner, such as a separate cookie directory for each user. Next, the method 3100 optionally processes (3120) the user information, if necessary. Preferably, the processing step 3120 occurs at an intermediate server, such as the user profiling server 1130, though other locations, such as the advertising server 1140 or the client computer 120, are feasible. The method 3100 selects (3130), on the basis of the gathered and possibly processed information, one or more advertisements targeted to the individual user. Techniques for performing the selecting step 3130 are known to those skilled in the art. Next, the method displays (3140) the advertisements to the targeted user individually. Preferably, the display is in the ad display area 420 of the browser enhancement 263 GUI 400 of 500, although other display areas, such as separate pop-up windows, are possible. The user specific display step 3140 is made possible by the fact that the browser enhancement 263 (or its variations) is aware of which actual user is using the software at any time. As a final, optional step, the method 3100 can measure (3150) the user ' s response to the advertisements, such as if and/or when the user clicks on the advertisement in the ad display area 420. Figure 32 is a flowchart of a targeted advertising method 3200 based on future viewing intentions, according to an embodiment of the invention. The method 3200 does not target advertisements on the basis of merely historical web page viewing behavior of a user. The method 3200 preferably involves actions at the user's client computer 120, as shown on the left side of Figure 32, and actions at the advertising server 1140, as shown on the right side of Figure 32. The method 3200 waits in a loop, detecting (3210) D&D operations by the user at the client computer 120. At some time after a D&D operation is detected (3210), the method 3200 uploads (3220) to the advertising server 1140 information regarding the D&D operation. The uploading step 3220 may be direct or indirect, such as via the user profiling server 1130. At the advertising server, the D&D-ed information is received (3230), and one or more advertisements are selected (3240) at least partially on the basis of this information. The advertising server 1140 downloads (3250) the selected advertisement(s) to the client computer 120, which receives (3260) and optionally stores the advertisement(s). Sometime thereafter, the method 3200 displays (3270) the advertisement(s) to the user. Preferably, the steps 3220- 3270 are performed quickly after a D&D operation is detected (3210), so that the displayed advertisement is a timely response to the D&D operation, which is a indicator of the user' s future viewing intentions and a substantially certain indicator of the user' s future viewing behavior. In other words, the targeted advertisement is preferably displayed (3270) before these future intentions have been fulfilled. However, even when there is a substantial time gap between the D&D operation and display of the advertisement targeted thereto, there is still substantial value in the method 3200, as the user's interest in the D&D-ed subject matter (and therefore the subject matter of the advertisement) is likely not to have expired after the user has viewed the D&D-ed object. The displaying step 3270 can be in accordance with a schedule for display of multiple advertisements, including the targeted advertisement(s) selected in step 3240 and possibly other targeted or untargeted advertisements. Various possibilities exist for controlling the timing of the displaying step 3270. As one example, all advertisements targeted on the basis of D&D-ed but unviewed objects can be rotated for display, and once a D&D-ed object is viewed by the user (or some finite time thereafter), the corresponding targeted advertisements are deleted from the rotation. In this way, the targeted advertisements are displayed (3270) when they are likely to be the most valuable: before the user's curiosity in that subject has been satisfied. As another example, an advertisement targeted on the basis of a D&D-ed object can be displayed only while the user is viewing that D&D-ed object. These and many other variations are possible with the method 3200. In an alternative process, the steps 3220, 3230, 3250 and 3260 are omitted, and all actions are taken locally at the client computer 120. In this alternative, the client computer stores a set (or "warehouse") of advertisements locally. This set of advertisements can be updated from time to time by communication with the advertising server 1140. In this case, the advertisement selecting step 3240 is performed locally at the client computer 3240, in direct response to the detection (3210) of a D&D operation by the user. An advantage of this alternative process is a faster response time. A disadvantage of this alternative process is that the size and number of advertisements in the local warehouse is more limited than possible in a typical advertising server 1140. In a hybrid local/server approach, some combination of local and server advertisement storage is utilized. For example, if a relevant advertisement cannot be found in the local warehouse, then the steps 3220, 3230, 3250 and 3260 are performed to retrieve a relevant advertisement from the vaster array of advertisements stored at the advertising server 1140. As another example, if advertisements cannot be downloaded for any reason (e.g., an error at the advertising server 1140), then the steps 3220, 3230, 3250 and 3260 are performed to retrieve a relevant advertisement from the local warehouse. I. Management of Multiple Instances of a User's Browser Enhancement A user with multiple computers may have the browser enhancement 263 on two or more client computers 120. As an example, the user may have a desktop personal computer at his office, another at his home, an Internet-enabled television terminal and a PDA with Internet connectivity. Installed on all four of these computers can be an instance of the browser enhancement 263. By managing these multiple instances of the browser enhancement 263 in a coordinated way, several advantages result. The user can use each instance of the browser enhancement 263 with the same user ID. As a result, the user profiling server 1130 forms a profile of the user based on the user' s use of all four computers. In this way, the profile is a more comprehensive and accurate representation of the user' s overall Internet usage. This joint profiling of a user across several different platforms avoids the problem of partial profiles, which may be skewed if the user utilizes the Internet differently at his home from at his office, as is often the case. Joint profiling across a greater number of platforms can also reveal valuable cross correlations that would otherwise be unobservable to the user profiling server 1130. The user can access the same queue 1605 with each instance of the browser enhancement 263. When using one instance of the browser enhancement 263, the user typically modifies the queue 1605 by D&D operations. The queue 1605 is a data structure stored in the client computer 120 running the active instance of the browser enhancement 263. Recall that the queue 1605 is a collection of URLs, shortcuts and other pointers; the queue 1605 typically does not store content itself, but rather points to content, a copy of which is stored in the cache 266 of the client computer 120. The queue 1605 therefore does not occupy a large amount of memory. The queue 1605, in one form or another, is also regularly uploaded to the user profiling server 1130. When the user exits the browser enhancement 263, the final form of the queue 1605 is preferably uploaded again to the user profiling server. Storage ofthe queue 1605 on a server, such as the user profiling server 1130, enables synchronization of multiple instances of the browser enhancement 263. When the user activates another instance of the browser enhancement 263 on a different computer, the activation procedure preferably uploads from the user profiling server 1130 the copy of the queue 1605 stored there. The browser enhancement 263 then compares the uploaded queue 1605 with the last known state of the queue 1605 on the client computer 120 to determine the download status of queue 1605 entries on that client computer 120. For example, URLs D&D-ed during the previous session on the previous client computer 120 initially have an amber download status on the current client computer 120. The browser enhancement 263 can then utilize idle time on the current client computer 120 to populate the local cache 266 with the web page content at these URLs. In this way, the user can access on any computer URLs D&D-ed on any other computer. This feature provides seamless use of the browser enhancement 263 across various hardware platforms. Many variations of multi-computer interoperability are possible. First, although the user profiling server 1130 is a convenient server for queue 1605 storage and synchronization because the user profiling server 1130 collects that information anyway, a separate server could be used in place of the user profiling server 1130 for this function. Second, the user can force synchronization at any time, not just at initialization. Third, synchronization is optional in its entirety or on a link-by-link basis. Fourth, one particular instance of the browser enhancement 263 can be designated as the master, so that only its queue 1605 is uploaded to a server, and all other instances of the browser enhancement are synchronized to the master. What has been described and illustrated herein is a preferred embodiment of the invention along with some of its variations. The terms, descriptions and figures used herein are set forth by way of illustration only and are not meant as limitations. Those skilled in the art will recognize that many variations are possible within the spirit and scope of the invention, which is intended to be defined by the following claims — and their equivalents — in which all terms are meant in their broadest reasonable sense unless otherwise indicated.

Claims

What is claimed is:
1. A method for profiling a user of a computer network, the method comprising: accepting one or more user selections relating to information intended to be downloaded from the computer network in the future; and determining a profile of the user at least partially on the basis of the user selections.
2. The method of claim 1 wherein the information intended to be downloaded from the computer network in the future is downloaded during periods that are idle from conventional downloading.
3. The method of claim 1 wherein the information intended to be downloaded from the computer network in the future is known with certainty.
4. The method of claim 1 wherein the information intended to be downloaded from the computer network in the future is deterministic information.
5. The method of claim 1 wherein the computer network is the Internet.
6. The method of claim 5 wherein the user selections are URLs.
7. The method of claim 1 wherein the user utilizes a client computer connected to the computer network, the client computer having a display, the method further comprising: providing a desktop platform on the display; wherein the accepting step comprises accepting the user selections in the desktop platform.
8. The method of claim 7 wherein the desktop platform is a window.
9. The method of claim 7 wherein the client computer runs a browser program, the browser having a user interface on the display, and wherein the accepting step comprises: accepting one or more objects dragged from the browser user interface and dropped in the desktop platform.
10. The method of claim 9 wherein the objects are hyperlinks.
11. The method of claim 1 , wherein the user utilizes a client computer having a connection to the computer network, the method further comprising: downloading the information from the computer network during at least one idle time on the connection.
12. The method of claim 11 further comprising: caching the downloaded information.
13. The method of claim 1 wherein the profile comprises demographic data about the user.
14. The method of claim 1 wherein the profile comprises one or more of the characteristics selected from the group consisting of a user identification, city of residence, state of residence, zip code of residence, country of residence, age, sex and network domain.
15. The method of claim 1 wherein the computer network is the Internet, and the profile comprises information regarding the user's surfing of the Internet.
16. The method of claim 1 further comprising: transmitting additional information to the user, wherein the additional information is selected at least partially on the basis of the profile of the user.
17. The method of claim 16 wherein the additional information comprises an advertisements.
18. A method for collecting user information of a user of a computer network, the method comprising: accepting one or more user selections relating to information intended to be downloaded from the computer network in the future; and transmitting data regarding the selections to a destination.
19. The method of claim 18 wherein the destination is an advertising server, wherein the advertising server transmits advertisements to the user at least partially on the basis of the data regarding the selections.
20. The method of claim 18 wherein the destination is an advertising server, and the transmitting step further comprises: transmitting the data regarding selections to an intermediary; and transmitting data based on the data regarding selections to the destination.
21. The method of claim 20 wherein the transmitting step further comprises: processing the data regarding selections to produce the data based on the data regarding the selections.
22. The method of claim 1 wherein the user selections derive from two or more computers.
23. An apparatus for use by a user of a computer network, the apparatus comprising: a user interface, the user interface accepting one or more user selections relating to information intended to be downloaded from the computer network in the future; and a network communication client, the network communication client uploading data derived from the user selections to a destination on the computer network.
24. The apparatus of claim 23 wherein the computer sometimes conventionally downloads information from the computer network and sometimes does not conventionally downloading information from the computer network, thereby causing one or more idle times, and wherein the network communication client uploads at least some of the derived data during one or more idle times.
25. The apparatus of claim 24 further comprising: a browser, the browser sometimes conventionally downloading information from the computer network and sometimes not conventionally downloading information from the computer network, thereby causing the one or more idle times.
26. The apparatus of claim 23 further comprising: a cache.
27. The apparatus of claim 23 wherein the user interface is a graphical user interface.
28. The apparatus of claim 23 wherein the network communication client is an HTTP compliant client.
29. The apparatus of claim 23 further comprising: an ad rotator, connected to the user interface, wherein the ad rotator controls displaying of advertisements in the interface.
30. The apparatus of claim 29 wherein the advertisements are selected at least in part on the basis of the uploaded derived data.
31. A method for profiling a user of a computer network, the user at times operating a client computer connected to the computer network, the client computer also operated by one or more other users, the method comprising: accepting data relating to the user' s downloading of information from the computer network; and determining a profile of the user, the profile being independent of the one or more other users.
32. The method of claim 31 wherein the data comprises information intended to be downloaded from the computer network in the future.
33. The method of claim 32 further comprising: downloading the information intended to be downloaded from the computer network in the future during periods that are idle from conventional downloading.
34. The method of claim 32 wherein the information intended to be downloaded from the computer network in the future is known with certainty.
35. The method of claim 32 wherein the information intended to be downloaded from the computer network in the future is deterministic information.
36. The method of claim 31 wherein the computer network is the Internet.
37. The method of claim 35 wherein the data comprises URLs selected by the user.
38. The method of claim 31 wherein the client computer has a display, the method further comprising: providing a desktop platform on the display; and accepting user selections in the desktop platform, wherein the data comprises the user selections.
39. The method of claim 38 wherein the desktop platform is a window.
40. The method of claim 38 wherein the client computer runs a browser program, the browser having a user interface on the display, and wherein the accepting step comprises: accepting one or more objects dragged from the browser user interface and dropped in the desktop platform.
41. The method of claim 40 wherein the objects are hyperlinks.
42. The method of claim 31 further comprising: downloading the information from the computer network during at least one idle time on the connection.
43. The method of claim 42 further comprising: caching the downloaded information.
44. The method of claim 31 wherein the data comprises demographic data about the user.
45. The method of claim 31 wherein the data comprises one or more of the characteristics selected from the group consisting of a user identification, city of residence, state of residence, zip code of residence, country of residence, age, sex and network domain.
46. The method of claim 31 wherein the computer network is the Internet, and the data comprises information regarding the user's surfing of the Internet.
47. The method of claim 31 further comprising: transmitting additional information to the user, wherein the additional information is selected at least partially on the basis of the profile of the user.
48. The method of claim 47 wherein the additional information comprises an advertisement.
49. The method of claim 31 further comprising: assigning the user a unique log on name.
50. The method of claim 31 wherein the data relating to the user' s downloading of information is collected from several different computers.
51. A method for profiling a user of a computer network, the user at times operating a client computer connected to the computer network, the client computer also operated by one or more other users, the method comprising: accepting data relating to the user ' s downloading of information from the computer network; and transmitting the data to a destination, so that the destination can determine a profile of the user, the profile being independent of the one or more other users.
52. The method of claim 51 wherein the destination is an advertising server, wherein the advertising server transmits advertisements to the user at least partially on the basis of the profile.
53. The method of claim 51 wherein the destination is an advertising server, and the transmitting step further comprises: transmitting the data to an intermediary; and transmitting information based on the data to the destination.
54. The method of claim 53 wherein the transmitting step further comprises: processing the data to produce the information based on the data.
55. An apparatus for use by a user of a computer network, the user at times operating a client computer connected to the computer network, the client computer also operated by one or more other users, the apparatus comprising: a user interface, the user interface accepting one or more user selections relating to downloading of information from the computer network; and a network communication client, the network communication client uploading to a destination on the computer network data derived from the user selections and not from any data relating to the one or more other users.
56. The apparatus of claim 55 wherein the computer sometimes conventionally downloads information from the computer network and sometimes does not conventionally downloading information from the computer network, thereby causing one or more idle times, and wherein the network communication client uploads at least some of the derived data during one or more idle times.
57. The apparatus of claim 55 wherein the user interface is a graphical user interface.
58. The apparatus of claim 55 wherein the network communication client is an HTTP compliant client.
59. The apparatus of claim 55 further comprising: an ad rotator, connected to the user interface, wherein the ad rotator controls displaying of advertisements in the interface.
60. The apparatus of claim 59 wherein the advertisements are selected at least in part on the basis of the uploaded derived data.
61. A computer readable medium on which are embedded computer instructions for performing a method of enhanced downloading of information from a computer network to a computer operated by a user, the computer sometimes conventionally downloading information from the computer network and sometimes not conventionally downloading information from the computer network, thereby causing one or more idle times, the method comprising: accepting a selection of a user defined set of one or more pieces of additional information to be downloaded; downloading at least some of the additional information from the computer network during at least one of the idle times; and caching the downloaded additional information.
62. The computer readable medium of claim 61 wherein the method further comprises: detecting at least one of the one or more idle times; and wherein the downloading step comprises downloading at least some of the additional information from the computer network during the detected at least one idle time.
63. The computer readable medium of claim 61 wherein the computer network is the Internet.
64. The computer readable medium of claim 63 wherein the method further comprises: providing a web browser at the computer.
65. The computer readable medium of claim 63 wherein the user selections comprise an address of a web page and the additional information comprises content of a web page.
66. The computer readable medium of claim 61 wherein the method further comprises: utilizing a telephone connection to connect to the computer network.
67. The computer readable medium of claim 61 wherein the method further comprises: displaying the retrieved additional information; and disconnecting the computer from the computer network.
68. The computer readable medium of claim 67 wherein the displaying step is completed prior to the disconnecting step.
69. The computer readable medium of claim 61 wherein the method further comprises: maintaining a list related to the additional information, wherein the list comprises one or more selected from the group consisting of uniform resource locators, addresses in the computer network, links, hotlinks and hyperlinks.
70. The computer readable medium of claim 69 further comprising: accepting a designation of an element in the list as a source of information to be updated;
71. The computer readable medium of claim 69 wherein the method further comprises: periodically monitoring the source of information; sensing for modification of the information; and wherein the downloading step is performed if a modification is sensed.
72. The computer readable medium of claim 61 wherein the method further comprises: providing a graphical user interface by which the a selection of a user defined set of one or more pieces of additional information are entered.
73. The computer readable medium of claim 72 wherein the method further comprises: running the graphical user interface in conjunction with a web browser.
74. The computer readable medium of claim 72 wherein the step of accepting user selections comprises receiving a dragging and dropping operation.
75. The computer readable medium of claim 72 wherein the step of accepting user selections comprises sensing a depression of a mouse button.
76. The computer readable medium of claim 75 wherein the mouse button is a middle mouse button.
77. The computer readable medium of claim 75 wherein the mouse button is labeled so as to indicate that depression of the mouse button will cause downloading of the additional information at a future time.
78. The computer readable medium of claim 72 wherein the step of accepting user selections comprises: receiving voice signals from the user; recognizing a key sound; and after recognizing the key sound, matching one or more subsequent sounds with an identifier of the additional information;
79. The computer readable medium of claim 78 wherein the key sound is substantially the sound of the word "queue."
80. The computer readable medium of claim 68 wherein the additional information to be downloaded is identified in a file along with other possible additional information to be downloaded, the method further comprising: parsing the file to find all identifiers of additional information to be downloaded; and 9, wherein the matching step comprises picking the parsed identifier phonetically most similar to the one or more subsequent sounds.
81. The computer readable medium of claim 80 wherein the file is an HTML file and the identifiers are hyperlinks.
82. The computer readable medium of claim 61 further comprising: producing a sound upon completion of the accepting step.
83. The computer readable medium of claim 61 wherein the caching step comprises: caching the additional information on a hard disk drive.
84. The computer readable medium of claim 61 wherein the method further comprises: accepting user input that identifies the additional information to be retrieved; retrieving at least a portion of the cached additional information; and displaying the retrieved additional information.
85. The computer readable medium of claim 84 wherein the additional information comprises an advertisement.
86. The computer readable medium of claim 84 wherein the downloading step comprises: displaying the additional information at one or more times selected by the user.
87. The computer readable medium of claim 61 wherein the method further comprises: displaying the information conventionally downloaded, wherein the one or more idle times overlap to some extent with a time during which the information conventionally downloaded is displayed.
88. The computer readable medium of claim 61 wherein the method further comprises: collecting user data.
89. The computer readable medium of claim 88 wherein the user data comprises static demographic data.
90. The computer readable medium of claim 88 wherein the user data comprises characteristics of use of the computer network.
91. The computer readable medium of claim 88 wherein the user data comprises the user selections.
92. The computer readable medium of claim 88 wherein the method further c mprises: forwarding the user data to an advertising server.
93. The computer readable medium of claim 88 wherein the method further comprises: targeting advertisements in accordance with the user data.
94. The computer readable medium of claim 61 wherein the idle time is sandwiched between periods of downloading activity.
95. The computer readable medium of claim 61 wherein the step of downloading comprises prioritizing the downloading of the conventionally downloaded information and the additional information.
96. The computer readable medium of claim 95 wherein the priority of conventionally downloaded information is higher than the priority of additional information to be downloaded.
97. The computer readable medium of claim 61 wherein the downloading step is performed according to a protocol selected from the group consisting of HTTP, secure HTTP and FTP.
98. The computer readable medium of claim 61 wherein the computer readable medium is a RAM within the computer.
99. The computer readable medium of claim 61 wherein the computer readable medium is a CD-ROM.
100. A computer readable medium on which are embedded computer instructions for performing a method for enhancing downloading of information from a computer network to a computer operated by a user, the computer sometimes conventionally downloading information from the computer network and sometimes not conventionally downloading information from the computer network, thereby causing one or more idle times, the method comprising: accepting a selection of a user defined set of one or more pieces of additional information to be downloaded; downloading at least some of the additional information from the computer network during at least one of the idle times; and displaying the additional information at one or more times selected by the user.
101. The computer readable medium of claim 100 wherein the user selections are accepted in an order of acceptance, and the additional information is displayed in an order of display that is independent of the order of acceptance.
102. The computer readable medium of claim 100 wherein the additional information is downloaded in an order of downloading, and the additional information is displayed in an order of display that is independent of the order of downloading.
103. A computer readable medium on which is embedded one or more computer programs, the computer operated by a user, the computer sometimes conventionally downloading information from the computer network and sometimes not conventionally downloading information from the computer network, thereby causing one or more idle times, the one or more computer programs comprising: an interface, by which a selection of a user defined set of one or more pieces of additional information to be downloaded are entered; at least one transfer client, connected to the interface, by which at least some of the additional information is requested from the computer network during at least one of the idle times; and a cache, connected to the transfer client, where the requested additional information is stored for later retrieval.
104. The computer readable medium of claim 103 wherein the interface is a graphical user interface.
105. The computer readable medium of claim 104 wherein the user selections are entered by a dragging and dropping operation.
106. The computer readable medium of claim 104 wherein the user selections are entered by depressing a specially designated mouse button.
107. The computer readable medium of claim 104 wherein the user selections are entered voice command, the computer readable medium further comprising: a voice recognition module.
108. The computer readable medium of claim 103 wherein the transfer client is an HTTP compliant client.
109. The computer readable medium of claim 103 wherein the one or more computer programs further comprises: a queue manager, connected to the interface and the transfer client, by which the user selections are queued.
110. The computer readable medium of claim 103 wherein the one or more computer programs further comprises: a storage manager connected to the cache.
111. The computer readable medium of claim 103 wherein the at least one transfer client are several transfer clients, each transfer client generating transfer requests of a given priority, the one or more computer programs further comprising: a priority resolver, connected to the several transfer clients, by which the transfer requests are processed in accordance with the priorities.
112. The computer readable medium of claim 103 wherein the one or more computer programs further comprises: a browser, the browser alternately conventionally downloading information from the computer network and not conventionally downloading information from the computer network, thereby causing the one or more idle times.
113. The computer readable medium of claim 103 wherein the one or more computer programs further comprises: a ad rotator, connected to the interface and the cache, wherein the ad rotator controls displaying of cached advertisement in the interface.
114. The computer readable medium of claim 113 wherein the one or more computer programs further comprises: a timer, connected to the ad rotator, wherein the timer periodically prompts the ad rotator to display an advertisement in the interface.
115. A computer readable medium on which is embedded one or more computer programs, the one or more computer programs for use with a computer connected to a computer network, the computer operated by a user, the computer sometimes conventionally downloading information from the computer network and sometimes not conventionally downloading information from the computer network, thereby causing one or more idle times, the one or more computer programs comprising: an interface, by which a selection of a user defined set of one or more pieces of additional information to be downloaded are entered and user commands for displaying the additional information are entered; and at least one transfer client, connected to the interface, by which at least some of the additional information is requested from the computer network during at least one of the idle times.
116. The computer readable medium of claim 115 wherein the one or more computer programs further comprises : a cache, connected to the interface and the transfer client, where the requested additional information is cached and from which the additional information is retrieved for later display.
117. A computer readable medium on which are embedded computer instructions for performing a method of enhanced downloading of information from a computer network, through a connection, to a computer operated by a user, the computer downloading information from the computer network without fully using the connection bandwidth, thereby resulting in unused connection bandwidth, the method comprising: accepting a selection of a user defined set of one or more pieces of additional information to be downloaded; downloading at least some of the additional information from the computer network utilizing the unused connection bandwidth; and caching the downloaded additional information.
118. A computer readable medium on which is embedded one or more computer programs, the computer operated by a user, the computer downloading information from the computer network without fully using the connection bandwidth, thereby resulting in unused connection bandwidth, the one or more computer programs comprising: an interface, by which a selection of a user defined set of one or more pieces of additional information to be downloaded are entered; at least one transfer client, connected to the interface, that utilizes the unused bandwidth to download at least some of the additional information from the • .,< mputer network; and a cache, connected to the transfer client, where the requested additional information is stored for later retrieval.
119. A computer readable medium on which are embedded computer instructions for performing a method of enhanced downloading of information from a computer network to a computer operated by a user, the computer at times executing a conventional downloading thread, the method comprising: accepting a selection of a user defined set of one or more pieces of additional information to be downloaded; executing a thread to download at least some of the additional information from the computer network, the thread being distinct from the conventional downloading thread and having a priority lower than the conventional downloading thread; and caching the downloaded additional information.
120. A computer readable medium on which is embedded one or more computer programs, the computer operated by a user, the computer at times executing a conventional downloading thread, the one or more computer programs comprising: an interface, by which a selection of a user defined set of one or more pieces of additional information to be downloaded are entered; at least one transfer client, connected to the interface, executing a thread to download at least some of the additional information from the computer network, the thread being distinct from the conventional downloading thread and having a priority lower than the conventional downloading thread; and a cache, connected to the transfer client, where the requested additional information is stored for later retrieval.
PCT/US2001/016717 2000-05-25 2001-05-23 Enhanced downloading from a computer network and profiling of a user of a computer network WO2001090912A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001264870A AU2001264870A1 (en) 2000-05-25 2001-05-23 Enhanced downloading from a computer network and profiling of a user of a computer network

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US20695800P 2000-05-25 2000-05-25
US60/206,958 2000-05-25
US62802900A 2000-07-28 2000-07-28
US62802700A 2000-07-28 2000-07-28
US62802600A 2000-07-28 2000-07-28
US09/628,027 2000-07-28
US09/628,026 2000-07-28
US09/628,029 2000-07-28

Publications (1)

Publication Number Publication Date
WO2001090912A1 true WO2001090912A1 (en) 2001-11-29

Family

ID=27498647

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/016717 WO2001090912A1 (en) 2000-05-25 2001-05-23 Enhanced downloading from a computer network and profiling of a user of a computer network

Country Status (2)

Country Link
AU (1) AU2001264870A1 (en)
WO (1) WO2001090912A1 (en)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003085924A1 (en) * 2002-04-05 2003-10-16 Telefonaktiebolaget Lm Ericsson (Publ) Object transfer control in a communications network
EP1451675A1 (en) * 2001-12-05 2004-09-01 Canon Kabushiki Kaisha Directory for multi-page svg document
WO2005008532A1 (en) * 2003-07-10 2005-01-27 Computer Associates Think, Inc. System and method for customizing web-enabled data in ticker format
WO2006037054A1 (en) * 2004-09-27 2006-04-06 Browster, Inc. Method and apparatus for enhanced browsing
WO2008112770A2 (en) * 2007-03-12 2008-09-18 Citrix Systems, Inc. Systems and methods for cache operations
US7840911B2 (en) 2004-09-27 2010-11-23 Scott Milener Method and apparatus for enhanced browsing
GB2478336A (en) * 2010-03-04 2011-09-07 Nec Corp Bandwidth control system
WO2013113360A1 (en) * 2012-01-30 2013-08-08 Telefonaktiebolaget L M Ericsson (Publ) An apparatus having a touch screen display
US8862737B2 (en) 2010-06-24 2014-10-14 Microsoft Corporation Application integration of network data based on resource identifiers
US9942260B2 (en) 2004-09-27 2018-04-10 Cufer Asset Ltd. L.L.C. Enhanced browsing with security scanning
US10448762B2 (en) 2017-09-15 2019-10-22 Kohler Co. Mirror
CN110392022A (en) * 2018-04-19 2019-10-29 阿里巴巴集团控股有限公司 A kind of network resource access method, computer equipment, storage medium
US10592591B2 (en) 2004-09-27 2020-03-17 Cufer Asset Ltd. L.L.C. Enhanced browsing with indication of prefetching status
US10663938B2 (en) 2017-09-15 2020-05-26 Kohler Co. Power operation of intelligent devices
US10887125B2 (en) 2017-09-15 2021-01-05 Kohler Co. Bathroom speaker
US10911520B2 (en) 2007-03-12 2021-02-02 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US11093554B2 (en) 2017-09-15 2021-08-17 Kohler Co. Feedback for water consuming appliance
US11099540B2 (en) 2017-09-15 2021-08-24 Kohler Co. User identity in household appliances
US11153472B2 (en) 2005-10-17 2021-10-19 Cutting Edge Vision, LLC Automatic upload of pictures from a camera

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5961602A (en) * 1997-02-10 1999-10-05 International Business Machines Corporation Method for optimizing off-peak caching of web data
US5978841A (en) * 1996-03-08 1999-11-02 Berger; Louis Look ahead caching process for improved information retrieval response time by caching bodies of information before they are requested by the user
US6094677A (en) * 1997-05-30 2000-07-25 International Business Machines Corporation Methods, systems and computer program products for providing insertions during delays in interactive systems
US6147687A (en) * 1998-10-02 2000-11-14 International Business Machines Corporation Dynamic and selective buffering tree view refresh with viewable pending notification

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978841A (en) * 1996-03-08 1999-11-02 Berger; Louis Look ahead caching process for improved information retrieval response time by caching bodies of information before they are requested by the user
US5961602A (en) * 1997-02-10 1999-10-05 International Business Machines Corporation Method for optimizing off-peak caching of web data
US6094677A (en) * 1997-05-30 2000-07-25 International Business Machines Corporation Methods, systems and computer program products for providing insertions during delays in interactive systems
US6147687A (en) * 1998-10-02 2000-11-14 International Business Machines Corporation Dynamic and selective buffering tree view refresh with viewable pending notification

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1451675A4 (en) * 2001-12-05 2009-11-04 Canon Kk Directory for multi-page svg document
EP1451675A1 (en) * 2001-12-05 2004-09-01 Canon Kabushiki Kaisha Directory for multi-page svg document
WO2003085924A1 (en) * 2002-04-05 2003-10-16 Telefonaktiebolaget Lm Ericsson (Publ) Object transfer control in a communications network
US7721294B2 (en) 2002-04-05 2010-05-18 Telefonaktiebolaget L M Ericsson (Publ) Object transfer control in a communications network
WO2005008532A1 (en) * 2003-07-10 2005-01-27 Computer Associates Think, Inc. System and method for customizing web-enabled data in ticker format
US9942260B2 (en) 2004-09-27 2018-04-10 Cufer Asset Ltd. L.L.C. Enhanced browsing with security scanning
US7840911B2 (en) 2004-09-27 2010-11-23 Scott Milener Method and apparatus for enhanced browsing
US10382471B2 (en) 2004-09-27 2019-08-13 Cufer Asset Ltd. L.L.C. Enhanced browsing with security scanning
WO2006037054A1 (en) * 2004-09-27 2006-04-06 Browster, Inc. Method and apparatus for enhanced browsing
US10592591B2 (en) 2004-09-27 2020-03-17 Cufer Asset Ltd. L.L.C. Enhanced browsing with indication of prefetching status
US11122072B2 (en) 2004-09-27 2021-09-14 Cufer Asset Ltd. L.L.C. Enhanced browsing with security scanning
US11153472B2 (en) 2005-10-17 2021-10-19 Cutting Edge Vision, LLC Automatic upload of pictures from a camera
WO2008112770A3 (en) * 2007-03-12 2009-07-30 Citrix Systems Inc Systems and methods for cache operations
WO2008112770A2 (en) * 2007-03-12 2008-09-18 Citrix Systems, Inc. Systems and methods for cache operations
US10911520B2 (en) 2007-03-12 2021-02-02 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
GB2478336A (en) * 2010-03-04 2011-09-07 Nec Corp Bandwidth control system
US8862737B2 (en) 2010-06-24 2014-10-14 Microsoft Corporation Application integration of network data based on resource identifiers
WO2013113360A1 (en) * 2012-01-30 2013-08-08 Telefonaktiebolaget L M Ericsson (Publ) An apparatus having a touch screen display
US10448762B2 (en) 2017-09-15 2019-10-22 Kohler Co. Mirror
US10887125B2 (en) 2017-09-15 2021-01-05 Kohler Co. Bathroom speaker
US11093554B2 (en) 2017-09-15 2021-08-17 Kohler Co. Feedback for water consuming appliance
US11099540B2 (en) 2017-09-15 2021-08-24 Kohler Co. User identity in household appliances
US10663938B2 (en) 2017-09-15 2020-05-26 Kohler Co. Power operation of intelligent devices
US11314214B2 (en) 2017-09-15 2022-04-26 Kohler Co. Geographic analysis of water conditions
US11314215B2 (en) 2017-09-15 2022-04-26 Kohler Co. Apparatus controlling bathroom appliance lighting based on user identity
US11892811B2 (en) 2017-09-15 2024-02-06 Kohler Co. Geographic analysis of water conditions
US11921794B2 (en) 2017-09-15 2024-03-05 Kohler Co. Feedback for water consuming appliance
US11949533B2 (en) 2017-09-15 2024-04-02 Kohler Co. Sink device
CN110392022A (en) * 2018-04-19 2019-10-29 阿里巴巴集团控股有限公司 A kind of network resource access method, computer equipment, storage medium
CN110392022B (en) * 2018-04-19 2022-04-05 阿里巴巴集团控股有限公司 Network resource access method, computer equipment and storage medium

Also Published As

Publication number Publication date
AU2001264870A1 (en) 2001-12-03

Similar Documents

Publication Publication Date Title
US9807200B2 (en) System and method providing user interactivity across a network
WO2001090912A1 (en) Enhanced downloading from a computer network and profiling of a user of a computer network
US6769019B2 (en) Method of background downloading of information from a computer network
US7353246B1 (en) System and method for enabling information associations
US6421694B1 (en) System and method for displaying data items in a ticker display pane on a client computer
US5848424A (en) Data navigator interface with navigation as a function of draggable elements and drop targets
KR100880473B1 (en) Improved browser user interface
US20020199025A1 (en) System and method to create an application and to manipulate application components within the application
US20090094525A1 (en) System and method for dynamic media integration into web pages
JP2003303105A (en) Device for information management network server and method related to it
US20070282825A1 (en) Systems and methods for dynamic content linking
US9772979B1 (en) Reproducing user browsing sessions
WO2001044988A1 (en) Method of background downloading of information from a computer network
CN112346741A (en) Method and device for positioning target page after awakening APP based on H5 external link, electronic equipment and storage medium
TW490626B (en) A technique for implementing browser-initiated user-transparent network-distributed interstitial web advertising through use of an advertising tag embedded in a referring web page
Rose et al. c12) United States Patent
JP2003044392A (en) System and method for outputting information reference history and program

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AU CA IN JP

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: COMMUNICATION UNDER RULE 69 EPC (EPO FORM 1205A OF 16.05.2003)

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP