`Nazem et al.
`
`19
`
`54) DYNAMIC PAGE GENERATOR
`75 Inventors: Farzad Nazem, Redwood City;
`Ashvinkumar P Patel, Milpitas, both
`of Calif.
`
`73 Assignee: Yahoo, Inc., Santa Clara, Calif.
`
`21 Appl. No.: 08/873,975
`22 Filed:
`Jun. 12, 1997
`
`(51) Int. Cl." ...................................................... G06F 17/30
`
`52 U.S. Cl. ............................ 707/10; 707/104; 707/500;
`707/513; 707/517; 395/200.47; 705/1; 705/10
`
`58 Field of Search .............................. 707/10, 104, 200,
`707/500, 513,517; 395/200.47, 200.48,
`200.49; 705/1, 10
`
`56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,754,938 5/1998 Herz et al. ............................... 455/4.2
`5,754,939 5/1998 Hertz et al. .............................. 455/4.2
`5,761,662 6/1998 Dasan ........................................ 707/10
`5,793,497 8/1998 Funk ..
`... 358/402
`5,793.972 8/1998 Shane ...
`395/200.49
`5,835,087 11/1998 Herz et al. .............................. 345/327
`5,848,396 12/1998 Gerace ...................................... 70.5/10
`FOREIGN PATENT DOCUMENTS
`0749081A1 12/1996 European Pat. Off..
`WO 97/17662 5/1997 WIPO.
`
`USOO5983227A
`Patent Number:
`11
`(45) Date of Patent:
`
`5,983,227
`Nov. 9, 1999
`
`OTHER PUBLICATIONS
`Garris, John, “Grab That Database', PC Magazine, vol. 15,
`No. 15, Sep. 10, 1996, p. NE1-NE7.
`Chesnais et al., “The Fishwrap Personalized News System’,
`IEEE, D–7803–27560X/95, Jun., 1995, pp. 275-282.
`Yuri
`Quintana,
`University
`of Western
`Ontario,
`“Knowledge-Based Information Filtering of Financial
`Information,” XP-002057953, May, 1997, pp. 279-285.
`Primary Examiner Paul R. Lintz
`Attorney, Agent, or Firm-Philip H. Albert; Townsend and
`Townsend and Crew LLP
`57
`ABSTRACT
`An custom page Server is provided with user preferences
`organized into templates Stored in compact data Structures
`and the live data used to fill the templates stored local to the
`page Server which is handing user requests for custom pages.
`One process is executed on the page Server for every request.
`The process is provided a user template for the user making
`the request, where the user template is either generated from
`user preferences or retrieved from a cache of recently used
`user templates. Each user process is provided access to a
`large region of shared memory which contains all of the live
`data needed to fill any user template. Typically, the pages
`Served are news pages, giving the user a custom Selection of
`Stock quotes, news headlines, Sports Scores, weather, and the
`like. With the live data stored in a local, shared memory, any
`custom page can be built within the page Server, eliminating
`the need to make requests from other Servers for portions of
`the live data. While the shared memory might include RAM
`(random access memory) and disk storage, in many com
`puter systems, it is faster to store all the live data in RAM.
`9 Claims, 7 Drawing Sheets
`
`204
`
`GLOBAL FRONT
`PAGE TEMPLATE
`
`I
`
`FRONT PAGE
`GENERATOR
`
`USER'S FRONT
`PAGE TEMPLATE
`
`PAGE GENERATOR
`
`USER'S
`FRONT PAGE
`
`
`
`
`
`
`
`
`
`CACHED SER
`TEMPLATES
`
`206
`
`USER
`CONFIGURATION
`
`
`
`NEWS
`SERVER
`
`DATA FROM DATA SOURCES
`
`Lenovo Exhibit 1007
`
`Page 1
`
`
`
`U.S. Patent
`
`Nov. 9, 1999
`
`Sheet 1 of 7
`
`5,983,227
`
`
`
`
`
`
`
`02
`
`BROWSER
`
`MYYAH00.COM
`
`04
`
`PAGE
`SERVER
`
`PAGE
`SERVER
`
`PAGE
`SERVER
`
`TCP/IP
`
`2
`
`EDIT
`SERVER
`
`NFS
`
`
`
`
`
`
`
`EDT, MY YAHOO.COM
`
`6
`
`USER
`CONFIGURATION
`DATABASE
`
`DATA FROM
`DATA SOURCES
`
`
`
`EDT
`SERVER
`
`
`
`NETAPP
`
`A/G /
`
`Page 2
`
`
`
`U.S. Patent
`
`Nov. 9, 1999
`
`Sheet 2 of 7
`
`5,983,227
`
`204
`
`200
`
`GLOBAL FRONT
`PAGE TEMPLATE
`
`FRONT PAGE
`GENERATOR
`
`USER'S FRONT
`PAGE TEMPLATE
`
`
`
`CACHED USER
`TEMPLATES
`
`206
`
`USER
`CONFIGURATION
`
`- 104
`- - - - -
`
`- 5212
`
`SHARED
`MEMORY
`
`:
`
`USER's
`FRONT PAGE
`
`(234
`232
`230
`SPORTS | STOCK || NEWS
`| SERVER || SERVER
`SERVER
`
`- - - - - - m - - - - - -
`
`DATA FROM DATA SOURCES
`
`A/G 2.
`
`Page 3
`
`
`
`U.S. Patent
`
`Nov. 9, 1999
`
`Sheet 3 of 7
`
`5,983,227
`
`
`
`<head>
`<title>My Yahoo! news summary for <!-- login --></title>
`</ head>
`<body >
`
`< Center >
`< - - banner : Sun -->
`
`< -- ad -->
`<!-- nav Oa
`</ Center >
`
`<table border=1 cellpadding = 4 CellSpacing=O width=100% '>
`<t r > < t d align=center valign=top width='1%' >
`<!-- left Side: n sum -->
`3 O2
`
`<p></td)
`<td align=center valign=top width="100% '>
`<!-- mode bar: "FRONT PAGE -->
`< -- Channel : n Slum -->
`
`</td) < /t r >
`</table>
`
`< Center >
`<table border = i cellpadding=2 CellSpacing-C width=100% '>
`<!-- mot d: motin. html -->
`</table>
`</ Center >
`< -- Search -->
`
`<!-- copyright : sum. -->
`
`</body >
`</html>
`
`FIG. 3.
`
`Page 4
`
`
`
`
`
`
`
`
`
`
`
`OOHRGDSN‘WOT‘GOSN’OOHA“XWXv/XdSvOIXTL“WANY{IPGL‘TTJd/seqono:otpoyyazod--j>
`
`203/
`2027
`
`
`
`<--0Ld’g-i:au0zsuty--j>
`
`
`
`
`
`<--Z6Lx‘L‘GEO0S6“SB‘“W:Pe--j>
`
`U.S. Patent
`U.S. Patent
`
`
`
`
`
`
`
`
`
`
`
`Nov.9, 1999
`
`
`
`
`
`
`
`OAS'LAN‘COOAYVON‘NWOTAN‘MSOWEN‘YVOTY‘SSSAVVON‘NWSS'IW‘NVS'THN‘OSSAVWON:PABOGSat00S
`
`
`
`<--9€£82
`
`“i>
`
`
`
`
`
`
`
`
`
`
`
`bP
`
`
`
`
`
`
`
`
`
`
`
`<--89€pTOTS6’L0976‘OPUOTAN‘TOGOE‘J:79yNIeEM--j>
`
`
`
`
`
`
`
`
`
`<--€08€O4S'IN‘’
`
`--j>
`
`
`
`
`
`
`<--16SpJAAR‘qTW’O00002‘Ma‘44%E:
`
`
`
`
`
`ZArTeuUNS/smau/woo*ooyed:Aul//:dyqy=auop’xatpgeegAreuns+SMaN=sr9eTy"4,,99vdLNOYd,?7eqspow
`
`Sheet 4 of 7
`
`5,983,227
`5,983,227
`
`
`
`
`
`<8T3ta/>zogyseroyAzewwnssmeujooyuex,AW<STITIA>
`
`
`
`
`
`
`
`
`
`<--969p[wayUjOWsn:pjoU--j>
`
`<TWwqU>
`
`<peoy>
`
`bvOld
`
`Page 5
`
`<peoyu/>
`
`<Apoq>
`
`<Apoq/>
`
`<qTwiu/>
`
`Page 5
`
`
`
`U.S. Patent
`
`Nov.9, 1999
`
`Sheet 5 of 7
`
`5,983,227
`
`WSOd
`
`
`
`ga2”80S“80S80
`
`
`
`
`219°AQOTONHO3L|SLYOdS|LNIWNIVIYIINA|SOI1941¥0d|ssanisng|39vdINOWs :SNOILOIS
`
`
`
`
`Sdld0l1103WdOb:€NM39VdLNOYS
`
`
`
`¥SS¥19N3ATN9-OLUIGTYNOSNOLLdOJOVYLOL3089-1103|duy0a3400s
`
`
`
`
`
`SNOI1d0S3IQIAYISITILISIM“VIGVONITFOWLOLX3NV-SUHb2SV]ONIUNGSHINRAN*'SHIN
`
`
`
`
`
`3NOI7VYNRISHOYTSUANDITHOSINOWSa1YNId“SA-g7S-pilesOOHVA»
`add;wtjOOHYAG)©©©)
`
`
`
`
`
`ANYOHL39¥4STYUGITNVIGWNWD-eyBLholeLH91dNOISNYGX9OLVNHOIAQVIYSIIVOOAGY‘S1-nd62dQ#S3NSSI
`
`
`
`
`
`
`
`
`JOH1934SHOIDAWS1DUANHO4VII:S1Y3dX2-ge'6l-168savOSYN
`
`inzoyanS39N373HSHANSLOVINOOAN43KSM3NAN
`
`
`
`
`
`
`YALIMMYIONN0F0NGIYJONVYOd)ON!VWIGYVO-+Fi0N0GTIVLIGYO}TOGWASNOHOTT-
`
`
`
`SUVIAISV7AVWST¥ddd¥09193dX2SHOIQAQW-29°0+90°2bb38
`
`SNOILdOHOdvaS:|]EWOLLO€01JAONI
`
`
`ONIHONAT,HOLAGIOAYOLS3AOW39GQF-Glzz+ Sl'2igvind
`2052057
`
`
`Wd£05€MOPSWANONDIWIN8$3L0N0
`iNET1u0d3¥ONYSMINNOOLS“Sl|YIWIVTOSIC-SALONIWO2G3A¥190$3100
`Wd60:2ENArTINOK||8/S-2/2OHA*|\—pos
`
`
`
`
`eo.abGb800g49s
`
`1103SOM04LYOd
`sun)1399|sd
`
`
`NWN109GNVH-1437L103
`
`
`
`
`
`AVGOL
`
`Page 6
`
`Page 6
`
`
`
`
`U.S. Patent
`U.S. Patent
`
`Nov. 9, 1999
`Nov.9, 1999
`
`Sheet 6 of 7
`Sheet 6 of 7
`
`5,983,227
`5,983,227
`
`
`
`
`
`
`
`SNOWV19YALINAWWODiOOHVA
`
`
`
`
`
`1004AFTLOW-YAWOILSMAN-1¥901139
`
`~~‘Cc
`
`43asn
`
`1OOHVAA|ggOld
`
`iOOHVA “WOVd
`
`
`J0IN)TANNVHO83MWOVE
`
`QvO1SYTUMdOL3H1LY0907iOOHVAAWSHNOONINOITDdil
`
`
`
`:12OOSIONYHYNYSINWd5E:9ENASAMOSdOLLNIWNIVLYILN3cwie|1§HOul3d=W
`
`
`
`OISAWNOSL991438NOLNI10bvaINOTY
`
`OIG906
`
`
`
`
`
`G4ZITWLIdSOHONFDITALITVNOOY
`
`
`
`
`
`QNOSS}JOWINUVW*CY0IdI9-
`
`WEDENAWild+SAINOW
`481"¢9v9“WLSNONY
`
`d£L°0Syn‘NOGNOT
`
`TINOOG,SHAHLVSSALVAdASALFAVSSVONOIN-
`
`
`
`
`301440XO8MOTSdfSdO¥dGINO1SO1.
`10166¥9‘ONYTX¥O
`
`
`
`1S¥9IY0dC3ONILXIHOIALDNOYONI
`
`GL0Sva‘aS0rNYS
`
`
`
`
`
`L1NWIIGYNOAJL¥ddNlONY
`
`
`
`
`
`
`
`
`
`
`
`SI1NSIYONILOAYWIS-11¥3N9V31TYNOLLYNAVOUIISIA
`
`
`
`
`
`
`
`GOld
`UHVaM
`
`
`
`
`
`
`
`
`
`SNOILD313SGNAOY1SYI4L4¥HOIN3OV3344TIVA3SVGJEG!jé(SIN|
`
`
`
`
`QNIJOAY¥IS-T1¥INNIONILOTIWESOVI7YZZ¥idJXIW-|VOIdO1d
`
`
`
`
`
`WdS/$£NACV8ISYGAN9VITYOrWN||48WOul3d=
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`0S
`
`Page 7
`
`Page 7
`
`
`
`
`
`
`
`_
`
`606
`N s|| || ||
`( i) } ||
`
`5|||||
`| {|||
`|||||
`
` =
`
`
`
`
`
`
`
`
`
`U.S. Patent
`U.S. Patent
`
`Nov.9, 1999
`Nov. 9, 1999
`
`Sheet 7 of 7
`Sheet 7 of 7
`
`5,983,227
`5,983,227
`
`
`
`=x
`ad
`s
`
`FIG.6.
`
`HTT
`
`Page 8
`
`
`
`1
`DYNAMIC PAGE GENERATOR
`
`5,983.227
`
`COPYRIGHT NOTICE
`A portion of the disclosure of this patent document
`contains material which is Subject to copyright protection.
`The copyright owner has no objection to the Xerographic
`reproduction by anyone of the patent document or the patent
`disclosure in exactly the form it appears in the Patent and
`Trademark Office patent file or records, but otherwise
`reserves all copyright rights whatsoever.
`
`BACKGROUND OF THE INVENTION
`The present invention relates to the field of customized
`information presentation. More Specifically, one embodi
`ment of the invention provides a custom page Server which
`can quickly Serve custom pages and is Scalable to handle
`many users simultaneously.
`Web servers for serving static documents (“Web pages”)
`over the global Internet are known. While static documents
`are useful in many applications where the information to be
`presented to each requesting user is the same, Some appli
`cations require customization to appeal to users. For
`example, in presenting news to users, custom pages present
`news which is more relevant to the requesting users than
`Static pages. With Static pages, a user will often have to
`Scroll through many topics not of interest to that user to get
`to the information of interest. With custom pages, the
`information is filtered according to each user's interest.
`Customizing a Server response based on the requester is
`known, however known Systems do not Scale well. One
`method of Serving custom pages is to execute a Script, Such
`as a CGI (Common Gateway Interface) script, or other
`program to collect the information necessary to generate the
`custom page. For example, if the custom page is a news page
`containing Stock quotes, Sports Scores and weather, the Script
`might poll a quote Server to obtain the quotes of interest, poll
`a Sports Score Server to obtain the Scores of interest and poll
`a weather server to obtain the weather. With this
`information, the Server generates the custom page and
`returns it to the user. This approach is useful where there are
`not many requesters and where the attendant delay is accept
`able to users. While it may be the case that current users are
`Willing to wait while pages load in their browsers, growing
`impatience with waiting will turn users away from Such
`Servers, especially as use increases.
`One approach to avoiding long waits is to transfer the
`custom information in non-real-time, So that the information
`is Stored local to the user as it arrives and is presented to the
`user on request. A disadvantage of Such a System is that the
`networks used by the user become clogged with data con
`tinually Streaming to the user and require large amounts of
`local Storage. Another disadvantage is that the locally Stored
`information will become out of date as the Server receives
`new data.
`From the above it is seen that an improved system for
`delivering custom pages is needed.
`SUMMARY OF THE INVENTION
`An improved custom page Server is provided by Virtue of
`the present invention. In one embodiment, user preferences
`are organized into templates Stored in compact data Struc
`tures and the live data used to fill the templates is Stored local
`to the page Server which is handing user requests for custom
`pages. One process is executed on the page Server for every
`request. The proceSS is provided a user template for the user
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`making the request, where the user template is either gen
`erated from user preferences or retrieved from a cache of
`recently used user templates. Each user proceSS is provided
`access to a large region of shared memory which contains all
`of the live data needed to fill any user template. Typically,
`the pages Served are news pages, giving the user a custom
`Selection of Stock quotes, news headlines, Sports Scores,
`weather, and the like. With the live data stored in a local,
`shared memory, any custom page can be built within the
`page Server, eliminating the need to make requests from
`other servers for portions of the live data. While the shared
`memory might include RAM (random access memory) and
`disk Storage, in many computer Systems, it is faster to Store
`all the live data in RAM.
`If the Volume of requests becomes too great for one page
`Server to handle, the System is easily Scaled by adding
`additional page Servers. Each page Server maintains its own
`copy of the live data in its shared memory, and needs to
`maintain only the user templates for the requests it is
`handling, So no communication between page Servers is
`needed.
`A further understanding of the nature and advantages of
`the inventions herein may be realized by reference to the
`remaining portions of the Specification and the attached
`drawings.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a block diagram of a client-server architecture
`according to one embodiment of the present invention;
`FIG. 2 is a Schematic diagram showing how a user's
`custom page is generated from a user configuration, a global
`template and live data.
`FIG. 3 is an illustration of a global front page template as
`might be used to generate user templates.
`FIG. 4 is an illustration of a user template generated from
`the global front page template of FIG.3 as might be used to
`generate a custom uSer page.
`FIG. 5 is an illustration of a user page generated using the
`global template of FIG. 4.
`FIG. 6 is an illustration of how intelligent defaults are
`Selected.
`Two appendices are included at the end of this descrip
`tion. Appendix A is a full listing of the user template shown
`in part in FIG. 4. Appendix B is an HTML source code
`listing of the HTML page used to generate the browser
`display shown in FIG. 5.
`DESCRIPTION OF THE PREFERRED
`EMBODIMENTS
`FIG. 1 shows a client-server system 100 which is used to
`display custom news pages. A custom news page is dis
`played on a browser 102 which obtains the page from a page
`server 104 via Internet 106. While only one browser 102 is
`shown, a typical System will have many browsers connect
`ing and disconnecting to the System.
`The art of client-server systems using HTTP (HyperText
`Transport Protocol) messaging or other protocols is well
`known and will not be addressed in detail here. Essentially,
`browser 102 makes a request for a particular page by
`specifying a Uniform Resource Locator (“URL) for the
`page. In the example shown in FIG. 1, the request is directed
`to the URL “http:/my.yahoo.com/. Normally, this URL is
`directed to the root directory of a machine named my..ya
`hoo.com. AS is the convention in Internet communications,
`browser 102 submits the domain portion (“my.yahoo.com')
`
`Page 9
`
`
`
`3
`of the URL to a name server, Such as name server 108, to
`determine an actual address for the page server 104. Name
`server 108 returns an IP (Internet Protocol) address to
`browser 102 directing it to a page server 104. Where
`multiple page servers 104 are used, name server 108 returns
`IP addresses in a round-robin fashion to distribute the load
`over multiple page servers. Alternatively, name server 108
`might distribute the load more deterministic by tracking
`browser addresses and hashing the browser address to Select
`a page Server 104. It is deterministic in that any given
`browser always accesses the same page Server 104. This
`allows for more efficient caching of user templates, Since
`more cache hits are likely where a given browser always
`returns to one page Server.
`When a page server receives the URL for its root
`directory, it interprets that as a request for the user's custom
`Summary page. The user is determined not from the URL,
`but from a “cookie” provided by browser 102 with the URL.
`Cookies are Strings of data Stored by browsers and Sent along
`with any request to a URL having a domain associated with
`the cookie.
`Page servers 104 obtain the live data from many disparate
`Sources and reformat the data into a form Suitable for use by
`the page Server. Page Servers 104 are coupled, via a network,
`to edit Servers 112, which are used when a user changes his
`or her user template. The user templates are Stored in a user
`configuration database 116 and are Stored and provided to
`edit servers by a network appliance 114 written for this
`purpose. Network appliance 114 is a process tuned to
`quickly locate files in large directories (N400 files/directory)
`and return them to the edit Servers or page Servers. One
`embodiment of network appliance 114 is the F330 fault
`tolerant scalable server Supplied by Network Appliance, of
`Mountain View, Calif.
`In a Specific embodiment, page Servers 104 are micro
`computers running the Unix(R) operating System with 64 to
`128 megabytes of shared memory, page Servers 104 and edit
`servers 112 are coupled using TCP/IP (Transport Control
`Protocol/Internet Protocol) and the user configuration data
`base 116 is a Unix file structure which stores each user
`configuration in a text file. The particular file used by a user
`is a combination of the user's user name and a hash result,
`to allow for quick access when many user configurations are
`Stored. For example, the user configuration for Summary
`“front” page for a user “ash802” might be stored at /de/13/
`y.ash802, where “de” and “13' are hash results of a hash of
`the user name “ash802'.
`FIG. 2 shows in more detail the generation of a custom
`page for a user, using a front page generator 200 and page
`server 104. Front page generator 200 generates a user
`template 202 from a global front page template 204 and a
`user configuration record 206. FIG. 3 shows an example of
`a global front page template. User configuration record 206
`is a record Selected from user configuration database 116.
`The record might have been obtained from a cache, but in
`the preferred embodiment, the records are not cached, the
`user templates are.
`Page Server 104 is shown comprising a page generator
`210, a shared memory 212 for Storing live data and a cache
`214 for caching user templates Such as user template 202.
`Page generator 210 generates a custom front page 218 from
`a user template and the live data Stored in shared memory
`212. Although not shown, custom pages other than the front
`page can be generated in a Similar fashion. Using user
`templates and a shared memory for the live data, page Server
`104 can quickly build custom pages in response to a user
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`5,983.227
`
`4
`request. Where the user template is cached, the page can be
`generated entirely within page Server 104.
`Shared memory 212 is organized as a Set of memory
`mapped files. With memory mapped files, the operating
`System maintains the data in permanent Storage, but perma
`nently caches the files in shared memory 212. This allows
`for quick recovery should a page Server crash, Since all of the
`shared memory can Simply be reloaded from the permanent
`Storage. This is a great feature from a user convenience
`Standpoint, Since the user will never be faced with a situation
`where they have to wait for a Server to rebuild a page for
`them by querying the various data providing Servers, Such as
`sports server 230, stock server 232 and news server 234. As
`should be apparent from this description and FIG. 2, page
`generator 210 can generate custom front page 218 much
`more quickly using shared memory 212 as compared with
`using servers 230, 232, 234 and page template 202. One
`reason for this is that the time it takes to retrieve data from
`shared memory 212 does not appreciably increase relative to
`the bandwidth delay time when more data is retrieved. For
`example, if Stock Server 232 were queried for each indi
`vidual Stock quote, a page with fifty Stock quotes might take
`ten times as long to generate as a page with five Stock quotes.
`One aspect of the present invention is the realization that
`every piece of information a perSon can request on a page is
`Storable in a shared memory closely coupled to a page
`generator. For example, page Server 104 shown in FIG. 2 can
`accommodate 65,000 different symbols for which quotes are
`provided. In one embodiment, all of the stock information
`for all 65,000 symbols is stored in a 13 to 14 megabytes
`section of the shared memory. Where shared memory 212 is
`a 64 MB or 128 MB memory, this leaves sufficient room for
`other data, Such as news headlines, sport Scores, and
`memory used by the operating System for each process
`running on page Server 104. In Some embodiments, shared
`memory 212 is large enough to also accommodate more than
`just news headlines. For example, news Summaries (as
`described further in connection with FIG. 5) can be stored in
`shared memory 212 for quick access.
`As shown in FIG. 2, the user's front page template 202
`does not need to be generated each time, but rather is Stored
`in cache 214. In a preferred embodiment, user templates are
`Stored in cache 214 for long enough to be reused. Some users
`might choose to access their front page only infrequently,
`while others might choose to access their front page hourly.
`Since the pages are customized and dynamic, the user would
`See different information each time, but the Same user
`template would be used each time. Of course, when the user
`edits his or her template, any cached copy of a user template
`is flushed. A garbage-collection proceSS may also flush the
`cache of user pages which have been inactive for Several
`days. In one implementation, cache 214 would accommo
`date 60,000 to 70,000 user templates. Where a particular
`page Server is assigned on a random round robin basis,
`multiple page Servers may cache their own copy of a given
`user template, but where a user is directed always to a
`particular server (except in the case where the particular
`Server fails and a secondary server is used), that page server
`will be the only one which needs to cache that users user
`template. Even where the round robin name Server Scheme
`is used, Some browserS may cache IP addresses, even longer
`than the specified “time to live” variable associated with the
`IP address, in order to save the time required to obtain an IP
`address each time. With Such a browser, the user is effec
`tively directed to the same page Server each time and the
`Server Side of the page Serving System does not need to direct
`users to particular page Servers. With newer browsers,
`
`Page 10
`
`
`
`5,983.227
`
`S
`however, the “time to live” variable is honored and new
`requests are made for IP addresses after the “time to live”
`has expired. In these cases, if the assignment of a user to a
`single page server is desired, name server 108 (see FIG. 1)
`will use the user name from the provided cookie or the user's
`IP address to assign a page Server based on a hash of the user
`name or IP address.
`FIG. 3 is an illustration of global user template 204.
`Global user template 204 is an HTML (HyperText Markup
`Language) document with additional tags as placeholders
`for live data. Several placeholders 302 are shown in FIG. 3.
`FIG. 4 is an illustration of user template 202 as might be
`generated from global user template 204 (see FIG. 3) and a
`user configuration record 206. A full listing of user template
`202 is included herewith in Appendix A. User template 202
`is determined by the user configuration and is independent
`of the live data, therefore it can be cached without needing
`to be updated, unless the user chooses to edit the configu
`ration information. Preferably, the user templates are cached
`rather than the user configuration, to Save a step and reduce
`the time to respond to a request for the page. Caching is
`more effective where the typical user makes Several requests
`in a short time span and then doesn’t make any requests for
`a long period of time.
`Essentially, user template 202 contains the information
`about the user which does not change until the user changes
`his or her preferences. Of course, the System operator could
`choose to make changes to how the System operates, thus
`requiring changes to the user preferences and user templates.
`User template 202 is shown comprising internal variables
`Such as a time Zone and demographic information. The
`demographic information, on the Second line in FIG. 4 is
`used for selection of an advertisement which will be part of
`the custom page. In this example, the advertisement is
`targeted by the demographic information in the user tem
`plate “:M,85,95035,T,” indicating that a suitable ad should
`be targeted to a male user, age 85, located in Zip code 95035,
`etc. AS shown, the portfolio Section contains Selected Stock
`Symbols, the Scoreboard Section contains Selected team
`Symbols, and the weather Section contains Selected weather
`cities/Zip codes.
`The Selections of Stock quote Symbols, team Scores, and
`weather cities are set by the user. In a preferred embodiment,
`intelligent defaults are Selected by the System prior to user
`Selection, So that users unfamiliar with the customization
`proceSS will nonetheless be able to View non empty custom
`pages. This is described in further detail below in connection
`with FIG. 6.
`FIG. 5 is an illustration of a user front page 218 returned
`by page server 104. User front page 218 as shown in FIG.
`5 includes many elements, Some of which are described here
`in further detail. User front page 218 is built according to a
`user template and live data. The user template Specifies, for
`example which quotes are shown in the portfolio module,
`which cities are displayed in the weather module, etc. Each
`of the modules 504 can be customized by a user and moved
`about front page 218. The modules 504 are also reusable, in
`that any customized module which appears on multiple
`pages can be edited from any one of those pages and the
`edits will be reflected on each of the pages. Other custom
`pages for the user can be viewed by Selecting one of the page
`buttons 502 appearing below the header. Other pages and
`utilities can be selected using the buttons 508 which are part
`of the header.
`In addition to all of the live date shown in FIG. 5 being
`Stored in the shared memory, Summaries from each of the
`
`6
`major news topics can also be Stored in the shared memory
`and viewed by pressing on the news topic header, Such as
`news topic header 506. As should be noted, the page
`generator can also intelligently display dates 510 customized
`for a particular user, using a time Zone variable in the user
`template. This time Zone variable is shown as the first line
`in user template 202 in FIG. 4. In addition to being able to
`modify each of the modules, in many cases the order of
`appearance of the modules is customizable. For example, the
`order of the various sections of user template 202 shown in
`FIG. 4 is not fixed.
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`The preference editing process can be initiated by the user
`pressing the appropriate edit button 512. AS explained
`above, once the editing process is complete, the user tem
`plate is flushed from the cache and regenerated. Since each
`of the news Stories is essentially a Static page linked to a
`headline shown in the news Section, these can simply be
`linked to Static pages on a news Server.
`Referring now to FIG. 6, an illustration of intelligent
`defaulting for populating a user template, and consequently
`a user Summary page. AS part of a registration process, a user
`indicates, among other things, his or her Zip code. This Zip
`code is used to locate an approximate longitude and latitude
`for the user using a zip code lookup table 602. This allows
`the user's location to be located on a map 604. Map 604
`provides city boundaries and, with team location table 606,
`also provides locations for various Sports teams which can
`be selected in a Sports module. In Selecting a default
`predetermined number of cities and Sports teams for inclu
`Sion as initial Selections for a particular user, a circle is
`drawn around the user and increased in diameter until the
`circle envelopes a Suitable predetermined number of cities
`and Sports teams. In this way, each user is guaranteed a
`default number of nearby teams and cities for Sports and
`weather, respectively. While this assumes that the user is
`interested in only the teams nearest the user, the System can
`be arranged to provide intelligent defaults where geographic
`anomalies are known to exist. Geographic anomalies occur
`in communities which have more loyalty to distant teams
`than nearby teams, Such as might occur when the distant
`team is much better than the nearby team or when the nearby
`team recently moved to a distant location. In any case, the
`user is allowed customize his or her pages beginning with
`the intelligent defaults Selected.
`Other intelligent defaults can be provided in other con
`texts. For example, the header of user front page 218
`includes a button 508 labelled “my web” which, when
`pressed, would lead the user to a custom listing of web sites.
`The initial defaults for that custom listing of web sites might
`be generated based on the keywords of interest to that user
`or based on the news topics, Sports teams or weather cities
`Selected by the user.
`The above description is illustrative and not restrictive.
`Many variations of the invention will become apparent to
`those of skill in the art upon review of this disclosure. The
`Scope of the invention should, therefore, be determined not
`with reference to the above description, but instead should
`be determined with reference to the appended claims along
`with their full Scope of equivalents.
`
`Page 11
`
`
`
`5,983,227
`
`APPENDIX A
`
`Listing of a User Template
`
`<!-- timezone: -8,PT 0 -->
`<}-- ad:M,85,95035,T,* 792 -->
`<!--
`portfolio:Quotes,pf_1,1, DJI, NYA, [XIC, SPX, XAX,YHOO,NSCP,IOM,NSCP,YHOO
`2836 -->
`<!--
`scoreboard:NCAAFSSC,NHLSAN,MLSSAN,NCAAFSSS,ALOAK,NBAGSW,NFLOAK,NCAAFCCD,NF
`LSFO,NLSFO 3803 -->
`<!-- weather:f,30901,uk_londo,94601,95101 4368 - - >
`<!--
`mode__bar:“FRONT_PAGE1”,.hier=News+Summary%3aEdit& .done=http://my.yahoo.com/
`news/summary.html?v 4538 -->
`<!-- summary2:3,rt,rw,z0000,mlb,re,vf 4597 -->
`<!-- motd:us_motn.html 4696 -->
`<html>
`<head>
`<title>My Yahoo!news summary for ash802</title>
`</head>
`<body>
`<center>
`<map name=“top”><area shape=rect coords=“0,0,45,66%
`href=“/news/summary.html?v’><area shape=rect coords=“45,0,90,66”
`href=“/intemet/directory.html?v”><area shape=rect coords=“90,0,135,66”
`href=“/contacts/white__pages.html?v’><area shape=rect coords=“135,0,346,66”
`href=“/?myHome”’><area shape=rect coords=“346,0,389,66”
`href=“/help/news/summary.html”’><area shape=rect coords=“389,0,431,66”
`href=“http://edit.my.yahoo.com/config/eval_profile”’><area shape=rect
`coords=“431,0,477,66” href=“http://edit.my.yahoo.com/config/toffly’>
`</map>
`<center><a href=“/bin/top_menu”’><img border=0 height=62 width=477 ismap
`usemap=“#top” src=“http://www.yahoo.com/images/my/banner/news1.gif”
`alt=“My Yahoo!”’></a></center>
`
`AAABPAAPAAAAa
`
`QAQAAARABEagGHRAaRALES
`
`
`
`
`<p>
`<center><form action=“http://search.my.yahoo.com/search/my’’> <font
`size=“-2”>[ <a
`href=“http://edit.my.yahoo.com/config/set__attr?attr=sloc&value=b&.done=htt
`p://my.yahoo.com/news/summary.html?v’>move to bottom</a> ] </font><input
`size=25 name=p> <font size=“-1”> <input type=submit
`value=Search><input type=hidden name=n value=“25”> <a
`href=“http://search.my. yahoo.com/search/my/options’”>Options</a></font></fo
`rm></center><p>
`<center>
`able border=0 cellspacing=0 cellpadding=2>
`r>
`d align=center><font
`or=“#000000”><b>Sections:</b> </font></td>
`align=center bgcolor=“#dcdcede’’><font
`or=“#000000”"><b>Front Page</b></font></td>
`> | </td>
`align=center><a href=“/news/business/summary.html?v’>Business </a></td>
`> | </td>
`align=center><a
`f=“/news/portfolio_summary.html?v’>Portfolios</a></td>
`> | </td>
`align=center><a
`f=“/news/entertainment/summary. html?v’>Entertainment</a></td>
`d> | </td>
`d align=center><a href=“/news/sports/summary.html?v’>Sports</a></td>
`d> | </td>
`<td align=center><a
`href=“/news/technology/summary.html?v’>Technology</a></td>
`</tr>
`</table>
`</center>
`</center>
`<table border=1 cellpadding=4 cellspacing=0 width=“100%”>
`<tr><td align=center valign=top width=“1%”>
`<a
`href=“http://edit.my.yahoo.com/config/eval__left?mode=left_nsum&.done=http%
`3a%2f%2imy%2eyahoo %2ecom%2inews %2fsummary%2ehtml %3fv"><img border=0
`src=“http://www.yahoo.com/images/my/left.gif’alt=“edit left’></a>
`<table border=0 cellpadding=1 cellspacing=0 width=“100%”>
`<tr bgcolor=“#dcdede”’><td colspan=4 width=“100%”><table border=0
`cellpadding=2 cellspacing=0 width=“100%"><tr><td width=“100%"><b><font
`size=“+1”>P<font size=“+0”>ORTFOLIOS</font></font></b></td><td
`
`
`
`Page 12
`
`Page 12
`
`
`
`
`
`
`
`<hr size=0><table border=0 cellpadding=2 cellspacing=0 width=“100%">
`<tr bgcolor=“#dcedede”><td colspan=3 width=“ 00%”><table border=0
`cellpadding=2 cellspacing=0 width=“100%"><tr><td width=