a server ap 1 provides services to a client computer 10 in accordance with the present invention . server ap 1 includes processors 11 , memory 13 , input / output devices 15 , and a hard disk 17 . hard disk 17 stores configuration file 23 and a state database 25 . an operating system 21 , a web server 27 , and a web application 29 are executed from memory 17 . other embodiments include multiple servers , servers with multiple partitions , various types of i / o devices , multiple hard disks or alternative long - term storage , and various software configurations . when an http request is received from client computer 10 , operating system 21 forwards it to request handler program 27 , which refers to configuration file 23 , which instructs program 27 to forward the request to web application 29 . then web application 29 reads the request and makes a function call to object 30 of a c ++ class “ versionednamedvalue ”. ( this software involves storing transferring instructions from hard disk 17 to memory 13 and to processor 11 for execution .) object 30 implements a method m 1 , shown in the detail for object 30 . in alternative embodiments , method m 1 is implemented using a variety of c ++ programs and programs in other programming languages . method m 1 begins with a method segment ms 1 involving comparison of a session - state id ( identifier ) embedded in a received http ( hyper - text transfer protocol ) request with a most recently issued session - state . there are four possible outcomes : 1 ) “ match ”— the included session - state id matches the last state id issued by object 30 for the current session ; 2 ) “ mismatch ”— the included session - state id does not match the last state id issued by object 30 for the current session but does match another state id known to the web application ; 3 ) “ miss ”— the included session - state id does not match any state id known to the web application ; and 4 ) “ none ”— the request does not include a session - state id issued in the current session . a miss can occur , for example , when a user attempts to resume a session that has timed out . for security reasons , and to have a mechanism to clean up old session data , the session data is deleted if no pages have been requested for some period of time , say an hour . a session timeout will generally be detected before method m 1 is called and the user will be returned a page to login or otherwise start a new session . the absence of a session - state id in a request can occur when a request initiates a session . web application 29 responds to a such client request by opening a session and generating a “ page ” with embedded session state id ss 1 indicating the session and the state within the session associated with the page at method segment ms 2 . the page with embedded state information is transmitted ( via an i / o device 15 ) to client computer 10 . a browser program 31 on client computer 10 then displays the page to a user . server ap 1 then stores session information and page ( or at least some of the information associated with the page ) information in association with the session - state id in state database 25 . the session - state id generated at method segment ms 2 is embedded in the associated page in such a way that when a user of client computer 10 makes a request from that page , the session - state id is embedded in the request . for example , the page can include one or more hyperlinks that can be activated by a user ( e . g ., by clicking on a link ). when the user activates a hyperlink , a request is generated . in accordance with the invention , the url for this request can include the embedded session - state id . alternatively , a non - url portion of the request can include the session - state id . when a user makes a request including a session - state id , method segment ms 1 applies . the server keeps a counter of the most recent session state id that was used . the next page , regardless of the id in the request , would return a page with a session state id that is one greater than the current counter . most of the time , the session - state id embedded in the request made in an on - going session will match the last - issue session - state id ( represented in the counter ) so that a “ match ” occurs . in this case , method m 1 proceeds to method segment ms 3 , which involves generating a page with a “ next ” session - state id . this page is transmitted to client computer 10 . also , associated page information is stored in association with the current session and embedded state id in state database 25 . client browser 31 , like most web browsers , stores pages in a page cache 33 . thus , during a session , when client computer 10 receives a page , the previous pages of the session remain hidden but available in cache 33 . the user is able to use the browser interface , e . g ., “ back ” ( ) button 35 and “ forward ” ( ) button 37 , to navigate among the cached pages . this navigation among cached pages is invisible to server ap 1 , so server ap 1 does not actually know what page a user is viewing . if a user activates a hyperlink on a previously cached page of a current session , a “ miss ” will result from method segment ms 1 . in that case , method m 1 proceeds to method segment ms 4 , which involves deleting or otherwise inactivating “ subsequent ” pages from state database 25 . “ subsequent ” here means pages generated after the one identified in the most - recent request . for example , if the most - recently generated page was the fifth in the session , but the most - recent request indicated it was from the third page in the session , then pages four and five would be deleted . note that most browsers delete cached pages “ forward ” of a page on which a hyperlink is activated , so method segment ms 4 parallels the browser actions . however , in the server case , the purpose would be to save storage space , and is not absolutely necessary . for example , the page information might be used for statistical analysis or for customer profiling . however , they would not be referred to in the context of the current session . whether or not the “ subsequent ” pages are actually deleted , object 30 resumes the state indicated in the most - recent request and responds accordingly at method segment ms 3 , as shown in fig1 . it should be noted that method m 1 does not require an explicit comparison at method segment ms 1 . instead , method m 1 can involve receiving a request with an embedded session state and calling up the associated page information from state database 25 without making a separate comparison . in this case , the comparison is implicit in the database lookup . a very specific instance of method m 1 is flow - charted in fig2 for expository purposes ; this instance is not intended to be limiting in any way . a user via browser 31 activates a hyperlink button “ product ” to a vendor product page at method segment m 01 . this causes a request with no session - state id to be sent to server ap 1 . in response , at m 02 , server ap 1 initiates a session and transmits the requested product page with a first embedded session - state id ss 1 to client computer 10 . in addition , the session is opened in database 25 and page information is associated in database 25 with the session - state id ss 1 . the product page , displayed at m 03 , includes pictures , descriptions , and prices for budget and high - end desktop computers . the page also includes hyperlink buttons labeled “ purchase ” and “ customize ” for each product . activating any of these would generate a request with session - state id ss 1 embedded . at m 04 , the user activates the “ customize ” button for the budget computer , so that a request with session - state id ss 1 is transmitted to server ap 1 . at m 05 , server ap 1 responds by transmitting a first customize page with embedded session - state id ss 2 to client computer 10 . in addition , information for the first customize page is associated with state - session id ss 2 and the current session in session database 25 . browser 31 displays the first customize page and caches the product page at m 06 . the first customize page contains a list of components with which the budget computer can be configured . the first customize page is interactive in that it contains radio buttons that can be darkened in possible combinations . for example , the budget computer can be configured with the stock hard disk or a larger hard disk , but not with both . accordingly , the page has the button next to the listing for the stock hard disk darkened . the user clicks on the button associated with the larger hard disk ; in response , that button darkens and the button next to the stock hard disk lightens ( deselecting the stock hard disk ). similar options can be indicated for memory , i / o devices , and accessories . the user clicks on a number of the radio buttons to elect a potential configuration or “ first configuration ” of the desktop at m 07 . these selections are not communicated to server ap 1 until an “ update price ” button is activated . when the user activates the “ update price ” button at m 08 , a request with session state ss 2 embedded is transmitted to server ap 1 . this request indicates the combination of components selected by the user . object 30 compares the session state indicated in the request to the most - recent session state . in this case , they match . at m 09 , web application 29 generates a second customize page with the calculated price and with a session state ss 3 embedded . object 30 stores the information and the session - state id for this page in database 25 . at m 10 , browser 31 displays this second customize page , which looks just like the first customize page as configured by the user except that the listed price reflects the configuration selected by the user . to the user , it may appear that the page is the same and only a field has been updated . however , browser 31 treats it as a new page and caches the first customize page containing the new configuration but with the stock price . at m 11 , the user activates a link on this second customization page to the product page , e . g ., to consider the high - end desktop . this sends a request with session - state ss 3 embedded . at m 12 , server ap 1 checks the session - state id and finds it matches the most recently issued session state ; server ap 1 responds by retransmitting the product page , this time with session - state ss 4 embedded . at m 13 , browser 31 displays the product page and caches the prior customization page with the selected configuration for the budget computer . at m 14 , the user activates a “ customize ” button for the high - end computer , which uses a different processor chip set than the budget computer . at m 15 , server ap 1 checks the session state id for the resulting customize request , finds a match to the most - recent session - state id ss 4 . accordingly , server ap 1 generates and transmits a third customize page , this time representing the high - end computer . at m 16 , browser 31 displays this third customize page , caching the product page . this high - end computer customize page presents the same options as the customize pages for the budget computer , although the stock configurations differ . the user reconfigures the third customize page at m 17 and clicks “ update price ” at m 18 . at m 19 , server ap 1 checks the session - state id for the resulting request and finds a match with most recent session - state id ss 5 . accordingly , server ap 1 generates and transmits a fourth customize page . browser 31 displays the fourth customize page at m 20 . perhaps unhappy with the price , the user intends to order the customized budget version . rather than linking back to the product page , then to the customize page for the budget computer , and then re - customizing the budget computer , the user activates the browser “ back ” button three times at m 21 — first back to customization 2 , then back to the product page , and finally back to the first customize page ( which shows the reconfigured budget computer with the correct price ) at m 23 . at m 23 , from the second customize page , the user activates a “ submit order ” button . this results in a request with the session - state id associated with customize page 2 at m 10 , namely , session - state ss 3 . browser 31 also deletes “ subsequent ” cached pages , in this case , the product page of m 11 , customize page 3 of m 16 , and customize page 4 from m 20 , from cache 33 . when , at m 24 , server ap 1 checks the session - state id , it does not match the most recent session - state id ss 6 . accordingly , session - state ss 3 is resumed and session states ss 4 - ss 6 are deleted at m 25 . since the order relates to the customize 2 page , server ap 1 records an order for the customized budget computer at m 26 . at m 27 , server ap 1 generates and transmits a receipt with embedded session state id ss 7 . the user activates an “ exit ” button on the receipt page , generating a message with session - state ss 7 embedded . server ap 1 recognizes the nature of the message and closes the session , deleting the associated pages at m 28 . as mentioned above , the sequence of fig2 is a very specific instance of method m 1 , which , in turn , is one embodiment of the invention . in this embodiment , the session state ids are serialized , in part so that that the current state can be assembled from partial information for that state and its predecessors . if each page stored by server ap 1 holds all of the information required to put a request in context , it is not necessary to serialize the session states . also , it is not necessary to assign a new session id to each page generated , and it is not necessary that every link on a page generate a request with a session id embedded . for example , links , e . g ., help links , that display information that is independent of the state of the web application need not have state ids embedded . a method m 2 in accordance with an embodiment of the invention includes method segments m 21 and m 22 , as shown in fig3 . method segment m 21 involves responding to a nth serialized request from client browser 31 by reading an embedded session state id . in this case , the embedded session id does not match the most recent session state known to the server . accordingly , at method segment m 22 , the server assumes the mth session state . a mismatch can occur because a back button has been used or because a user is using two windows within the same session . this can happen when the user uses the “ new window ” menu pick on a browser after starting a session in a web application . both windows will be using the same session id . for example , the user might start using web application 29 and visit five pages with session - state ids of 1 , 2 , 3 , 4 , and 5 . at this point the user could use the “ new window ” menu pick and have two browser windows displaying a page with a session - state id of “ 5 ”. the user could use one browser window , say the “ left ” browser window , to request a new page and get one with a session - state id of “ 6 ”. when the user goes to the “ right ” browser window it will be at session - state id “ 5 ”, but return a page with a session - state id of “ 7 ”; a side effect of this is to mark session - state id “ 6 ” as invalid . if the user ever returns the left browser window , its state will be marked as invalid and the split window will have been detected . by having each session - state id keep track of its predecessor session - state id in accordance with an embodiment of the invention , it is possible to allow the user to use both windows in a consistent way . doing this assumes the domain of the web application allows this without other problems . alternatively , the web application can then return a page to the user that alerts them to this potentially confusing state . while in the foregoing description , the back button was used to navigate pages cached by a browser , the invention applies to other methods for navigating cached pages , including using physical buttons on a keyboard . also , cases where navigation involves use of the “ forward ” button are covered . most browsers offer a “ new window ” menu pick . this starts a second window with the same session identifier . often the user will use the new window to go off to a different web site and this will not confuse the web application . however , web applications can become confused when a user alternates between two windows associated with different states for the same website . the present invention provides for detecting this and supporting the states of the multiple browser windows . these and other variations upon and modifications to the illustrated embodiments are provided for by the present invention , the scope of which is defined by the following claims .