`
`USO05894554A
`
`United States Patent
`
`[193
`
`[11] Patent Number:
`
`5,894,554
`
`Lowery et al.
`[45] Date of Patent: Apr. 13, 1999
`
`
`
`5,452,460
`5,532,838
`5,751,956
`5,761,673
`
`9/1995 Distelberg et al.
`..................... 395/700
`7/1996 Barbari ..........
`...... 358/400
`
`5/1998 Kitsch ...........
`. 395f200.33
`6/1993 Bookman et a1.
`...................... 707/104
`
`OTHER PUBLICATIONS
`
`“Beyond the Web: Excavating the Real World Via Mosaic".
`Goldberg et al. Second International WWW. Oct. 17. 1994.
`PCI‘ International Search Report. Aug. 21. 1997.
`Primary Examiner—Thomas C. Lee
`Assistant Examine»-Rehana Perveen
`Attorney, Agent, or F'irm—Blake1y. Sokolotf. Taylor &
`Zafman LLP
`
`[57]
`
`ABSTRACT
`
`The present invention teaches a method and apparatus for
`creating and managing custom Web sites. Specifically. one
`embodiment of the present invention claims a computer-
`implemented method for managing a dynamic Web page
`generation request
`to a Web server.
`the computer-
`implemented method comprising the steps of routing the
`request from the Web server to a page server. the page server
`receiving therequest and releasing the Web server to process
`other requests. processing the request. the processing being
`performed by the page server concurrently with the Web
`server. as the Web server processes the other requests. and
`dynamically generating a Web page in response to the
`request. the Web page including data dynamically retrieved
`from one or more data sources.
`
`11 Claims, 5 Drawing Sheets
`
`[54] SYSTEM FOR MANAGING DYNAMIC WEB
`PAGE GENERATION REQUESTS BY
`INTERCEPTING REQUEST AT WEB
`SERVER AND ROUTING TO PAGE SERVER
`THEREBY RELEASING WEB SERVER TO
`PROCESS OTHER REQUESTS
`
`[75]
`
`Inventors: Keith Lowery. Richardson; Andrew B.
`Levine. Plano: Ronald L. Howell.
`Rowlett. all of Tex.
`
`[73] Assignee:
`
`Infospinner, Inc... Richardson. Tex.
`
`[21] Appl. No.: 08/636,477
`
`[22]
`
`Filed:
`
`Apt: 23, 1996
`
`Int. Cl.5
`[51]
`[52] U.S. Cl.
`
`G06F 13/14', G06F 13/20
`
`............................ 395/200.33; 395/200.68:
`395/200.75; 395/680; 707/10; 707/104
`[58] Field of Search ............................. 358/400; 395/800.
`395/700. 200.68. 200.75. 200.53. 680. 200.33;
`707/104. 10
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`............. 370/85.7
`9/1989 Christophersen et al.
`395/700
`8/1994 Doragh ...................
`395/200
`2/1995 Berkowitz et 2].
`. 395/650
`4/1995 Carmen et al.
`. 395/650
`.
`4/1995 Del1aFera et a].
`4/1995 Irwin ct al.
`............................. 395/700
`
`
`
`4,866,706
`5,341,499
`5,392,400
`5,404,522
`5,404,523
`5,404,527
`
`CONNECTION
`CACHE 412(1)
`
`DATA
`SOURCE
`
`
`
`
`PAGE SERVERS
`
`
`
`PAGE
`
`SERVER
`
`.- ‘I
`
`
`
`SERVER
`
`DISPATCHER
`
`
`
`
`
`REQUEST
`
`WEB SERVER
`
`
`
` WEB SERVER
`
`EXECUTABLE
`
`INTERCEPTOR
`
`51.02
`
`PAGE
`
`SERVER
`
`A
`DAT
`SOURCE
`
`41 1
`
`Petitioner l\/licrosoft Corporation - Ex. 1001, p. 1
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 1
`
`
`
`U.S. Patent
`
`Apr. 13, 1999
`
`Sheet 1 of 5
`
`5,894,554
`
`3
`
`Ska
`
`moéoa
`
`_23_om_2
`
`mO_>wQ
`
`moéoaEOE:
`
`
`mm<2>420D<mm
`
`Ma
`
`mommmoomm
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 2
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 2
`
`
`
`
`
`U.S. Patent
`
`Apr. 13, 1999
`
`Sheet 2 of 5
`
`5,894,554
`
` WEB SERVER
`
`WEB SERVER
`EXECUTABLE
`
`
`
` REQUEST
`
`201 E
`
`//REQUEST
`
`WEB SERVER
`
`
`
`WEB SERVER
`EXECUTABLE
`
`
`
`FIG. 2 (PRIOR ART)
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 3
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 3
`
`
`
`U.S. Patent
`
`Apr. 13, 1999
`
`Sheet 3 of 5
`
`5,894,554
`
`BEGIN
`TRANSACTIO
`
`
`
`
`
`WEB CLIENT MAKES URL REQUEST
`
`URL EXAMINED BY WEB BROWSER TO
`DETERMINE APPROPRIATE WEB SERVER
`
`
`
`
`
`REQUEST TRANSMITTED TO
`APPROPRIATE WEB SERVER
`
`
`
`300
`
`802
`
`
`
`304
`
`WEB SERVER EXAMINES URL TO DETERMINE WHETHER
`IT IS AN HTML DOCUMENT OR A CGI APPLICATION
`
`
`
`HTML
`
`DOCUMENT1_
`308
`
`WEB SERVER LOCATES DOCUMENT
`
`310
`
`316
`
`
`
`306
`
`
`
`CGI
`APPLICATION
`314
`
`WEB SERVER LOCATES CGI APPLICATION
`
`
`
`
`
`31[J 2
`
`DOCUMENT TRANSMITTED BACK
`TO REQUESTING WEB BROWSER
`FOR FORMATTING AND DISPLAY
`
`313
`
`CGI APPLICATION EXECUTES
`AND OUTPUTS HTML OUTPUT
`
`I
`
`HTML OUTPUT TRANSMITTED
`BACK TO REQUESTING WEB BROWSER
`FOR FORMATTING AND DISPLAY
`
`
`
`
`
`FIG. 3 (PRIOR ART)
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 4
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 4
`
`
`
`U.S. Patent
`
`Apr. 13, 1999
`
`Sheet 4 of 5
`
`5,894,554
`
`E.<o
`
`momaom
`
`.:.
`
`moi
`
`Ezmm
`
`<55
`
`momaom
`
`zocomzzoo
`
`
`
`Em;m_._o<o
`
`m$>$mmoi
`
`moé
`
`mm>Em
`
`mmimm
`
`Ezotama
`
`mm.
`
`
`
`mormomE2.Smsomm
`
`mm_>EmB;
`
`Ezmmmm;
`
`m:m<Somxm
`
`am
`
`mm;
`
`Emzo
`
`q.UHm
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 5
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 5
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Apr. 13, 1999
`
`Sheet 5 of 5
`
`5,894,554
`
`BEGIN PROCESSING
`I
`
`WEB BROWSER SENDS URL REQUEST
`
`500
`
`502
`
`WEB SERVER RECEIVES URL REQUEST
`
`"
`INTERCEPTOR INTERCEPTS HANDLING OF REQUEST
`
`504
`
`INTERCEPTOR CONNECTS To DISPATCHER AND SENDS
`REQUEST TO DISPATCHER
`
`505
`
`DISPATCHER DETERMINES WHICH PAGE
`SERVERS CAN HANDLE REQUEST
`
`508
`
`DISPATCHER DETERMINES wHICH PAGE SERVER
`IS PROCESSING FEWEST REQUESTS
`
`510
`
`V
`
`2
`
`DISPATCHER SENDS REQUEST TO APPROPRIATE PAGE SERVER
`
`PAGE SERVER RECEIVES REQUEST AND PRODUCES HTML DOCUMENT
`
`514
`
`PAGE SERVER FIESPONDS To DISPATCHER WITH
`NOTIFICATION OF NAME OF CACHED HTML DOCUMENT
`
`516
`
`DISPATCHEFI RESPONDS TO INTEFICEPTOR WITH DOCUMENT NAME
`
`518
`
`INTERCEPTOR REPLACES REQUESTED URL WITH
`NEWLY GENERATED HTML DOCUMENT
`V7
`
`52o
`
`WEB SERVER SENDS NEW HTML DOCUMENT TO CLIENT
`
`522
`
`WEB BROWSER RECEIVES AND DISPLAYS HTML
`DOCUMENT CREATED BY PAGE SERVER
`
`524
`
`END PROCESSING
`
`FIG. 5
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 6
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 6
`
`
`
`5,894,554
`
`1
`SYSTEM FOR MANAGING DYNAMIC WEB
`PAGE GENERATION REQUESTS BY
`INTERCEPTING REQUEST AT WEB
`SERVER AND ROUTING TO PAGE SERVER
`THEREBY RELEASING WEB SERVER TO
`PROCESS OTHER REQUESTS
`FIELD OF THE INVENTION
`
`invention relates to the field of Internet
`The present
`technology. Specifically. the present invention relates to the
`creation and management of custom World Wide Web sites.
`
`10
`
`DESCRIPTION OF RELATED ART
`
`The World Wide Web (the Web) represents all of the
`computers on the Internet that olfer users access to infor-
`mation on the Internet via interactive documents or Web
`pages. These Web pages contain hypertext links that are used
`to connect any combination of graphics. audio. video and
`text. in a non-linear. non-sequential manner. Hypertext links
`are created using a special software language known as
`Hyper’l‘ext Mark-Up Language (HTML).
`Once created. Web pages reside on the Web. on Web
`servers or Web sites. A Web site can contain numerous Web
`pages. Web client machines running Web browsers can
`access these Web pages at Web sites via a communications
`protocol known as Hyper’l‘ext Transport Protocol (HTTP).
`Web browsers are software interfaces that run on World
`Wide Web clients to allow access to Web sites via a simple
`user interface. AWeb browser allows a Web client to request
`a particular Web page from a Web site by specifying a
`Uniform Resource Locator (URL). A URL is a Web address
`that identifies the Web page and its location on the Web.
`When the appropriate Web site receives the URL. the Web
`page corresponding to the requested URL is located. and if
`required. HTML output is generated. The HTML output is
`then sent via llTI'Pto the client for formatting on the client's
`screen.
`
`15
`
`20
`
`30
`
`35
`
`Although Web pages and Web sites are extremely simple
`to create.
`the proliferation of Web sites on the Internet
`highlighted a number of problems. The scope and ability of
`a Web page designer to change the content of the Web page
`was limited by the static nature of Web pages. Once created.
`a Web page remained static until it was manually modified.
`This in turn limited the ability of Web site managers to
`effectively manage their Web sites.
`The Common Gateway Interface (CGI) standard was
`developed to resolve the problem of allowing dynamic
`content to be included in Web pages. CGI “calls” or proce-
`dures enable applications to generate dynamically created
`HTML output. thus creating Web pages with dynamic con-
`tent. Once created. these CGI applications do not have to be
`modified in order to retrieve “new” or dynamic data. Instead.
`when the Web page is invoked. CGI "calls” or procedures
`are used to dynamically retrieve the necessary data and to
`generate a Web page.
`CGI applications also enhanced the ability of Web site
`administrators to manage Web sites. Administrators no
`longer have to constantly update static Web pages. Anumber
`of vendors have developed tools for CGI based
`development. to address the issue of dynamic Web page
`generation. Companies like Spider“! and Bluestonem. for
`example. have each created development tools for CGI-
`based Web page development. Another company. Haht
`Software”. has developed a Web page generation tool that
`uses a BASIC-like scripting language. instead of a CGI
`scripting language.
`
`45
`
`50
`
`55
`
`65
`
`2
`Tools that generate CGI applications do not. however.
`resolve the problem of managing numerous Web pages and
`requests at a Web site. For example. a single company may
`maintain hundreds of Web pages at their Web site. Current
`Web server architecture also does not allow the Web server
`to efliciently manage the Web page and process Web client
`requests. Managing these hundreds of Web pages in a
`coherent manner and processing all requests for access to the
`Web pages is thus a difiicult task. Existing development
`tools are limited in their capabilities to facilitate dynamic
`Web page generation. and do not address the issue of
`managing Web requests or Web sites.
`
`SUMMARY OF THE INVENTION
`
`It is therefore an object of the present invention to provide
`a method and apparatus for creating and managing custom
`Web sites. Specifically.
`the present
`invention claims a
`method and apparatus for managing dynamic web page
`generation requests.
`invention claims a
`the present
`In one embodiment.
`computer-implemented method for managing a dynamic
`Web page generation request to a Web server. the cornputer-
`implemented method comprising the steps of routing the
`request from the Web server to a page server. the page server
`receiving the request and releasing the Web server to process
`other requests. processing the request. the processing being
`performed by the page server concurrently with the Web '
`server. as the Web server processes the other requests. and
`dynamically generating a Web page in response to the
`request. the Web page including data dynamically retrieved
`from one or more data sources. Other embodiments also
`include connection caches to the one or more data sources.
`page caches for each page server. and custom HTML
`extension templates for configuring the Web page.
`Other objects. features and advantages of the present
`invention will be apparent from the accompanying drawings
`and firom the detailed description.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 illustrates a typical computer system in which the
`present invention operates.
`FIG. 2 illustrates a typical prior art Web server environ-
`ment.
`
`FIG. 3 illustrates a typical prior art Web server environ-
`ment in the form of a flow diagram.
`FIG. 4 illustrates one embodiment of the presently
`claimed invention.
`
`FIG. 5 illustrates the processing of a Web browser request
`in the farm of a flow diagram. according to one embodiment
`of the presently claimed invention.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENT
`
`The present invention relates to a method and apparatus
`for creating and managing custom Web sites. In the follow-
`ing detailed dcscription. numerous specific details are set
`forth in order to provide a thorough understanding of the
`present invention. It will be apparent to one of ordinary skill
`in the art. however. that these specific details need not be
`used to practice the present invention. In other instances.
`well-known structures. interfaces and processes have not
`been shown in detail in order not to unnecessarily obscure
`the present invention.
`FIG. 1 illustrates a typical computer system 100 in which
`the present invention operates. The preferred embodiment of
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 7
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 7
`
`
`
`5,894,554
`
`3
`the present invention is implemented on an IBMTM Personal
`Computer manufactured by IBM Corporation of Armonk.
`N.Y. An alternate embodiment may be implemented on an
`RS/60003‘ Workstation manufactured by IBM Corporation
`of Armonk. N.Y. It will be apparent to those of ordinary slcill
`in the art that other computer system architectures may also
`be employed.
`In general. such computer systems as illustrated by FIG.
`1 comprise a bus 101 for communicating information. a
`processor 102 coupled with the bus 101 for processing
`information. main memory 103 coupled with the bus 101 for
`storing information and instructions for the processor 102. a
`read—only memory 104 coupled with the bus 101 for storing
`static information and instructions for the processor 102. a
`display device 105 coupled with the bus 101 for displaying
`information for a computer user. an input device 106
`coupled with the bus 101 for communicating information
`and command selections to the processor 102. and a mass
`storage device 107. such as a magnetic disk and associated
`disk drive. coupled with the bus 101 for storing information
`and instructions. A data storage medium 108 containing
`digital information is configured to operate with mass stor-
`age device 107 to allow processor 102 access to the digital
`information on data storage medium 108 via bus 101.
`Processor 102 may be any of a wide variety of general
`purpose processors or microprocessors such as the Pen-
`tium“! microprocessor manufactured by Intel” Corpora-
`tion or the RS/6000"“ processor manufactured by IBM
`Corporation. It will be apparent to those of ordinary skill in
`the art. however. that other varieties of processors may also
`be used in a particular computer system. Display device 105
`may be a liquid crystal device. cathode ray tube (CRT). or
`other suitable display device. Mass storage device 107 may
`be a conventional hard disk drive. floppy disk drive.
`CD-ROM drive. or other magnetic or optical data storage
`device for reading and writing information stored on a hard
`disk. a floppy disk. a CD-ROM a magnetic tape. or other
`magnetic or optical data storage medium Data storage
`medium 108 may be a hard disk. a floppy disk. a CD-ROM.
`a magnetic tape. or other magnetic or optical data storage
`medium.
`
`In general. processor 102 retrieves processing instructions
`and data from a data storage medium 108 using mass storage
`device 107 and downloads this information into random
`access memory 103 for execution. Processor 102.
`then
`executes an instruction stream from random access memory
`103 or read-only memory 104. Command selections and
`information input at input device 106 are used to direct the
`flow of instructions executed by processor 102. Equivalent
`input device 106 may also be a pointing device such as a
`conventional mouse or trackball device. The results of this
`processing execution are then displayed on display device
`105.
`
`The preferred embodiment of the present invention is
`implemented as a software module. which may be executed
`on a computer system such as computer system 100 in a
`conventional manner. Using well known techniques.
`the
`application software of the preferred embodiment is stored
`on data storage medium 108 and subsequently loaded into
`and executed within computer system 100. Once initiated.
`the software of the preferred embodiment operates in the
`manner described below.
`
`I0
`
`15
`
`20
`
`25
`
`30
`
`35
`
`-35
`
`50
`
`S5
`
`FIG. 2 illustrates a typical prior an Web server environ-
`ment. Web client 200 can make URL requests to Web server
`201 or Web server 202. Web servers 201 and 202 include
`Web server executables. 20l(E) and 202(8) respectively.
`
`65
`
`4
`that perform the processing of Web client requests. Each
`Web server may have a number of Web pages 20l(1)—(n)
`and 202(1)—(n). Depending on the URL specified by the Web
`client 200. the request may be routed by either Web server
`executable 20l(E) to Web page 201 (1). for example. or from
`Web server executable 202(E) to Web page 202 (1). Web
`client 200 can continue making URL requests to retrieve
`other Web pages. Web client 200 can also use hyperlinks
`within each Web page to “jump” to other Web pages or to
`other locations within the same Web page.
`FIG. 3 illustrates this prior art Web server environment in
`the form of a flow diagram In processing block 300. the
`Web client makes a URL request. This URL request is
`examined by the Web browser to determine the appropriate
`Web server to route the request to in processing block 302.
`In processing block 304 the request is then transmitted from
`the Web browser to the appropriate Web server. and in
`processing block 306 the Web server executable examines
`the URL to determine whether it is a HTML document or a
`CGI application. If the request is for an HTML document
`308. then the Web server executable locates the document in
`processing block 310. The document is then transmitted
`back through the requesting Web browser for formatting and
`display in processing block 312.
`If the URLrequest is for a CGI application 314. however.
`the Web server executable locates the CGI application in
`processing block 316. The CGI application then executes
`and outputs HTML output in processing block 318 and
`finally. the HTML output is transmitted back to requesting
`Web browser for formatting and display in processing block
`320.
`
`This prior art Web server environment does not. however.
`provide any mechanism for managing the Web requests or
`the Web sites. As Web sites grow. and as the number of Web
`clients and requests increase. Web site management
`becomes a crucial need.
`
`For example. a large Web site may receive thousands of
`requests or “hits” in a single day. Current Web servers
`process each of these requests on a single machine. namely
`the Web server machine. Although these machines may be
`running “multi-threaded" operating systems that allow
`transactions to be processed by independent “threads." all
`the threads are nevertheless on a single machine. sharing a
`processor. As such. the Web executable thread may hand off
`a request to a processing thread. but both threads will still
`have to be handled by the processor on the Web server
`machine. When numerous requests are being simultaneously
`processed by multiple threads on a single machine. the Web
`server can slow down significantly and become highly
`inefiicient. The claimed invention addresses this need by
`utilizing a partitioned architecture to facilitate the creation
`and management of custom Web sites and servers.
`FIG. 4 illustrates one embodiment of the presently
`claimed invention. Web client 200 issues a URL request that
`is processed to determined proper routing.
`In this
`embodiment.
`the request
`is routed to Web server 201.
`Instead of Web server executable 20l(E) processing the
`URL request. however. Interceptor 400 intercepts the
`request and routes it to Dispatcher 402. In one embodiment.
`Interceptor 400 resides on the Web server machine as an
`extension to Web server 201. This embodiment is appropri-
`ate for Web servers such as Netsiten‘ from Netscape. that
`support such extensions. A number of public domain Web
`servers. such as NCSAT“ from the National Center for
`Supercomputing Applications at the University of Illinois.
`Urbana-Champaign. however. do not provide support for
`
`Petitioner l\/licrosoft Corporation - Ex. 1001, p. 8
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 8
`
`
`
`5.894.554
`
`5
`this type of extension. Thus. in an alternate embodiment.
`Interceptor 400 is an independent module. connected via an
`“intermediate program” to Web server 201. This intermedi-
`ate program can be a simple CGI application program that
`connects Interceptor 400 to Web server 201. Alternate inter-
`mediate programs the perform the same functionality can
`also be implemented.
`In one embodiment of the invention. Dispatcher 402
`resides on a different machine than Web server 201. This
`embodiment overcomes the limitation described above. in
`prior art Web servers. wherein all processing is performed by
`the processor on a single machine. By routing the request to
`Dispatcher 402 residing on a difi°erent machine than the Web
`server executable 201(E). the request can then be processed
`by a diiferent processor than the Web server executable
`201(E). Web server executable 201(E) is thus free to con-
`tinue servicing client requests on Web server 201 while the
`request is processed “ofi°-line.” at the machine on which
`Dispatcher 402 resides.
`Dispatcher 402 can. however. also reside on the same
`machine as the Web server. The Web site administrator has
`the option of configuring Dispatcher 402 on the same
`machine as Web server 201. taking into account a variety of
`factors pertinent to a particular Web site. such as the size of
`the Web site. the number of Web pages and the number of
`hits at the Web site. Although this embodiment will not
`enjoy the advantage described above. namely oft’-loading the
`processing of Web requests from the Web server machine.
`the embodiment does allow flexibility for a small Web site
`to grow. For example. a small Web site administrator can use
`a single machine for both Dispatcher 402 and Web server
`201 initially. then oif-load Dispatcher 402 onto a separate
`machine as the Web site grows. The Web site can thus take
`advantage of other features of the present invention regard-
`less of whether the site has separate machines configured as
`Web servers and dispatchers.
`Dispatcher 402 receives the intercepted request and then
`dispatches the request to one of a number of Page servers
`404 (1)-(n). For example. if Page server 404 (1) receives the
`dispatched request. it processes the request and retrieves the
`data from an appropriate data source. such as data source
`406. data source 408. or data source 410. Data sources. as
`used in the present application.
`include databases.
`spreadsheets. files and any other type of data repository.
`Page server 404 (1) can retrieve data from more than one
`data source and incorporate the data from these multiple data
`sources in a single Web page.
`In one embodiment. each Page server 404(1)—(n) resides
`on a separate machine on the network to distribute the
`processing of the request. Dispatcher 402 maintains a vari-
`ety of information regarding each Page server on the
`network. and dispatches requests based on this information.
`For example. Dispatcher 402 retains dynamic information
`regarding the data sources that any given Page server can
`access. Dispatcher 402 thus examines a particular request
`and determines which Page servers can service the URL
`request. Dispatcher 402 then hands off the request to the
`appropriate Page server.
`For example. if the URL request requires financial data
`from data source 408. dispatcher 402 will first examine an
`information list. Dispatcher 402 may determine that Page
`server 404(3). for example. has access to the requisite data
`in data source 408. Dispatcher 402 will thus route the URL
`request to Page server 404(3). This “connection caching”
`functionality is described in more detail below. under the
`heading “Performance.”
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`65
`
`6
`Alternately. Dispatcher 402 also has the ability to deter-
`mine whether a particular Page server already has the
`necessary data cached in the Page server‘s page cache
`(described in more detail below. under the heading
`“Performance”). Dispatcher 402 may thus determine that
`Page server 404(1) and 404(2) are both logged into Data
`source 408. but that Page server 404(2) has the financial
`information already cached in Page server 404(2)’s page
`cache. In this case. Dispatcher 402 will route the URL
`request to Page server 404(2) to more efficiently process the
`request.
`Finally. Dispatcher 402 may determine that a number or
`all Page servers 404(1)—(n) are logged into Data source 408.
`In this scenario. Dispatcher 402 can examine the number of
`requests that each Page server is servicing and route the
`request to the least busy page server. This “load balancing"
`capability can significantly increase performance at a busy
`Web site and is discussed in more detail below. under the
`heading “Scalability”.
`If. for example. Page server 404(2). receives the request.
`Page server 404(2) will process the request. While Page
`server 404(2) is processing the request. Web server execut-
`able 201(E) can concurrently process other Web client
`requests. This partitioned architecture thus allows both Page
`server 404(2) and Web server executable 201(E) to simul-
`taneously process different requests.
`thus increasing the
`eficiency of the Web site. Page server 404(2) dynamically
`generates a Web page in response to the Web client request.
`and the dynamic Web page is then either transmitted back to
`requesting Web client 200 or stored on a machine that is
`accessible to Web server 201. for later retrieval.
`
`One embodiment of the claimed invention also provides
`a Web page designer with HTML extensions. or “dyna” tags.
`These dyna tags provide customized HTML functionality to
`a Web page designer. to allow the designer to build custom-
`ized HTML templates that specify the source and placement
`of retrieved data. For example.
`in one embodiment. a
`"dynatext” HTML extension tag specifies a data source and
`a column name to allow the HTML template to identify the
`data source to log into and the column name from which to
`retrieve data. Alternatively. “dyna-anchor" tags allow the
`designer to build hyperlink queries while “dynablock” tags
`provide the designer with the ability to iterate through
`blocks of data. Page servers use these HTML templates to
`create dynamic Web pages. Then. as described above. these
`dynamic Web pages are either transmitted back to requesting
`Web client 200 or stored on a machine that is accessible to
`Web server 201. for later retrieval.
`
`The presently claimed invention provides numerous
`advantages over prior art Web servers. including advantages
`in the areas of performance. security. extensibility and
`scalability.
`
`Performance
`
`One embodiment of the claimed invention utilizes con-
`nection caching and page caching to improve performance.
`Each Page server can be configured to maintain a cache of
`connections to numerous data sources. For example. as
`illustrated in FIG. 4. Page server 404(1) can retrieve data
`from data source 406. data source 408 or data source 410.
`Page server 404(1) can maintain connection cache 412(1).
`containing connections to each of data source 406. data
`source 408 and data source 410. thus eliminating connect
`times from the Page servers to those data sources.
`Additionally. another embodiment of the present inven-
`tion supports the caching of finished Web pages. to optimize
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 9
`
`Petitioner Microsoft Corporation - Ex. 1001, p. 9
`
`
`
`5,894,554
`
`7
`the performance of the data source being utilized. This “page
`caching” feature. illustrated in FIG. 4 as Page cache 414.
`allows the Web site administrator to optimize the perfor-
`mance of data sources by caching Web pages that are
`repeatedly accessed. Once the Web page is cached. subse-
`quent requests or “hits” will utilize the cached Web page
`rather than re-accessing the data source. This can radically
`improve the performance of the data source.
`
`Security
`
`The present invention allows the Web site administrator to
`utilize multiple levels of security to manage the Web site. In
`one embodiment. the Page server can utilize all standard
`encryption and site security features provided by the Web
`server. In another embodiment.
`the Page server can be
`configured to bypass connection caches 412(l)—(n).
`described above. for a particular data source and to require
`entry of a user-supplied identification and password for the
`particular data source the user is trying to access.
`Additionally. another embodiment of the presently
`claimed invention requires no real-time access of data
`sources. The Web page caching ability. described above.
`enables additional security for those sites that want
`to
`publish non-interactive content from internal information
`systems. but do not want real—time Internet accessibility to
`those internal information systems. In this instance. the Page
`server can act as a “replication and staging gent” and create
`Web pages in batches. rather than in real-time. These “rep-
`licated” Web pages are then “staged” for access at a later
`time. and access o the Web pages in this scenario is possible
`even if the Page server and dispatcher are not present later.
`In yet another embodiment. the Page server can make a
`single pass through a Web library. and compile a Web site
`that exists in the traditional form of separately available
`files. A Web library is a collection of related Web books and
`Web pages. More specifically. the Web library is a hierar-
`chical organization of Web document templates. together
`with all the associated data source information. Information
`about an entire Web site is thus contained in a single physical
`file. thus simplifying the problem of deploying Web sites
`across multiple Page servers. The process of deploying the
`Web site in this embodiment is essentially a simple copy of
`a single file.
`
`Extensibility
`
`One embodiment of the present invention provides the
`Web site administrator with Object Linking and Embedding
`(OLE) 2.0 extensions to extend the page creation process.
`These OLE 2.0 extensions also allow information submitted
`over the Web to be processed with user-supplied function-
`ality. Utilizing development tools such as Visual Basic.
`Visual CH or PowerBuilder that support the creation of
`OLE 2.0 automation. the Web site administrator can add
`features and modify the behavior of the Page servers
`described above. This extensibility allows one embodiment
`of the claimed invention to be incorporated with existing
`technology to develop an infinite number of custom web
`servers.
`
`For example. OLE 2.0 extensions allow a Web site
`administrator to encapsulate existing business rules in an
`OLE 2.0 automation interface. to be accessed over the Web.
`One example of a business rule is the steps involved in the
`payolf on an installment or mortgage loan. The payoff may
`involve.
`for example.
`taking into account
`the current
`balance. the date and the interest accrued since the last
`payment. Most organizations already have this type of
`
`8
`business rule implemented using various applications. such
`as Visual Basic for client-server environments. or CICS
`programs on mainframes. If these applications are OLE 2.0
`compliant. the Page server “dynaobject" HTML extension
`tag can be used to encapsulated the application in an OLE
`2.0 automation interface. The Page server is thus extensible.
`and can incorporate the existing application with the new
`Page server functionality.
`Scalability
`One embodiment of the claimed invention allows “plug
`and play” scalability. As described above. referring to FIG.
`4. Dispatcher 402 maintains information about all the Page
`servers configured to be serviced by Dispatcher 402. Any
`number of Page servers can thus be "plugged" into the
`configuration illustrated in FIG. 4. and the Page servers will
`be instantly activated as the information is dynamically
`updated in Dispatcher 402. The Web site administrator can
`thus manage the overhead of each Page server and modify
`each Page server’s load. as necessary. to improve perfor-
`mance. In this manner. each Page server will cooperate with
`other Page servers within a multi-server environment. Dis-
`patcher 402 can examine the load on each Page server and
`route new requests according to each Page server’s available
`resources. This “load-balancing” across multiple Page serv-
`ers can significantly increase a Web site’s performance.
`FIG. 5 illustrates the processing of a Web browser request
`in the form of a flow diagram. according to one embodiment
`of the presently claimed invention. A Web browser sends a
`URL request to a Web server in processing block 500. In
`processing block 502. the Web server receives the URL
`request. and an interceptor then intercepts the handling of
`the request in processing block 504. The interceptor con-
`nects to a dispatcher and sends the URL request to the
`dispatcher in processing block 506. In processing block 508.
`the dispatcher determines which Page servers can handle the
`request. The dispatcher also determines which Page server is
`processing the fewest requests in processing block 510. and
`in processing block 512.
`the dispatcher sends the URL
`request
`to an appropriate Page server. The Page server
`receives the request and produces an HTML document in
`processing block 514. The Page server then responds to the
`dispatc