CROSS-REFERENCE TO RELATED APPLICATIONThis patent application claims the benefit of U.S. patent application Ser. No. 13/077,311, (Attorney Docket No. 2525.2980000), filed Mar. 31, 2011, entitled “Methods and Systems For Generating and Displaying a Preview Image of a Content Area” which is incorporated herein by reference in its entirety.
BACKGROUND1. Field
Embodiments generally relate to browsers, and particularly to display of content in browsers.
2. Background Art
Display of a web page by a browser involves several processing steps. These steps generally include parsing the web page, fetching referenced embedded resources, executing scripts, laying out and rendering web page elements and so on, until the web page is fully rendered for display. The process of rendering a page can be slow, requiring several iterative steps by the browser.
To provide increasingly interactive content, web pages incorporate more scripts, widgets, and reference more third-party content (e.g., advertisements). In other words, web pages are becoming more complex. As a result, users often have to wait for a longer time for web pages to render and display in their entirety.
BRIEF SUMMARYEmbodiments for generating and displaying a preview image of a content area are described herein. An embodiment includes rendering an image representing the content area requested by a browser, providing the rendered image to the browser for display, and enabling the browser to display the requested content area in place of the rendered image when the content area is received by the browser. The method further includes updating language defining the requested content area to reference the rendered image and to enable transition from a display of the rendered image to a display of the requested content area, and providing the updated language to the browser to enable the browser to display the rendered image while the requested content area is being provided to the browser.
In this way, embodiments reduce a perceived time-to-display of a requested content area by displaying a preview image of the content area prior to displaying the content area.
Further embodiments, features, and advantages of the embodiments, as well as the structure and operation of the various embodiments are described in detail below with reference to accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGSEmbodiments are described with reference to the accompanying drawings. In the drawings, like reference numbers may indicate identical or functionally similar elements. The drawing in which an element first appears is generally indicated by the left-most digit in the corresponding reference number.
FIG. 1 illustrates a system for generating and displaying a preview image of a content area, according to an embodiment.
FIG. 2 illustrates a browser, according to an embodiment.
FIG. 3A is a flowchart illustrating an operation of a server, according to an embodiment.
FIG. 3B is a flowchart illustrating enablement of a browser to display a preview image, according to an embodiment.
FIG. 4 is a flowchart illustrating an operation of a browser, according to an embodiment.
FIG. 5 illustrates an example computer useful for implementing components of the embodiments.
DETAILED DESCRIPTIONEmbodiments for generating and displaying a preview image of a content area are described herein. Embodiments enable a server to render a preview image of the content area (e.g., web-page) requested by a browser. The preview image can be displayed by the browser prior to receiving the requested content area from the server. An embodiment includes receiving a request for a content area from the browser, rendering an image representing the requested content area, providing the rendered image to the browser for display, and enabling the browser to display the requested content area in place of the rendered image when the content area is received by the browser. In this way, embodiments reduce a perceived time-to-display of a requested content area by displaying a preview image of the content area prior to displaying the content area.
While illustrative embodiments described herein with reference to particular applications, it should be understood that the embodiments are not limited thereto. Those skilled in the art with access to the teachings provided herein will recognize additional modifications and applications within the scope thereof and additional fields in which the embodiments would be of significant utility.
The term “content area” used herein refers to an area of an user interface display that can display content addressed by an address, such as, a uniform resource locator (URL) or a file name. For example, addressed content may include any content stored on local storage media (e.g., hard disk drive(s)) or any networked or web content. As an illustrative example, content displayed in the content area may include, for example, a web page, application, document, video, multimedia content, future utilized content mechanism, or any combination thereof. These examples are illustrative and are not intended to limit the definition.
SystemThis section describes a system for generating and displaying a preview image of a content area, according to an embodiment illustrated inFIG. 1.FIG. 1 is a diagram ofsystem100 for generating and displaying a preview image of a content area, according to an embodiment. While the following is described in terms of Hyper Text Markup Language (HTML), the embodiments are not limited to HTML and can be applied to any other markup, formatting, content defining language. Furthermore, the embodiments are not limited to wet or networked content and can be applied to any type of locally stored content (e.g., content stored on a local storage media). The embodiments are applicable to any system having generally the structure ofFIG. 1, or that would benefit from the operation, methods and functions as described herein.
System100 includesclient110 andserver140 connected overnetwork102. In an embodiment,client110 includesbrowser120. User108 can interact withclient110 to provide data toclient110 and receive (or view) data fromclient110.
In an embodiment,server140 provides content toclient110 in response to requests fromclient110. Such requests may be generated bybrowser120 inclient110. In another non-limiting example,server140 provides (or ‘pushes’) content toclient110 without requests fromclient110. Content provided byserver140 may include, but is not limited to, a web page, application, document, video, multimedia content, future utilized content mechanism, or any combination thereof. These examples are illustrative and are not intended to limit the embodiments.
In an embodiment, content provided byserver140 toclient110 is displayed on a display (not shown) ofclient110. A user may interact with content displayed onclient110 that may causeclient110 to request additional content fromserver140.
Server140 can be any type of processing (or computing) device having one or more processors. For example,server140 can be a workstation, mobile device (such as a mobile phone tablet or laptop), computer, cluster of computers, set-top box, embedded system, console, or other device having at least one processor. Such a processing device may include software, firmware, hardware, or a combination thereof. Software may include one or more applications and an operating system. Hardware can include, but is not limited to, a processor, memory and graphical user interface display. As shown inFIG. 1,server140 includesrendering engine150 andcode re-writer160, the operations of which are discussed further below.
Network102 may include one or more networks, including but not limited to, a local area network, medium-area network, and/or wide-area network, such as the Internet.Network102, for example, may be any form of wired or wireless network that allowsclient110,server140, and any additional clients and servers to communicate with each other.
Client110 can be any type of processing (or computing) device having one or more processors. For example,client110 can be a workstation, mobile device (such as a mobile phone tablet or laptop), computer, cluster of computers, set-top box, embedded system, console, or other device having at least one processor. Such a processing device may include software, firmware, hardware, or a combination thereof. Software may include one or more applications and an operating system. Hardware can include, but is not limited to, a processor, memory and graphical user interface display. As shown inFIG. 1,client110 includesbrowser120.Browser120 can be any type of browser that enables a user to browse locally stored as well as web content.
FIG. 2 illustratesbrowser120 in greater detail, according to an embodiment. As shown inFIG. 2,browser120 includes display engine210. In an embodiment, display engine210 is configured to display a rendered preview image provided byserver140.
Rendering Engine150In an embodiment,rendering engine150 inserver140 is configured to render an image representing a content area requested bybrowser120. As an example,server140 may receive a request for a web page frombrowser120. Also, for example, content in the requested web page may include, but is not limited to, an application, document, video, multimedia content, scripts, widgets, etc.
In an embodiment, when a request for a content area is received frombrowser120,rendering engine150 parses and renders the content area. In an embodiment, to render an image representing the requested content area,rendering engine150 performs rendering actions that are conventionally performed by a browser including, but not limited to, storing and sending cookies, executing scripts, fetching referenced resources, applying fonts, colors, backgrounds and other styles, etc. In this way,rendering engine150 generates a preview image of a content area requested bybrowser120.
Rendering engine150 may store the rendered preview image on storage inserver140 or can even store the rendered preview image on a storage that is separate fromserver140. In an embodiment,server140 is further configured to dynamically select a rendering engine or a cached preview image based on a header (e.g., user agent header) sent bybrowser120.
In an embodiment,rendering engine150 can pre-render preview images representing one or more content areas and cache the rendered preview images prior to receiving a request for the content areas frombrowser120. In an embodiment,browser120 or evenserver140 may select content (e.g., web pages) to be pre-rendered based on their popularity, personalization or value to a user, etc. In an embodiment, such a cache or repository storing the pre-rendered images may be refreshed periodically byserver140.
In another embodiment, a proxy (not shown) connected tobrowser120 andserver140 vianetwork102, may render and/or provide rendered preview images tobrowser120 for display. The proxy may take into account factors such as origin of the embedded resources, and whether those resources are already present in the proxy's cache, etc., before deciding to use a cached preview image.
Code Re-Writer160In an embodiment, whenserver140 receives a request for a content area frombrowser120,server140 generates mark-up language representing the requested content area. As an example,server140 constructs HTML for the requested content area, but instead of serving the constructed HTML directly tobrowser120,server140 parses and renders a preview image of the content area for display bybrowser120. In an embodiment, when a rendered preview image is generated byrendering engine150,code re-writer160 rewrites the constructed HTML so that the re-written HTML includes a reference to the rendered preview image. As an example, such a reference may be a file path or uniform resource locator (URL) to a storage location that stores the rendered preview image. In addition, the re-written HTML includes code that enablesbrowser120 to download the requested content area in the background, while.browser120 is displaying a rendered preview image, and to switch (or transition) from the displayed preview image to the requested content area, seamlessly, when the requested content area has been fully retrieved bybrowser120.
In an embodiment,browser120 can be instructed to byserver140 to switch from a display of a preview image to the requested content area (e.g., web page) upon a user-action, such as mouse or touch interaction. Such interaction with a preview image can indicate a desire on part of the user to interact with the requested content area, at which point, switching from display of the preview image to the requested content area is helpful.
In another non-limiting embodiment,browser120 provides an explicit request for a rendered preview image of a requested content area.Browser120 displays the rendered preview image to a user while the requested content area is being fully retrieved bybrowser120. When the requested content area is received bybrowser120,browser120 transitions display from the rendered preview image to the received content area. In this way, becausebrowser120 is pre-configured to perform the transition, HTML code that enables browser to perform the transition (using JavaScript or other Document Object Model (DOM) manipulation) need not be provided byserver140 tobrowser120. This could also allowbrowser120 to request a preview image from a different source (e.g., trusted cache, proxy or referrer) other thanserver140. In an embodiment, such operation ofbrowser120 can be supported by extending current HTML standards.
In an embodiment, instead of rendering a preview image and then re-writing the HTML of the content area,code re-writer160 can rewrite the HTML to reference the preview image and serve the updated HTML to the browser.Rendering engine150 can render the preview image in parallel. Such operation can give more time torendering engine150 to render the preview image, while waiting forbrowser120 to make a separate request for the preview image. In another embodiment,code re-writer160 can embed the preview image directly in the rewritten HTML page. As an example,code re-writer160 can embed the preview image directly in the rewritten HTML page using the “data:” uniform resource identifier (URI) scheme.
MethodsAn exemplary overall operation ofserver140 will now be described with reference toFIG. 3A.FIG. 3A is a flowchart ofmethod300.
Method300 begins withserver140 receiving a request for a content area from browser120 (step302). As an example,server140 may receive a request for a web page frombrowser120. Such a web page can be, for example, initially requested by a user interacting withbrowser120. Also, for example, content in the requested web page can include, but is not limited to, an application, document, video, multimedia content, scripts, widgets, etc.
Server140 renders a preview image representing the content area requested in step302 (step304). As an example,server140 constructs HTML for the requested web page, but instead of serving the HTML directly tobrowser120,server140 parses and renders the web page itself. In an embodiment, to render a preview image representing the requested content,rendering engine150 performs actions that are generally performed by a browser including, but not limited to, storing and sending cookies, executing scripts, fetching referenced resources, applying fonts, colors, backgrounds and other styles, etc.
Server140 then provides the rendered preview image (or a reference to the rendered image) to browser120 (step306) and also enablesbrowser120 to display the requested content area in place of the rendered preview image when the requested content area is received by browser120 (step308). As an example,code re-writer160 rewrites the HTML of the web page so that the HTML includes a reference to the rendered preview image. In another example,code re-writer160 can embed the preview image directly in the re-written HTML page using the “data:” uniform resource identifier (URI) scheme.
FIG. 3B is aflowchart illustrating step308 ofmethod300 in greater detail, according to an embodiment.
Code re-writer160 updates language defining the requested content area to reference the rendered image and to transition from a display of the rendered image to a display of the requested content area (step310). As an example, and as discussed abovecode re-writer160 rewrites the HTML of the requested web page so that the HTML includes a reference to a rendered preview image. As an example, such a reference may be a file path or a URL to a storage location that stores the rendered preview image.
Server140 provides the updated language to browser120 (step312). As an example, HTML re-written bycode re-writer160 includes code that enablesbrowser120 to retrieve the requested content area in the background, whilebrowser120 is displaying a rendered preview image, and to switch (or transition) from the displayed preview image to the requested content area, seamlessly, when the requested content area has been fully retrieved bybrowser120 fromserver140.
FIG. 4 is a is a flowchart ofmethod400, which is an overall operation ofbrowser120, according to an embodiment.
Browser120 provides a request for a content area to server140 (step402). As an example,browser120 may provide a request for a web page toserver140. Also, for example, content in the requested web page may include, but is not limited to, an application, document, video, multimedia content, scripts, widgets, etc.
In response to the request ofstep402,browser120 receives a rendered preview image (or a reference to a rendered preview image) from server140 (step404). Furthermore, for example,browser120 also receives re-written HTML that enablesbrowser120 to transition from a display of the rendered image to a display of the requested content area.
Browser120 displays the rendered preview image while the requested content area is being retrieved bybrowser120 from server140 (step406) andbrowser120 displays the requested content area in place of the rendered image, when the requested content area is retrieved by browser120 (step408). As an example, display engine210 inbrowser120 is configured to display the rendered preview image while the requested content area is being received bybrowser120, and display the content area in place of the rendered preview image when the requested content area is received by thebrowser120.
In this way, embodiments reduce a perceived load time of a requested content area by displaying a preview image of the content area prior to displaying the content area.
Example Computer EmbodimentIn an embodiment, the system and components of embodiments described herein are implemented using one or more computers, such asexample computer502 shown inFIG. 5. For example,client110 andserver140 can be implemented using computer(s)502.
Computer502 can be any commercially available and well known computer capable of performing the functions described herein, such as computers available from International Business Machines, Apple, Oracle, HP, Dell, Cray, etc.
Computer502 includes one or more processors (also called central processing units, or CPUs), such as aprocessor506.Processor506 is connected to acommunication infrastructure504.
Computer502 also includes a main orprimary memory508, such as random access memory (RAM).Primary memory508 has stored therein controllogic568A (computer software), and data.
Computer502 also includes one or moresecondary storage devices510.Secondary storage devices510 include, for example, ahard disk drive512 and/or a removable storage device or drive514, as well as other types of storage devices, such as memory cards and memory sticks.Removable storage drive514 represents a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup, etc.
Removable storage drive514 interacts with aremovable storage unit516.Removable storage unit516 includes a computer useable orreadable storage medium564A having stored thereincomputer software568B (control logic) and/or data.Removable storage unit516 represents a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, or any other computer data storage device.Removable storage drive514 reads from and/or writes toremovable storage unit516 in a well known manner.
Computer502 also includes input/output/display devices566, such as monitors, keyboards, pointing devices, Bluetooth devices, etc.
Computer502 further includes a communication ornetwork interface518.Network interface518 enablescomputer502 to communicate with remote devices. For example,network interface518 allowscomputer502 to communicate over communication networks or mediums564B (representing a form of a computer useable or readable medium), such as LANs, WANs, the Internet, etc.Network interface518 may interface with remote sites or networks via wired or wireless connections.
Control logic568C may be transmitted to and fromcomputer502 via communication medium564B.
Any tangible apparatus or article of manufacture comprising a computer useable or readable medium having control logic (software) stored therein is referred to herein as a computer program product or program storage device. This includes, but is not limited to,computer502,main memory508,secondary storage devices510 andremovable storage unit516. Such computer program products, having control logic stored therein that, when executed by one or more data processing devices, cause such data processing devices to operate as described herein, represent the embodiments.
Embodiments can work with software, hardware, and/or operating system implementations other than those described herein. Any software, hardware, and operating system implementations suitable for performing the functions described herein can be used. Embodiments are applicable to both a client and to a server or a combination of both.
The Summary and Abstract sections may set forth one or more but not all exemplary embodiments as contemplated by the inventor(s), and thus, are not intended to limit the present description and the appended claims in any way.
Embodiments have been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed.
The foregoing description of the specific embodiments will so fully reveal their general nature that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such specific embodiments, without undue experimentation, without departing from the general concept of the embodiments. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance.
The breadth and scope of the embodiments should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.