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 facsimile reproduction of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
Until recently, the vast majority of internet users accessed the World Wide Web via personal computers and workstations. Web designers could safely assume that the devices accessing their sites would have similar display capabilities, processor speed, and connection bandwidth. With careful design, it was possible to produce a single version of a web site that displayed satisfactorily in nearly all browsers. Unfortunately, this is no longer possible. The number and variety of so-called “network appliances” has exploded. Millions of internet users now log on via set top boxes, personal digital assistants (PDAs), and cellular telephones. Analysts have predicted that more people will soon access the web via network appliances than via personal computers. Now, web designers must take into account that browsers accessing their sites may display just a few words of text at a time, or they may display hundreds. Other browsers have no display at all and instead read the content to the user through a telephone. Processor speeds and bandwidth may vary by an order of magnitude. To make matters worse, different devices support different sets of file formats, often with no intersection at all.
Web content providers that need to support users on all these devices typically have to provide multiple versions of their sites. Amazon.com currently has three versions of its site: the conventional HTML version; an HDML version for display on first generation cell phone browsers; and a “web clipping” version for certain handheld computing devices. A fourth version will be for WML capable cell phones. Only content providers with the deepest pockets can afford to author so many different versions of their sites. Even for giants like Amazon.com, this approach is clearly not scalable as the variety of network appliances continues to increase.
As with many problems in computer science, this dilemma can be at least partially solved by adding a level of indirection. In internet terms, the level of indirection between a browser and a web server is called a proxy server. The model is simple. When a browser needs to retrieve a document from the web, it sends a request to the proxy server using the browser's native protocol. The proxy then retrieves the document from the server. If the document happens to be in a format that the browser is capable of displaying, the proxy will simply forward it along. This is where the process ends for most, if not all, traditional proxy servers.
Embodiments of the present invention relate to a system and method for communicating data from a web content provider to a wireless computing device (e.g., a PDA, a cellular phone) via a proxy server. The proxy server transforms web content “on-the-fly” into a streamlined format, optimizes it for display, and delivers it to the device, where it is progressively rendered by a browser installed on the device.
The features and advantages described herein are not all inclusive, and, in particular, many additional features and advantages will be apparent to those skilled in the art in view of the following description. Moreover, it should be noted that the language used herein has been principally selected for readability and instructional purposes and may not have been selected to circumscribe the present invention.
Each of the figures referenced above depict an embodiment of the present invention for purposes of illustration only. Those skilled in the art will readily recognize from the following description that one or more other embodiments of the structures, methods, and systems illustrated herein may be used without departing from the principles of the present invention.
In the following description of embodiments of the present invention, numerous specific details are set forth in order to provide a more thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without one or more of these specific details. In other instances, well-known features have not been described in detail to avoid unnecessarily complicating the description.
In general, embodiments of the present invention relate to a system and method for communicating data from a web content provider to a wireless computing device (e.g., a PDA, a cellular phone) via a proxy server. The proxy server transforms web content “on-the-fly” into a streamlined format, optimizes it for display, and delivers it to the device, where it is progressively rendered by a browser installed on the device.
When a document (e.g., a web page) received by the proxy server is not in a format capable of being displayed by a requesting wireless device, the proxy server will attempt to transform the document into an acceptable format. For example, if the web content provider sends a document marked up in HTML, and the browser of the requesting wireless device only supports WML, the proxy server can run the document through an HTML-to-WML translation module. Other formats possibly supported by wireless devices to which the proxy server may transform format include, for example, HDML, PQA (also known as the “web clipping” format), XHTML, Basic, and AvantGo's non-standard HTML subset.
Further, in one or more embodiments, this model can be extended beyond simply file format translations to encompass display optimizations as well. For example, if the web content provider sends a 256-color GIF image, and the requesting wireless device supports only 4 shades of gray, the proxy server may then reduce the bit depth of the image, thereby (i) saving the wireless device the processing overhead of doing the conversion itself and (ii) reducing the file size to optimize transmission speed over a low bandwidth connection.
Moreover, those skilled in the art will appreciate that the conversion process is transparent to both the web content developer and the user of browser of the requesting wireless device. In other words, a proxy server in accordance with one or more embodiments frees end users (both content producers and content consumers) from concerning themselves with the proxy server. Typical prior art proxy servers require either the content provider or browser developer to maintain the proxy server. This included not only maintaining a server farm, but also keeping the transformation software up-to-date on all of the latest file formats and device capabilities. In one or more embodiments, by disassociating the transformation engine from both the server and the client, a third party application service provider may maintain the proxy. Further, the transformation software may be upgraded to support new devices and formats in a manner that is transparent to both the content provider and the end user. This degree of transparency is believed to be important to the widespread adoption of proxy-based transformation technology. Moreover, in one or more embodiments, the transformation software may be updated automatically via, for example, the Internet.
The transformation of content by a proxy server in accordance with one or more embodiments may be dynamic and/or based on user-agent profiles stored locally on the proxy server, provided by the user-agent, and/or retrieved from another server based in information provided by the user-agent. The profiles may specify supported content types, display characteristics of the device, and/or transformation preferences, and allow the proxy server to optimize a display for user-agents whose capabilities are not known at the time the proxy server is deployed.
Now referring to
Still referring to
Thus, the proxy server 16 transforms web content into a streamlined format and optimizes it for display on a screen of a requesting wireless device 20. The requesting wireless device 20 may have a web browser 18 that is arranged to progressively render received web page data. In such a manner, users may view content created in any format through a single web browser (instead of having to use separate applications) (see
Accordingly, a system in accordance with one or more embodiments involves at least one of on-the-fly transformation, on-the-fly content transformation for optimal display on a device screen, “rapid streaming” technology, and a web browser that progressively renders received web page data.
A web browser in accordance with one or more embodiments will now be described. The web browser application may be structured as an object-oriented program. One set of classes may be primarily focused on aspects of a particular computing environment, such as responding to launch codes and user events. A second set of classes may be responsible for browser specific tasks, such as creating a parse tree from a WML document and displaying the data. A third set may be responsible for interfacing between OS independent browsing code and operating system code. A fourth set may include generic, reusable components such as vectors and iterators. Sub-goals may be to create a reusable framework for application development, as well as a platform independent browser kernel. Those skilled in the art will note that these sub-goals, among others, may naturally leas to clean abstractions.
Application
Important data structures are the representations of the WML document. After parsing, a simple parse tree is created. The parse tree's structure may be based on the notion that a child node is nested within their parent in the corresponding XML. For example, if a run of text looks like:
<p> <i> text </i> </p>
then the element representing ‘i’ will be a child of the element representing ‘p’. Further, the text element will be a child of i. XML attributes are represented as a vector of string pairs, where each pair corresponds to a name and value.
This parse tree is independent from the glyph tree, although the two trees are similar in structure. The glyph tree has at least one glyph per parse tree element, and possibly more. For example, a block of text that spans multiple lines is represented as a single element in the parse tree. In the glyph tree, however, it will become multiple glyphs—one for each line, and one for the text block itself. This is based on the Composite pattern, described in Design Patterns.
Vectors are used extensively as a convenient abstraction on top of arrays. STL may be used for data structures such as this. Data structures may be optimized in view of specific constraints faced.
Algorithm Design
The crux of the browser is the layout algorithm. It should be able to flow a wide variety of objects, and store their position in order to respond to user input (i.e. clicking on a link). It should be flexible enough to work concurrently with data download, so it must operate incrementally. It should be efficient, as computing resources may be limited. To facilitate these needs, the glyph tree to represent on screen information may be used, as described in the previous section. The glyph tree is flexible, in that a block of text can be reformatted into its constituent lines at any point and redrawn, if for example an image is newly downloaded and changes the flow of the document.
The glyph draw function may be implemented in a relatively coordinate independent way. This means that a glyph may be passed a display area in which to draw, which it can treat as its own canvas. Each glyph may also calculate the sub-areas available to its sub-glyphs. The rendering algorithm is then composed of all glyph types following this general contract. As long as glyphs draw only in the space allotted, and gives their sub-glyphs adequate screen real estate, then the contract is fulfilled. Because of the recursive nature of the algorithm, considerable information can be cached. For example, the extent of a glyph can be stored, so the getExtent function will not need to examine all sub-glyphs to recompute the extent.
While the invention has been described with respect to a limited number of embodiments, those skilled in the art, having benefit of the above description, will appreciate that other embodiments may be devised which do not depart from the scope of the present invention as described herein. Accordingly, the scope of the present invention should be limited only by the appended claims.
This application is based on and claims priority under 35 USC § 119(e) of U.S. Provisional Patent Application No. 60/212,147, filed on Jun. 16, 2000 and entitled “Apparatus and Method for Supplying Electronic Content to Network Appliances”, which is incorporated by reference herein.
Number | Name | Date | Kind |
---|---|---|---|
4279021 | See et al. | Jul 1981 | A |
4415065 | Sandstedt | Nov 1983 | A |
4587630 | Straton et al. | May 1986 | A |
4725694 | Auer et al. | Feb 1988 | A |
4916441 | Gombrich | Apr 1990 | A |
4972457 | O'Sullivan | Nov 1990 | A |
5067164 | Denker et al. | Nov 1991 | A |
5101439 | Kiang | Mar 1992 | A |
RE34034 | O'Sullivan | Aug 1992 | E |
5189632 | Paajanen | Feb 1993 | A |
5227614 | Danielson et al. | Jul 1993 | A |
5305195 | Murphy | Apr 1994 | A |
5334824 | Martinez | Aug 1994 | A |
5335276 | Thompson et al. | Aug 1994 | A |
5379057 | Clough et al. | Jan 1995 | A |
5392447 | Schlack et al. | Feb 1995 | A |
5398021 | Moore | Mar 1995 | A |
5436960 | Campana | Jul 1995 | A |
5465401 | Thompson | Nov 1995 | A |
5513254 | Markowitz | Apr 1996 | A |
5572643 | Judson | Nov 1996 | A |
5673322 | Pepe et al. | Sep 1997 | A |
5704029 | Wright, Jr. | Dec 1997 | A |
5708478 | Tognazzini | Jan 1998 | A |
5732074 | Spaur et al. | Mar 1998 | A |
5781894 | Petrecca et al. | Jul 1998 | A |
5809317 | Kogan et al. | Sep 1998 | A |
5812131 | Bertram | Sep 1998 | A |
5818446 | Bertram et al. | Oct 1998 | A |
5835861 | Whiteside | Nov 1998 | A |
5838314 | Neel et al. | Nov 1998 | A |
5848397 | Marsh et al. | Dec 1998 | A |
5850433 | Rondeau | Dec 1998 | A |
5852775 | Hidary | Dec 1998 | A |
5854624 | Grant | Dec 1998 | A |
5854897 | Radziewicz et al. | Dec 1998 | A |
5870683 | Wells et al. | Feb 1999 | A |
5877757 | Baldwin et al. | Mar 1999 | A |
5889852 | Rosecrans et al. | Mar 1999 | A |
5913040 | Rakavy et al. | Jun 1999 | A |
5918236 | Wical | Jun 1999 | A |
5923736 | Shachar | Jul 1999 | A |
5948061 | Merriman et al. | Sep 1999 | A |
5960074 | Clark | Sep 1999 | A |
5977972 | Bates et al. | Nov 1999 | A |
6058304 | Callaghan et al. | May 2000 | A |
6067451 | Campana | May 2000 | A |
6119167 | Boyle et al. | Sep 2000 | A |
6188789 | Marianetti | Feb 2001 | B1 |
RE37141 | O'Sullivan | Apr 2001 | E |
6219694 | Lazaridis | Apr 2001 | B1 |
6247048 | Greer et al. | Jun 2001 | B1 |
6272190 | Campana | Aug 2001 | B1 |
6292833 | Liao et al. | Sep 2001 | B1 |
6295372 | Hawkins et al. | Sep 2001 | B1 |
6334056 | Holmes et al. | Dec 2001 | B1 |
6336137 | Lee et al. | Jan 2002 | B1 |
6356529 | Zarom | Mar 2002 | B1 |
6397259 | Lincke et al. | May 2002 | B1 |
6414962 | Hall et al. | Jul 2002 | B1 |
6430624 | Jamtgaard et al. | Aug 2002 | B1 |
6473609 | Schwartz et al. | Oct 2002 | B1 |
6593944 | Nicolas et al. | Jul 2003 | B1 |
6611358 | Narayanaswamy | Aug 2003 | B1 |
6636873 | Carini et al. | Oct 2003 | B1 |
Number | Date | Country |
---|---|---|
0149762 | Jul 1986 | EP |
0797368 | Mar 1997 | EP |
03204259 | May 1991 | JP |
WO 9726729 | Jul 1997 | WO |
WO 9847090 | Oct 1998 | WO |
Number | Date | Country | |
---|---|---|---|
60212147 | Jun 2000 | US |