« PrécédentContinuer »
Browser Client Page Server Brovvser Other I I I I I I Access Original Version Of Web age Q Request Original Receive Version > Request Q Q - - - Return Original 121111111115: . Wei» Page 11521‘
mu. §_.6=__ O_ _@ _ _ _ _ 0
> B _ ___ Q .F@_r__ mw§@@@@
M EEEC M Z 5%;
@I> Bi A £5 SEE 583626232 meB<
> D > g ® >@ @2_.a>£%F ;u.~¢wQ ® @ @ >® > v_8m@
1 PARTIAL RENDERING OF WEB PAGES
BACKGROUND Background and Relevant Art
Computing systems have revolutionized the way we work and play. Computing systems come in a wide variety of forms including laptop computers, desktop computers, personal digital assistants, telephones, and even devices that have not been conventionally associated with computing systems such as, for example, refrigerators and automobiles. A computing system may even be networked together with other computing systems to allow for networked applications.
One type of common network application is Web browsing. In Web browsing, one computing system (often referred to as a “browser client”) includes thereon browser software (often referred to herein as a “browser”) that is capable of rendering Web pages on a display. The user of the browser client directs the browser to go to a particular Web page. In response, the browser issues a network request for the Web page. This is often accomplished through the use of a HyperText Transport Protocol (HTTP) GET request, which includes a Uniform Resource Identifier (URI). Using the URI, the intervening routing computing systems directs the request to the computing system that hosts the Web page (hereinafter also referred to as a “page server”).
The Web page may be represented on the page server using, for example, HyperText Markup Language (HTML) code that defines top-level rendering instructions for the Web page. For instance, the top-level rendering instructions may define components such as labels, text boxes, and control objects such as buttons, drop-down lists, radio buttons, calendar objects, and others.
The Web page may also include associated in-line script or cascading style sheets (CSS). Altematively, script and CSS may only be referenced in the Web page in the HTML, while the script and CSS itself may be extemal to the Web page at a different URI that is referred in the URI. The Web page may also refer to multimedia content (such as sound, images, and video) which are located extemal to the Web page at a different URI.
The page server generates the Web page HTML in response to the request if the Web page was not already prepared. The page server then sends the Web page including the HTML code and any in-line script or CSS to the browser client in the HTTP GET response so that the browser client may render the Web page. In addition to the Web page itself, the browser may also download any content that is referenced in the Web page, such as multimedia content, or script or CSS that is not in-line with the Web page itself.
Some Web pages may be updated. For instance, a user may take some action such as clicking on a control button in the page. Furthennore, the server may determine that the Web page is to be updated. In that case, in order to update the Web page, a full request is again made to the page server often in the fonn of an HTTP POST request that includes any input data that is causing the update to occur such as, for example, content provided within an input box. Even if only part of the Web page is to be updated, the server typically sends the entire Web page back to the browser client in the HTTP POST response.
Since the Web page may potentially be quite large, sending all of the Web page over the network can consume significant network bandwidth. Accordingly, there can be significant latency when requesting a Web page that is to be updated, even if only a small part of the Web page has changed. Fur
thennore, regardless of whether the Web page is small or large, the updated Web page is an entirely separate and discreet Web page from the viewpoint of the browser and the underlying HTTP protocol. Accordingly, the browser re-renders the Web page entirely. This can cause discontinuity on the display as the browser clears the original Web page to render the updated Web page thereby causing flickering of the display. Also, the browser considers the updated Web page to be a separate Web page. Accordingly, when the user navigates backwards from the updated Web page, the user is often presented with the original Web page, when it is often the Web site prior to even the original Web page to which the user might have expected to navigate.
One conventional mechanism for addressing these problems involves moving some of the logic involved with generating the Web page from the page server to the browser client. However, doing so requires changing the server logic, which canbe a complicated process. Furthennore, some logic may not be able to be perfonned by the client in cases in which access to server data would be required to generate the Web page. Also, the programming model on the browser client may be significantly different than the programming model on the page server. Thus, the logic may not be easily transferable from the page server to the browser client.
Embodiments of the present invention may be operated in a network that includes a browser client computing system and at least one page server computing system that offers at least one Web page. The browser client updates the original version of the Web page without having to download the entire Web page. After accessing an original version of a Web page, the browser client detects that the accessed original version of the Web page is to be updated. The browser client then requests an updated version of the Web page from a page server computing system. Thereupon, the page server determines that only a portion of the updated version of the Web page is to be downloaded to the browser client, identifies that portion, and sends a response to the browser client that includes the portions of the Web page that have changed. The browser client then partially renders the updated version of the Web page using the portions of the Web page provided in the response.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subj ect matter.
BRIEF DESCRIPTION OF THE DRAWINGS
In order to describe the manner in which the above-recited and other advantages and features of the invention can be obtained, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
FIG. 1 schematically illustrates a suitable computing enviromnent that may implement features of the present invention;
FIG. 2 schematically illustrates a network enviromnent in which embodiments of the present invention may operate;
FIG. 3 schematically illustrates a Web page and several extemal components referenced by the Web page;
FIG. 4 illustrates a flowchart of a method for partially rendering a Web page in accordance with the principles of the present invention;
FIG. 5 illustrates a flowchart of a method for identifying conditional portions to be downloaded to the browser client as part of the partial update in accordance with embodiments of the present invention; and
FIG. 6 illustrates an example rendering of a basic Web page used to describe features of the present invention.
Embodiments of the present invention extend to the partial updating of a Web page, rather than updating the entire Web page. First, an example computing system in which features of the present invention may operate will be described with respect to FIG. 1. Then, embodiments of the present invention will be described in further detail with respect to FIG. 2 and subsequent drawings.
The embodiments of the present invention may comprise a special purpose or general-purpose computer including various computer hardware, as discussed in greater detail below. FIG. 1 shows a schematic diagram of an example computing system 100 that may be used to implement features of the present invention. The described computing system is only one example of such a suitable computing system and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the invention be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in FIG. 1.
Computing systems are now increasingly taking a wide variety of forms. Computing systems may, for example, be handheld devices, appliances, laptop computers, desktop computers, mainframes, distributed computing systems, or even devices that have not conventionally considered a computing system. In this description and in the claims, the tenn “computing system” is defined broadly as including any device or system (or combination thereof) that includes at least one processor, and a memory capable of having thereon computer-executable instructions that may be executed by the processor. The memory may take any form and may depend on the nature and fonn of the computing system. A computing system may be distributed over a network enviromnent and may include multiple constituent computing systems.
Referring to FIG. 1, in its most basic configuration, a computing system 100 typically includes at least one processing unit 102 and memory 104. The memory 104 may be system memory, which may be volatile, non-volatile, or some combination of the two. An example of volatile memory includes Random Access Memory (RAM). Examples of nonvolatile memory include Read Only Memory (ROM), flash memory, or the like. The term “memory” may also be used herein to refer to non-volatile mass storage such as physical storage media. Such storage may be removable or non-removable, and may include (but is not limited to) PCMCIA cards, magnetic and optical disks, magnetic tape, and the like.
As used herein, the tenn “module” or “component” can refer to software objects or routines that execute on the computing system. The different components, modules, engines, and services described herein may be implemented as objects or processes that execute on the computing system (e.g., as separate threads). While the system and methods described
herein may be implemented in software, implementations in hardware, and in combinations of software and hardware are also possible and contemplated.
In the description that follows, embodiments of the invention are described with reference to acts that are perfonned by one or more computing systems. If such acts are implemented in software, one or more processors of the associated computing system that performs the act direct the operation of the computing system in response to having executed computerexecutable instructions. An example of such an operation involves the manipulation of data. The computer-executable instructions (and the manipulated data) may be stored in the memory 104 of the computing system 100.
Computing system 100 may also contain communication channels 108 that allow the computing system 100 to communicate with other computing systems over, for example, network 110. Communication chamiels 108 are examples of communications media. Communications media typically embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information-delivery media. By way of example, and not limitation, communications media include wired media, such as wired networks and direct-wired connections, and wireless media such as acoustic, radio, infrared, and other wireless media. The tenn computer-readable media as used herein includes both storage media and communications media.
Embodiments within the scope of the present invention also include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can comprise communication media or computer storage media. Computer storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the fonn of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. When infonnation is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the comiection as communication medium. Combinations of the above should also be included within the scope of computer-readable media.
Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
FIG. 2 illustrates a network enviromnent 200 that includes a browser client computing system 210 (hereinafter also referred to as “browser client”) and at least one page server computing system 220 (hereinafter also referred to as “page server”). The page server 220 includes a Web page in the sense that the page server 220 either accesses a pre-generated Web page or may generate the Web page in response to a request for the Web page. The browser client 21 0 and the page