Abstract:
A method, an apparatus, and a computer-readable programmed medium that facilitate browsing through an ordered sequence (108, 109) of World Wide Web pages (107) by automatically skipping over, or bypassing, previously viewed pages whenever the user requests a &#34;Next Page&#34; or a &#34;Previous Page&#34;. A page owner creates a sequence by defining for each page in the sequence a page record (200) that specifies the page&#39;s URL (205), its sequential index value (210), an unviewed flag (220), and optionally page-descriptive information (230). Upon starting a session with a Web server (102), each user is given a copy of all page records. Each time a user requests access to any page by specifying its URL, the unviewed flag of the user&#39;s copy of that pages record is set to a viewed state. Each time a user requests access to any page by specifying a &#34;Next Page&#34; or a &#34;Previous Page&#34;, the user&#39;s copy of the page records is used to find the first subsequent page or the first previous page, respectively, in the sequence to the page that is presently viewed by the user, whose unviewed flag is in the unviewed state, the state of the flag is changed to the viewed state, and the user is given access to this yet-unviewed page. At the end of each session, the page record copies that correspond to the session are deleted.

Description:
TECHNICAL FIELD 
     This invention pertains to data-retrieval systems in general, and to the World Wide Web in particular. 
     BACKGROUND OF THE INVENTION 
     State-of-the-art Web browsers allow a user to dynamically link to (view) other Web pages from a presently-viewed page by selecting and activating (clicking on) hypertext tags of those other pages which are embedded in the presently-viewed page. The creator of these pages often allows a user to link to any individual page via a plurality of different paths. For example, tags embedded in a &#34;home page&#34; may allow a user to directly link to &#34;page 1&#34;, &#34;page 2&#34;, and &#34;page 3&#34;, while a tag embedded in &#34;page 1&#34; may allow the user to link to &#34;page 2&#34; and a tag embedded in &#34;page 2&#34; may allow the user to link to &#34;page 3&#34;. In other words, the pages in this example may be viewed either randomly or sequentially. For sequential viewing, a &#34;Next Page&#34; tag is often employed, as opposed to a tag that explicitly and uniquely specifies a particular page. 
     A disadvantage of using the &#34;Next Page&#34; tag becomes apparent when the user has already linked to (viewed) one or more of the sequential pages in a non-sequential manner--for example, if the user has already linked directly to &#34;page 2&#34; from the &#34;home page&#34;, but now clicks on the &#34;Next Page&#34; tag in &#34;page 1&#34;. The disadvantage is that clicking on the &#34;Next Page&#34; tag will link the user to a page which he or she has already viewed (&#34;page 2&#34;), whereas what the user really desires is to be linked to the next page that he or she has not yet viewed (&#34;page 3&#34;). 
     Existing systems usually will highlight a tag linking to a page that has already been viewed by the user in order to indicate to the user that he or she has already viewed that page. But this indication is purely informational and does not prevent redundancy of page viewing from occurring. Existing systems do not allow the user to skip a &#34;next page&#34; dynamically, based upon whether or not the user has already viewed that page. 
     SUMMARY OF THE INVENTION 
     This invention is directed to solving these and other problems and disadvantages of the prior art. 
     Generally according to the invention, there is provided a method, an apparatus, and a computer-readable programmed medium that facilitate browsing through an ordered sequence of a plurality of pages of information in a manner that automatically bypasses, skips over, previously-viewed (accessed) pages in the sequence. Specifically, in response to receipt from a user of a request for a &#34;next page&#34; in the sequence while the user is accessing some individual page in the sequence, the user is given access to a first page subsequent in the ordered sequence to the individual page that has not yet been accessed by the user. Preferably, the invention is applied to both the forward and the reverse directions of browsing the sequence. Namely, in response to receipt from a user of a request for a &#34;previous page&#34; in the ordered sequence while the user is accessing some individual page in the sequence, the user is given access to a first page preceding the individual page in the sequence that has not yet been accessed by the user. 
     Advantageously, the invention does not interfere with or change the conventional way of accessing particular pages by uniquely identifying them (e.g., by specifying their URL or other address in the access request). Thus, in response to receipt from a user of a request for a page in the sequence that uniquely identifies the requested page, the user is given access to the identified page regardless of whether or not the user has already accessed the identified page. Optionally, instead of, or in addition to, being used to skip previously-accessed pages in a sequence, the invention may be used to achieve the complementary effect of allowing the user to access only previously-accessed pages in the sequence. This allows the user to more-easily find information which the user knows that he or she has seen before. 
     These and other advantages and features of the invention will become more apparent from the following detailed description of an illustrative embodiment of the invention considered together with the drawing. 
    
    
     BRIEF DESCRIPTION OF THE DRAWING 
     FIG. 1 is a block diagram of an illustrative data-retrieval system that includes an illustrative embodiment of the invention; 
     FIG. 2 is a block diagram of a page record of a server of the system of FIG. 1; 
     FIG. 3 is a flowchart of a page-sequence definition process of the server of the system of FIG. 1; 
     FIG. 4 is a flowchart of a session-establishment process of the server of the system of FIG. 1; 
     FIG. 5 is a flowchart of a page-viewing process of the server of the system of FIG. 1; 
     FIGS. 6A and 6B are a flowchart of a &#34;Next Page&#34; activation process of the server of the system of FIG. 1; 
     FIG. 7 is a flowchart of a status-reporting process of the server of the system of FIG. 1; and 
     FIG. 8 is a flowchart of a session-termination process of the server of the system of FIG. 1. 
    
    
     DETAILED DESCRIPTION 
     FIG. 1 shows a simplified block diagram of the World Wide Web. It comprises end-user terminals, represented by terminal 100, each executing a World Wide Web browser 110, such as a Microsoft® Internet Explorer or a Netscape® Navigator, and interconnected by a communications network, represented by the Internet 101, with World Wide Web servers, represented by server 102. A user uses terminal 100 and browser 110 to request and obtain pages 107 of information from server 102, which are then displayed to the user on a display 111 of terminal 100. Also displayed on display 111 by browser 110 along with each page 107 are a &#34;Next Page&#34; virtual button 112 and a &#34;Previous Page&#34; virtual button 113. Server 102 is a stored-program-controlled apparatus that includes communications ports 130 for interfacing server 102 to Internet 101, a processor 103, and a memory 104 that stores control programs 114 for execution by processor 103 and data (pages 107 of information) for access by users. Memory 104 may comprise any number and types of storage units, both on-line and off-line. As described so far, the World Wide Web of FIG. 1 is conventional. For purposes of this invention, the World Wide Web may be replaced by any electronic data-retrieval system, and the pages may be replaced by any addressable data entities. Moreover, the server and the browser may even be co-located on the same computer. 
     According to the invention, included among data 116 and programs 114 stored in memory 104 of server 102 are page records 200 and control programs 115 which implement the invention in the World Wide Web of FIG. 1. 
     An illustrative page record 200 is shown in FIG. 2. One record 200 exists for each page 107 that is included in a sequence 108 or 109 with other pages 107 (as opposed to being a stand-along page 107 that is not a part of any sequence of pages). Record 200 includes a Universal Resource Locator (URL) field 205 which stores an identifier (e.g., the URL or some other address) of the corresponding page 107. Record 200 also includes a sequential index value field 210 which stores the sequential index value of the corresponding page 107 in a sequence 108 or 109 of pages. The sequential index value indicates the position of the page in the sequence 108 or 109 of pages relative to the positions of the other pages 107 in that sequence. While it is sufficient that the sequential index values be ordinal (i.e., monotonically increasing or decreasing) in the sequence, for ease of illustration this discussion assumes that the index values are truly sequential, i.e., the difference between the index values of any two pages 107 in the sequence is one. Record 200 further includes an unviewed flag field 220 whose state indicates whether or not the corresponding page 107 has been accessed (viewed) by the user during the present session. Optionally, record 200 also includes a page description field 230, which can contain any supplemental information that the owner of page 107 wishes to associate therewith. 
     FIG. 3 shows the definition process which the author of pages 107 uses to define a sequence 108 or 109 of pages 107 and records 200 of pages 107 in the sequence. Upon invoking execution of a definition program from control programs 115, at step 300, processor 103 sets a variable MAX --  PAGES 118 or 119 to zero, at step 305. When the author selects and identifies to processor 103 a page 107 (initially the page 107 that is to be the first page in sequence 108 or 109) for sequential indexing, at step 310, processor 103 creates a page record 200 for that page 107, at step 312, and assigns a sequential index value--illustratively the present value of the MAX --  PAGES variable 118 or 119--to that page 107 by storing the sequential index value in field 210 of record 200 of that page 107, at step 315. Processor 103 also associates the URL of that page 107 with the sequential index value by storing the URL in field 205 of record 200 of that page 107, at step 320. Processor 103 then checks whether the URL association was successful, e.g., that a page actually exists at the location specified in the URL and that it is accessible, at step 325. If the processor 103 finds that the URL association was not successful, it reports that fact to the author, at step 330, and returns to step 310 et seq. to await the author&#39;s next page selection. If processor 103 finds at step 325 that the URL association was successful, it marks the subject page 107 as unviewed by setting flag field 220 of record 200 of that page 107 to the unviewed state, at step 335. Processor 103 then increments the value of the MAX --  PAGES variable 108 or 109, at step 340, and checks whether there are more pages 107 to be included in the sequence 108 or 109, at step 345. Illustratively, processor 103 makes this determination by asking the author. If there are more pages 107 to be sequenced, processor 103 returns to steps 310 et seq. to await the author&#39;s next page selection. If there are no more pages 107 to be sequenced, processor examines the values of sequential index value field 210 of records 200 of all of the pages 107 that have been placed in the sequence 108 or 109, at step 350, to determine if these values are sequential, at step 355. If they are not sequential, processor 103 reports a sequencing error to the author, at step 365, and ends execution of the definition program, at step 370. If the values are sequential, processor 103 sets the value of an UNVIEWED --  COUNTER variable 120 or 121 to the present value of the MAX --  PAGES variable 118 or 119, at step 360, and then ends execution of the definition program, at step 370. The value of both the MAX --  PAGES variable 118 or 119 and the UNVIEWED --  COUNTER variable 120 or 121 are saved in non-volatile memory 104 (e.g., disk memory) in correspondence with the just-created sequence 108 or 109 of pages 107. 
     FIG. 4 shows a session-establishment process which is performed each time that a user begins a session with server 102. When a user first accesses server 102 (i.e., server 102 receives a request for a page 107 from a new user), processor 103 begins execution of a session-establishment program from control programs 115, at step 400. Processor 103 effects allocation of memory space 117 in memory 104 for use by the user, in a conventional manner, at step 410, and checks whether the allocation succeeded, at step 420. If memory 117 allocation failed, processor 103 reports that fact, at step 440, and then ends execution of the session-establishment process, at step 470. If memory 117 allocation succeeded, processor 103 initializes the allocated memory 117 for variables associated with this session, at step 460. Inter alia, this involves making and loading a copy of records 200 of all pages 107 and values of UNVIEWED --  COUNTER and MAX --  PAGES variables 118-121 of all sequences 108-109 that are stored in server 102 into allocated memory 117. This copy and not the originals will be used by processor 103 to service the user&#39;s page-access requests. Optionally, processor 103 may also place the corresponding pages 107 in a cache memory. Processor 103 then ends execution of the session-establishment program, at step 470. 
     FIG. 5 shows a page-viewing process which is performed each time that a user requests a page 107 by specifying its URL. Receipt of such a request at server 102 invokes execution of a page-viewing program from control programs 115 by processor 103, at step 500. Processor 103 checks whether a record 200 that corresponds to the received URL exists, and if so, if it has a value in sequential index value field 210, at step 510. If record 200 does not exist or index value field 210 is empty, execution of the page-viewing program ends, at step 540, and server 102 proceeds to process the request in a conventional manner. If a record 200 corresponding to the received URL exists and has a value in sequential index value field 210, processor 103 checks unviewed flag field 220 of the copy of that record in the user&#39;s allocated memory 117 to determine if that page 107 is marked as having already been viewed by this user, at step 515. If it is marked as viewed, processor proceeds to step 540. If it is not marked as viewed, processor 103 sets the value of field 220 of the copy of that record 200 in the user&#39;s allocated memory 117 to indicate that the corresponding page 107 is being viewed by this user, at step 520, and also decrements the value of the page&#39;s corresponding copy--if any--of UNVIEWED --  COUNTER variable 120 or 121 in the user&#39;s allocated memory, at step 530. Processor 103 then proceeds to step 540. In either case, the user is given access to the requested page 107 regardless of whether or not the user has already viewed that page. 
     FIGS. 6A and 6B show a &#34;Next Page&#34; activation process which is performed each time that an existing user requests a page 107 by pressing either &#34;Next Page&#34; virtual button 112 or &#34;Previous Page&#34; virtual button 113. Receipt of such a request at server 102 invokes execution of the &#34;Next Unviewed Page&#34; activation program from control programs 115 by processor 103, at step 600. Processor 103 first checks in the contents of the user&#39;s allocated memory 117 whether the copy of any UNVIEWED --  COUNTER variable 120 or 121 that corresponds to the presently-viewed page 107 (i.e., the page 107 accessed by the user before receipt of the &#34;Next Unviewed Page&#34; or &#34;Previous Unviewed Page&#34; request) has a value greater than zero, at step 605. If not, processor 103 reports to the user that there are no unviewed pages left, at step 610, and ends execution of the &#34;Next Unviewed Page&#34; activation program, at step 695. If any such corresponding non-zero UNVIEWED --  COUNTER is variable 120 or 121 is found at step 605, processor 103 sets the value of SCAN --  COUNT variable to the value of sequential index value field 210 of the presently-viewed page 107, at step 615. Processor 103 then reads the value of a SCAN --  FLAG variable which indicates whether the &#34;Next Page&#34; button 112 or the &#34;Previous Page&#34; button 113 was pressed, at step 620, and determines whether a forward or a backward scan within the presently-scanned sequence 108 or 109 is being requested, at step 625. 
     If the request is for a forward scan, processor 103 increments the value of the SCAN --  COUNT variable, at step 660, and then checks whether this value exceeds the value of the user&#39;s copy of the MAX --  PAGES variable 118 or 119 that corresponds to this sequence 108 or 109, at step 670. If the SCAN --  COUNT value exceeds the value of the MAX --  PAGES variable 118 or 119, processor 103 sets the value of SCAN --  COUNT to zero, thereby wrapping around from the end to the beginning of the sequence 108 or 109, at step 665, and returns to step 660. If the SCAN --  COUNT value does not exceed the value of the MAX --  PAGES variable 118 or 119, processor 103 checks whether the user&#39;s copy of record 200 whose sequential index value 210 equals the SCAN --  COUNT value indicates in its field 220 that this page 107 has not been viewed by the user, at step 675. If this page 107 has been viewed, processor 103 returns to step 660. If this page 107 has not been viewed, processor 103 proceeds to step 650. 
     Returning to step 625, if it is there determined that the request is for a backward scan, processor 103 decrements the value of the SCAN --  COUNT variable, at step 630, and then checks whether this variable&#39;s value is less than zero, at step 635. If so, processor 103 sets the value of SCAN --  COUNT to an incremented value of the user&#39;s copy of the MAX --  PAGES variable 118 or 119 that corresponds to this sequence 108 or 109, at step 640, thereby wrapping around from the beginning to the end of the sequence 108 or 109, and returns to step 630. If the SCAN --  COUNT value is not less than zero, processor 103 checks whether the user&#39;s copy of record 200 whose sequential index value 210 equals the SCAN --  COUNT value indicates in its field 220 that this page 107 has not been viewed by the user, at step 645. If this page 107 has been viewed, processor 103 returns to step 630. If this page 107 has not been viewed, processor 103 proceeds to step 650. 
     At step 650, processor 103 reads the address of page 107 from the URL field 205 of its record 200, at step 650, and checks whether the hypertext link was successful, e.g., whether it is able to retrieve a page-server acknowledgment or a cache acknowledgment, at step 680. If the hypertext link was not successful, processor 103 reports it to the user, at step 655, and proceeds to step 695. If the hypertext link was successful, processor 103 marks the subject page 107 as viewed, by setting flag 220 of the user&#39;s copy of its record 200 to the viewed state, at step 685. Processor 103 then decrements the user&#39;s copy of the corresponding UNVIEWED --  COUNTER variable 120 or 121, at step 690, and proceeds to step 695. After execution of the &#34;Next Unviewed Page&#34; activation program ends, at step 695, serving the user&#39;s request continues in the conventional manner. 
     FIG. 7 shows a status-reporting process which is performed whenever the user requests status from server 102. Receipt of the status request at server 102 invokes execution of the status-reporting program from control programs 115 by processor 103, at step 700. Processor 103 reads from the user&#39;s allocated memory 117 the value of UNVIEWED --  COUNTER variable 120 or 121 which corresponds to whatever page sequence 108 or 109 is presently being accessed by the user, at step 710. Processor 103 also examines the unviewed flag field 220 of copies of records 200 in the user&#39;s allocated memory 117 of all pages 107 in the page sequence 108 or 109 being accessed by the user, to determine how many are marked as unviewed by the user, at step 720. Processor 103 then uses this number and the value of the MAX --  PAGES variable 118 or 119 corresponding to the subject page sequence 108 or 109 to determine the number of viewed pages 107 in the sequence 108 or 109, at step 730. Processor 103 then reports to the user the number of viewed pages 107, at step 740, the number of unviewed pages 107, at step 750, plus any information gleaned from page description field 230 of records 200 of pages 107 in this sequence 108 or 109, at step 760. Execution of the status-reporting program then ends, at step 770. 
     FIG. 8 shows a session-termination process which is performed each time that a user ends a session with server 102. When a user terminates the session, e.g., logs off or exits the browser, processor 103 begins execution of a session-termination program from control programs 115, at step 800. Processor 103 effects deallocation of memory 117 from the user, in a conventional manner, at step 810, and checks whether the deallocation succeeded, at step 820. If memory 117 deallocation failed, processor 103 reports that fact, at step 830. If memory 117 deallocation succeeded, or following step 830, processor ends execution of the session-termination process, at step 840. 
     Of course, various changes and modifications to the illustrative embodiment described above will be apparent to those skilled in the art. For example, the pages need not be textual, but may be graphical, video, and/or audio in nature. Also, the sequence-traversal functions may be executed locally on terminal 100 instead of on server 102, or they may be executed from cache memory. Furthermore, the same principles may be applied to accessing of a sequence of page segments, or to accessing of previously-viewed (as opposed to previously unviewed) pages. Such changes and modifications can be made without departing from the spirit and the scope of the invention and without diminishing its attendant advantages. It is therefore intended that such changes and modifications be covered by the following claims.