Not Applicable
Not Applicable
Not Applicable
Not Applicable
Not applicable
This invention relates to a host computer system. After receiving web content from a web page server, the browser of a host computer renders the web page on a virtual display of the host computer, a frozen or snapshot image of which is transmitted in parts and received through a network by a Portable Device. The Portable Device displays the web page image to the user, allows the user to navigate the web page and relays user input back to the Proxy server through a network. The invention relates to methods of remote data accessing, data processing, storage, display and interface display management that reduce the amount of data transferred from a host computer to a Portable Device in a network and improve the performance of the Portable Device.
Description of the Related Art
Aspects of the prior art that are necessary for explaining the present invention include U.S. Pat. Nos. 8,201,093, 8,176,428, 7,356,570 and 7,289,244 by the same Inventor.
As used in this specification and in the prior art, the term “web page server” designates a computer system that is separated from both the Portable Device and the Proxy server by a certain distance, and which communicates with both by means of a network. Communications between the web page server and the Portable Device are performed through the Proxy server. In most situations, the web page server provides access to the content of a web page in a website for instance, Yahoo, Google, CNN or similar ones.
As used in this specification and in the prior art, the term “Proxy server” designates a computer system that is separated from both the Portable Device and the web page server by a certain distance, and which establishes the communication link between both by means of a network. Through this network, content is received from the web page server by a Proxy server, where it is rendered before being transmitted in a compressed format to the Portable Device. The Proxy server can also communicate with the Portable Device and send to it, as well as receive from it, vector or ASCII content. The Proxy server typically runs applications, such as a web browsing application, according to default or user instructions.
As used in this specification and in the prior art, the term “Portable Device” designates an electronic device that is of reasonably small dimensions and whose functions include relaying user input to other computers and displaying information received from other computers, typically a Proxy server. The Portable Device is capable of receiving vector, ASCII and raster data and is capable of transmitting vector and ASCII data. The Portable Device communicates with other computers by means of a network, usually through a Proxy server. The Portable Device is capable of decompressing compressed image data received from the Proxy server, displaying it and scrolling through the image.
In the preferred embodiment of the prior art, when a user requests a web page, content for that web page is transmitted from the web page server to the Proxy server in the form of HTML, JAVA, JPEG, and other types of information. An image of this content for the web page is rendered as a virtual image on the Proxy server, which then takes a single frozen image frame or snapshot of the virtual image whereby no pixels change in this frame. The Proxy server thereafter divides this snapshot image into blocks of data, compresses these blocks and sends them along with instructions to the Portable Device, which, upon reception, decompresses these blocks and processes the instructions so that an image of the web page can be stored into a cache memory of the Portable Device and displayed on the Portable Device's screen.
The dimensions of the Portable Device's display screen determine to a certain extent the standard dimensions of the virtual display on which content received from the web page server would normally be rendered by the Proxy server's browser. If the dimensions of the Portable Device's screen are communicated to web page servers, the amount of content sent by the web page server to the Proxy server takes these dimensions into account. Any size limitation of the Portable Device's screen is thus indirectly passed on to the browser's standard virtual display. As a result, it happens frequently that a requested web page hosted by the web page server contains too much information for it to be entirely transmitted to the Proxy server, and thus to be entirely displayed on this standard virtual image upon the initial transmission of data. In these cases, the web page server only transmits partial content for the requested web page to the Proxy server's browser, by taking into consideration the declared size limitations of the Portable Device's screen.
In the preferred embodiment of prior art disclosed herein, after taking a snapshot image of its virtual display, the Proxy server sends instructions and blocks of data to the Portable Device in a specific order of priority. In this standard order, the Proxy server sends as a first priority data and display instructions for the display area of the Portable Device followed, as a second priority, with data and instructions for a small field around the displayable area of the Portable Device. If the user eventually shows intent to view another area of the web page, for instance by scrolling down to the break limit of content previously sent to the Portable Device, the Proxy server sends content for this additional portion to the Portable Device. In some cases, this transmission requires that the Proxy server requests additional content for the web page from the web page server because the area scrolled over by the user exceeds the initial transfer of data from the web page server to the Proxy server. For each of these sequences of data transmission from the Proxy server to the Portable Device, the Proxy server first sends graphic elements such as pictures, which are followed by blocks of data constituting non-graphic elements, like text. In the preferred embodiment of prior art disclosed herein, blocks of data received from the Proxy server are stored in a display memory of the Portable Device, ready to be instantly displayed should the user scroll over them. The user can then navigate the web page from the display memory of the Portable Device. This routine is performed again every time the user's navigation causes a new web page or a new portion of a web page to be loaded on the Proxy server's virtual display. This way, if the transmission is a newly-accessed web page, its image eventually replaces the previous one at the screen of the Portable Device. In the case of an additional web page portion for a web page, this portion attaches itself to the other portion(s) previously loaded for the web page.
In the preferred embodiment of prior art disclosed herein, a method is implemented in order to reduce the amount of data that is sent from the Proxy server to the Portable Device. In this prior art method, when the Proxy server loads a web page that has been previously viewed or when it refreshes the web page currently viewed, it executes a correlation analysis to determine what data needs to be sent to the Portable Device. The correlation analysis consists of comparing blocks of data or parts of a web page image that are positioned at the same positions between a snapshot image of a web page just loaded or refreshed and an image of that same web page stored into the Portable Device's and the Proxy server's cache memories. The Proxy server sends data for the web page just loaded or refreshed only if their corresponding blocks stored into cache memories of the Proxy server and the Portable Device—at the same graphic locations—are not the same. If they are the same, the Proxy server simply instructs the Portable Device to copy those blocks from the web page image stored into its cache memory.
Throughout the user's navigation, the Proxy server's browser can communicate information to web page servers. Among the various ways it communicates with web page servers, the Proxy server's browser can send to them, along with the requests for accessing web content or shortly thereafter, a User-Agent string—a set of self-identifying components such as the type of browser (among others, Chrome, Opera, Opera Mini, UC Browser and Safari); technical details about that browser, including its rendering engine; the type of device or desktop computer on which the browser runs or, in the case where the browser runs on a Proxy server in a network with a user, the user's device or desktop computer; the specifications of that device or desktop computer; the operating system of that device or desktop computer, and so forth. In the course of the User-Agent string, the information provided by the Proxy server's browser to a web page server enables the web page server, if it offers different versions for a given web page, to customize its content and adjust various features that make the navigation experience more suitable to the particular characteristics of the Proxy server's browser and the user's device.
Information sent to web page servers by the Proxy server's browser, most notably the components of User-Agent strings, can be altered. According to the prior art, the User-Agent strings that are communicated to web page servers during the user's navigation contain browser-identification components that typically either disclose true information about the browser or cloak and alter its actual identity for a single other browsing application. The browser-identification components affect the web navigation when the web page server offers different versions for a web page in accordance with different browsing applications.
However, many web page servers only offer adapted versions of their content to specific browsing applications, and it is possible that the Proxy server's browser does not identify itself as one of them. In addition, the browser identity that minimizes the amount of data transferred to the Portable Device may not be the same for different web pages. Yet, in some cases, the browser identity that leads to the least amount of data being sent from the Proxy server to the Portable Device has the disadvantage of not offering a satisfying navigation experience to the user, taking into consideration the Portable Device's characteristics. There is a need for a method that exploits more efficiently the potential of User-Agent strings in order to provide a better navigation experience to the user and to reduce bandwidth consumption with respect to data transferred from the Proxy server to the Portable Device.
Moreover, when executing a correlation analysis as described above, if blocks of data or parts of the snapshot image of the new or refreshed web page are the same as blocks of data or parts of the image stored into the Portable Device's and the Proxy server's cache memories, but located at different positions, the Proxy server's correlation analysis does not recognize that they are the same. In those instances, the Proxy server inefficiently, in both speed and bandwidth consumption, sends again these refreshed blocks of data to the Portable Device.
Furthermore, when additional content is requested for a web page, the web page server takes into account any modification or update that took place in higher portions of the refreshed web page to determine the content of the currently-requested portion of the web page. These changes include advertisement banners or other text or graphic elements that have been added, inserted as a response to user scrolling, deleted, modified (e.g., changed in size) or moved at another position in the web page hosted on the web page server between the moment a previous portion of the web page's content was transmitted to the Proxy server and the Portable Device, and stored in their cache memories, and the later instance an additional portion is called up. As a consequence of this refreshment, some blocks of data that were originally sent in a previous portion of the web page transmission may be sent anew in a subsequent one. Likewise, if the user scrolls back up to a portion of the web page that was previously viewed, the Proxy server's browser sends a request to the web page server for refreshed content to be sent for that portion of the web page. Therefore, every time a new portion of a web page is requested or a previously-viewed portion of a web page is refreshed, redundant or unneeded transfers of data between the Proxy server and the Portable Device are likely to happen, which in turn affect negatively the Portable Device's bandwidth consumption and speed performance.
This invention reduces the amount of data sent from a Proxy server to a Portable Device, thus conserving on bandwidth consumption, providing a faster display of web page images on the Portable Device's screen and allowing the commercial offer of more cost-competitive devices.
In accordance with the invention's principal embodiment, when a snapshot image is taken of a web page rendered onto a Proxy server's virtual display, and this snapshot image is divided into blocks or parts, the Proxy server calculates and ascribes for each block a specific identifier, such as, for reference purposes, a checksum. If and when blocks are sent to the Portable Device, their checksums are saved in a cache memory of the Portable Device, alongside data for blocks cached therein. Each block and their ascribed checksums are also stored into a location of the Proxy server's cache memory, where they are associated to their respective websites.
In this invention, the Proxy server uses blocks' computed checksums to determine its instructions to the Portable Device and the data that needs to be sent. After computing checksums for blocks of a web page image, the Proxy server compares these checksums with those stored in its cache memory for the website to which that web page belongs. If the just-computed checksum of a block is the same as a checksum stored into the Proxy server's cache memory for that web site, the Proxy Server does not send to the Portable Device the block that corresponds to the just-computed checksum. Instead, it instructs the Portable Device to copy the block with the same checksum from the corresponding web page image stored into the Portable Device's cache memory, and to display this block on the Portable Device's screen at the position it occupies in the web page image just loaded. For blocks of data whose checksums do not match the checksum of any block in the Proxy server's cached web page image, the Proxy server sends these new blocks and their checksums to the Portable Device.
The principal embodiment of this invention can also be executed when advertisement banners or other elements are inserted in the web page from the web page server as the user scrolls up, down or sideways. Should the virtual display of the Proxy server be thereafter refreshed while the user is still navigating on this web page, this insertion shifts the positions of all subsequent blocks of data in the refreshed web page. With this invention, blocks that have been previously sent and whose positions have only shifted would not be sent again from the Proxy server to the Portable Device since they would be ascribed the same checksum.
In alternate embodiments of the invention, the Proxy server does not store into its cache memory a mirror copy of web page images stored into the Portable Device's cache memory. Instead, it either only saves the checksums ascribed to blocks of data stored into the Portable Device's cache memory, or no information at all. When a new web page is loaded, or when the content of the currently-viewed web page is refreshed, the Proxy server compares checksums between, on the one hand, blocks of data associated to the web page image just loaded and, on the other hand, either checksums previously saved in the Proxy server's cache memory or checksums received from the Portable Device, depending on whether or not the Proxy server saves previously-computed checksums into a cache memory.
Further embodiments of the invention decrease the likelihood of cases in which new or refreshed portions of web pages are requested to a web page server, thereby reducing the amount of data transferred from the Proxy server to the Portable Device, conserving on bandwidth consumption and improving the Portable Device's performance.
The first of these embodiments is two-part. In its first half, the Proxy server simulates, for web page servers, a virtually-fabricated display screen whose dimensions are greater than those of the actual screen of the Portable Device. From there, every time a web page server transmits content information for a web page or for a portion of a web page to the Proxy server, more content is sent by the web page server and received by the Proxy server. This outcome reduces the likelihood that refreshed content is requested to a web page server by the Proxy server. The second half of this embodiment incorporates a particular prior art process of server operations, by which the Proxy server divides the virtual image of every web page portion received from a web page server into two or more sections. Next, the Proxy server takes a snapshot of each section of the web page image. Initially, the Proxy server only sends data or display instructions, or both, to the Portable Device regarding the first of these sections. For the other section(s), the Proxy server would send data or display instructions, or both, to the Portable Device only if the user shows intent of viewing one of those sections. With this process, only data for the first section is received by default by the Portable Device.
In a further embodiment of the invention, scrolling down or clicking somewhere that shifts the image display down to the images' limits no longer sends a signal from the Portable Device to the Proxy server to request for additional content for the web page from the web page server. Instead, when the Proxy server divides into sections the web page portions received from a web page server, it inserts a button at or near the bottom limit of every last section of a portion. This button indicates to the user that there exists more content for this web page, and that clicking on this button triggers additional content to be sent to the user. This button is copied in the snapshot image of the virtual image and then sent to the Portable Device alongside data for its corresponding section should this data be sent to the Portable Device. The Proxy server's browser sends a request for additional content to the web page server only if the user clicks on the button. Alternatively, the Proxy server's browser also sends a request for additional content to the web page server when the user shows intent of viewing the next portion.
Another embodiment of the invention discloses a method for selecting the browser-identification information that the Proxy server's browser communicates to web page servers in a way that further reduces the amount of data transferred to the Portable Device, yet still maintains a minimally-satisfying navigation experience to the user. This embodiment relies on a database constituted of the websites that are the most often requested and navigated to by typical users. For each of these websites, usability and data transfer performance are evaluated from the point of view of the user, with reference to a specific Portable Device and to each browsing application that the Proxy server's browser could potentially identify itself as. For each website that is considered popular enough to be inserted in the database, the server determines the browser-identification components that, once simulated, provide the best data transfer performance among those that are minimally satisfying for the user's navigation experience. In the database, the browsing application that achieves this optimal yet minimally-satisfying performance is assigned, on a case-by-case basis for each popular website therein. Thereafter, when the user requests a web page, the Proxy server's browser verifies if the website associated with that web page is listed in the database previously set up and saved in the Proxy server. If it is, the Proxy server's browser alters its browser-identification components for those that simulate the browsing application assigned to that website in the database
The above as well as additional features and advantages of the present invention will become apparent in the following written detailed description.
The invention is described in more detail below with respect to an illustrative embodiment shown in the accompanying drawings in which:
Where used in the various figures of the drawings, the same numerals designate the same or similar parts.
For reference purposes, it is hereinafter assumed that the internal memory that is mostly relied on by the Proxy server and the Portable Device in this invention's various embodiments is cache memory, although flash memory could alternatively be used.
A Portable Device's cache memory is different from its display memory, a memory location in the Portable Device where pixels and data for an image are temporarily stored into a decompressed, bitmap format, from which a part is currently displayed on the Portable Device's screen. In this invention's preferred embodiments, web page images are displayed from the display memory location.
According to the prior art, when a Proxy server compares which blocks of data or parts of a web page image are exactly the same between a snapshot image of a refreshed web page just received from a web page server and an image of that same web page stored into the Portable Device's and the Proxy server's cache memories, a correlation analysis is performed by the Proxy server to check if data has been updated. This correlation analysis only compares blocks or parts of the image located at the same position on both versions of the web page image. If blocks of data or parts of the snapshot image of the refreshed web page are the same as blocks of data or parts of the image stored into the Portable Device's and the Proxy server's cache memories, but located at different positions, the Proxy server's correlation analysis does not recognize that they are the same.
In those instances, the Proxy server inefficiently, in both speed and bandwidth consumption, sends again these refreshed blocks of data to the Portable Device, in a compressed format. These suboptimal transfers of data can occur in various circumstances, including because advertisement banners or other text or graphic elements have been added, deleted, modified (e.g., changed in size) or moved at another position in the web page in the web page server between the moment said web page was first stored into the Portable Device's and the Proxy server's cache memories and the instance it is called up, at a later time. This inefficient situation also occurs when advertisement banners or other text or graphic elements are inserted in the web page in the web page server as the user scrolls up, down or sideways; should the Proxy server thereafter refresh its browser's virtual display while the user is still navigating on this web page, this insertion shifts the position of all subsequent blocks of data in the refreshed web page. By addressing the inefficient transfers of data that ensue from these circumstances, the method disclosed in this invention's principal embodiment reduces the amount of data transferred from the Proxy server to the Portable Device, thereby conserving on the bandwidth consumed, providing a faster display of web page images on the Portable Device's screen and allowing the commercial offer of more cost-competitive devices. Both situations, calling up a web page already stored into the Portable Device's and the Proxy server's cache memories and the refreshment of a web page currently navigated by the user, are covered below with detailed examples of the principal embodiment of this invention, as well as alternate embodiments. Nonetheless, the general description of the principal embodiment of this invention is made with reference to calling up a web page already stored into the Portable Device's and the Proxy server's cache memories.
Principal Embodiment—General Description
The prior art discloses numerous processes by which a Proxy server can divide a web page image into blocks before sending data, if any, to a remote device. In the multi-step process of the prior art that is the closest to this invention's preferred embodiment, the Proxy server begins by differentiating graphic elements, primarily pictures, from non-graphic elements, usually constituted of text. One way through which the Proxy server can achieve this differentiation is by analyzing the HTML content and elements that the Proxy server's browser receives from the web page server for a web page. From then on, the Proxy server treats each graphic element as a single block of data, while other, non-graphic areas of the web page image are divided into blocks using a matrix grid overlying the web page image but underlying the areas of graphic elements. As an example, the image 1 of a web page currently viewed is represented in
In this invention's preferred embodiment, graphic elements are constituted as separate blocks at the outset, in the same fashion as in the prior art just described above. Non-graphic areas of a web page image, however, are not divided by relying on a matrix grid. Instead, the Proxy server analyzes the last-child elements of HTML that visually affect the rendering of the web page, the Proxy server's browser receiving this HTML content for the web page from the web page server in accordance with the prior art. Some of these last-child elements of HTML that visually affect the rendering of the web page can be quite large, such as entire paragraphs, whereas others can be considerably smaller, like changes in font styles or sizes, multiple print colors, text subdivisions, a quote element or a hyperlink inserted within a larger textual element, and so forth. On the one hand, the larger a non-graphic block of data is, the more susceptible it is to be modified over time. As a result, when a large block of data of a non-graphic element is stored into the Portable Device's and the Proxy server's cache memories, it is less likely than smaller blocks to be efficiently reused for display at a later stage. On the other hand, the blocks of data that are stored in the Portable Device's and Proxy server's cache memories are compressed beforehand, and the compression quality of small blocks is poorer than for larger blocks. In its analysis of last-child elements of HTML for the division of non-graphic blocks of data, the Proxy server takes these two factors into account, on the basis of predetermined thresholds. If the Proxy server assesses that the block of data corresponding strictly to a last-child element of HTML would be too small, the Proxy server concatenates it with one or many adjacent element(s) to constitute a single block of data. However, the Proxy server subdivides elements that, because of their large size, are considered too likely to be modified over time, an event that makes useless their storage into cache memory. An example of this preferred division process is outlined with reference to
In accordance with the invention's principal embodiment, when blocks or parts of a web page image are loaded in the Proxy server's virtual display, the Proxy server ascribes to each block of data an identifier which can be a string of numbers, alphabet letters, symbols, or any combination thereof. If and when blocks of data are sent to the Portable Device, in application of this invention's method as described below, these identifiers are also saved in the Portable Device alongside data for blocks cached therein. Since these blocks are later stored into the Proxy server's cache memory as a mirror of the Portable Device's cache memory, as required in the processes of both the prior art and this invention's principal embodiment, each block's ascribed identifier is consequently also stored into the Proxy server's cache memory. To compute and assign a block's identifier, the Proxy server uses, and only uses, values representing content information for that block of data, for instance, its height, its width, its object (text, graphic element, animation or moving part, etc.), its HTML elements, its pixel colors, its pixel configuration, and so forth, or any combination of these content information values. More specifically, content information for the blocks of data does not take into account information such as a block's position in the web page image or its arrangement in relation with other blocks of data. No matter the particular computation method used to ascribe each block's identifier and the particular content information values taken into account, this computation must have two sets of characteristics. First, it should be detailed and specific, so that it is highly unlikely, or impossible, for blocks of data with different content to share the same identifier. Second, the computation should be sufficiently systematic and consistent for blocks sharing the same content to generally be ascribed the same identifier. One example of a computation method that would possess these characteristics is an algorithm that, for each block, recognizes and integrates in the block's resulting identifier the colour of every pixel from left to right and across rows. Another example of a computation method that typically possesses these two sets of characteristics is a checksum algorithm. For reference purposes, the preferred computation method relied on in this invention's various embodiments, including in their accompanying examples herein, is a checksum.
As described above and in the prior art, a web page image stored into the Portable Device's and the Proxy server's cache memories may not look exactly as the actual web page at different times, since most web pages are modified or updated over time. In the prior art, the Proxy server uses a correlation analysis based on blocks' positions to establish its instructions to the Portable Device and identify the data that should be sent thereto. According to the present invention, the Proxy server rather uses blocks' computed checksums to determine its instructions to the Portable Device and the data that needs to be sent.
Thus, with further reference to
Proxy server 7b contains compressed data that was sent for that particular web page during a previous viewing. Said blocks of data 2-X2, 3-X3, 4-X4, 11-X11, 12-X12, 13-X13, 14-X14 & 15-X15 in
When web navigation by the user leads to a web page, either because the user clicks on the back or forward buttons on the Portable Device, types in a web page's URL or clicks on a link to a web page, the Proxy server's browser receives HTML, JAVA, JPEG or other types of information and loads a fresh portion of the web page from the web page server, which portion is rendered completely by the browser on the Proxy server's virtual display. Then, as described in the prior art, a single frozen image frame or snapshot 8 is taken by the Proxy server whereby no pixels change in this frame. In accordance with the present invention, the Proxy server divides this snapshot image 8 of the currently-viewed web page into blocks of data in the preferred manner disclosed above. Immediately after, it computes a checksum for each block of data contained in the current viewable area of the Portable Device's display screen in the snapshot image 8 by relying on the same algorithm used to ascribe checksums to blocks of web page images stored into the Portable Device's and the Proxy server's cache memories. When the web page is first loaded, this current viewable area is the initial display area 9. Shortly afterward, the Proxy server verifies whether a web page image of this currently-viewed web page is stored into the Portable Device's cache memory, mirrored into the Proxy server's cache memory. In one prior art method, the Proxy server makes this verification by checking for the same URL as the currently-viewed web page in the URLs of web page images stored into the Portable Device's and the Proxy server's cache memories. In this invention, the Proxy server checks instead if any stored web page associated with the web site of the currently-viewed web page contains a block whose ascribed checksum is the same as one of the checksums just computed for the blocks positioned in the initial viewable area 9 of the snapshot image 8. This way, the Proxy server takes advantages of the saved checksums of this invention by being able to recognize previously-viewed web pages even though their URLs might have changed within a same domain.
If no web page image associated with the current web page is stored into the Portable Device's and the Proxy server's cache memories, the Proxy server compresses the blocks of data just divided, and thereupon sends this data—including blocks' ascribed checksums—to the Portable Device. Unless the user scrolls to another area of the web page, the transfer of data begins with the blocks occupying the initial viewable area on the display screen of the Portable Device 9 so that an initial display result for the user's web navigation request can be viewed as quickly as possible. The Proxy server's subsequent actions regarding data transfer depend on its preset or user-adjusted order of priority, as described in the prior art or further below in other embodiments of this invention.
If a web page image associated to the currently-viewed web page is already stored into the Portable Device's cache memory, which for the sake of this example is the case with image 7a, the Proxy server retrieves a copy of its corresponding web page image 7b, stored into the Proxy server's cache memory, for the purpose of comparing it with the new snapshot image 8 of that web page. For this example, as can be observed in
Thus the Proxy server has first computed a checksum for blocks with position identities 11, 12, 2, 3A & 13A in the initial display area 9 of the snapshot image 8. For this example, these blocks' respective computed checksums are X11, X12, X2A, X3 & X13. After finding out that the web page image 7b stored into its own cache memory contains at least one block of data to which one of these checksums is ascribed, the Proxy server retrieves this web page image. Second, for that web page, the Proxy server compares the just computed checksums of the initial display area 9 of the snapshot image 8, for each block at a time in sequence, with the checksums of blocks anywhere in the web page image 7b. When, with this comparison, the Proxy server is informed that blocks contained in the current viewable area of the Portable Device's display screen in the snapshot image 8 have the same checksums as blocks in the cached web page image 7b, the Proxy server instructs the Portable Device, in the following order, to copy those blocks from the web page image 7a stored into the device's cache memory; decompress them; store them into the Portable Device's display memory and assemble them on the basis of their position coordinates in the snapshot image 8 which coordinates are sent from the Proxy server to the Portable Device along with the Proxy server's instructions; display them on the Portable Device's screen from the display memory location, and store the new positions for these blocks into the Portable Device's cache memory for that web page. Third, for blocks contained in the current viewable area of the Portable Device's display screen in the snapshot image 8 whose checksums do not match the checksum of any block in the cached web page image 7b, the Proxy server compresses these new blocks of data and sends them to the Portable Device, which decompresses them; stores them in the correct location into its display memory; displays them on its screen from the display memory location, and stores them into its cache memory for the web page. Last, the Proxy server stores into its cache memory for that web page a copy of all the blocks just stored into the Portable Device's cache memory and the new coordinates of blocks that changed positions.
In the following detailed example, the results of the prior art process are contrasted with those of this invention's principal embodiment for a previously-viewed web page. Another detailed example comes next, this one applying the principal embodiment to a web page refreshed during the user's navigation of that web page. These examples show that, when the Proxy server applies this invention as disclosed in its principal embodiment instead of prior art methods, it does not need to send data over again to the Portable Device regarding blocks previously stored into the Portable Device's and the Proxy server's cache memories and that have simply shifted to another position in the new or refreshed web page.
For the first of these examples, illustrated in
In application of the comparative analysis of blocks' checksums disclosed in this invention, the Proxy server also recognizes that it previously sent data to the Portable Device for this web page. For blocks occupying the initial display area 9 of the snapshot image 8 of the currently-viewed web page, the Proxy server compares the computed checksum results with those in blocks contained anywhere in the Proxy server's cached image 7b of the web page. Having the same checksums, blocks 11-X11, 12-X12, 3A-X3 & 13A-X13 of the snapshot image 8 are found to be respectively the same as blocks 11-X11, 12-X12, 3-X3 & 13-X13 in the Proxy server's cached web page image 7b. Therefore, the Proxy server instructs the Portable Device, in the following order, to copy blocks 11-X11, 12-X12, 3-X3 & 13-X13 from the Portable Device's cached image 7a of that web page; decompress them; store them into the Portable Device's display memory and assemble them respectively in the same positions as blocks 11-X11, 12-X12, 3A-X3 & 13A-X13 in the snapshot image 8 whose coordinates are sent from the Proxy server to the Portable Device along with these instructions; display them on the Portable Device's screen from the display memory location, and store these blocks' new positions into the Portable Device's cache memory for that web page. Immediately after, since block 2-X2A′s checksum is different from the checksums of any block stored into the Proxy server's image 7b of the web page, the Proxy server sends to the Portable Device compressed data for this block with instructions to decompress it; store it into the Portable Device's display memory in the same position as in the snapshot image 8; display it on the Portable Device's screen from the display memory location, and store it into the Portable Device's cache memory for that web page. Subsequently, the Proxy server stores into its own cache memory for that web page a copy of the new block of data just stored into the Portable Device's cache memory and the new coordinates of blocks that changed positions.
In this example, instead of the Proxy server sending data for blocks 3A-X3 & 13A-X13 to the Portable Device as would have been the case with the prior art process, the Proxy server only sends to the Portable Device instructions to copy blocks 3-X3 & 13-X13 from its web page image 7a already stored into cache memory. As exemplified here, the present invention allows a new version of a previously-viewed web page stored into the Portable Device's cache memory to be displayed without having to send as much data as would have been necessary by relying strictly on prior art.
Thereafter, as explained in the prior art, the Proxy server executes operations based on its preset or user-adjusted order of priority. The standard second priority consists in the Proxy server sending in the same manner data to the Portable Device whereby a small field around the displayable area of the Portable Device is filled up with blocks of data. These second-priority operations are only executed once the first priority, sending blocks of data for the current viewable area of the Portable Device's display screen, is completed. Those second-priority operations, as well as subsequent options of priority order disclosed in the prior art, determine which parts of the rest of the snapshot image 8 of the currently-viewed web page are checked in order to fill in the Portable Device's display and cache memories for the rest of the refreshed web page image. If a part is filled this way, and the user scrolls over it, it is ready to be instantly displayed from the display memory.
In any case, if the user clicks somewhere or scrolls up, down or sideways in a way that changes the Portable Device's display area on the snapshot image 8 to a new viewable area that the Proxy server has not yet checked, this command is instantaneously communicated to the Proxy server. If the Proxy server is operating in accordance with the invention's principal embodiment, it thereupon computes checksums for blocks in that new display area. Then, the Proxy server performs a comparison of the resulting checksums ascribed to blocks located in that new display area of the currently-viewed web page with those of blocks of data located anywhere in the corresponding web page image 7b stored into the Proxy server's cache memory. A case of this instance, in which the results are also compared with those of prior art operations, is illustrated in
Had the Proxy server applied the prior art method of correlation analysis, it would have found that blocks 4A-X4 & 14A-X14A of the snapshot image 8 of the currently-viewed web page differ from blocks located in their corresponding positions in the web page image 7b stored into the Proxy server's cache memory. Regarding block 15A-X15, the Proxy server would have been unaware of any data being previously sent to the Portable Device for this space. Hence, it would not have performed any correlation analysis for block 15A-X15. Accordingly, the Proxy server would have sent to the Portable Device compressed data for these three blocks from the snapshot image 8 with instructions to decompress them; store them into the Portable Device's display memory at their correct location; display them on the Portable Device's screen from the display memory location, and store them into the Portable Device's cache memory for that web page. The Proxy server would then have stored into its own cache memory an updated mirror image of the Portable Device's cached data for that web page.
In application of this invention's principal embodiment, when the user scrolls to area 10 of the snapshot image 8 of the currently-viewed web page, the Proxy server's first response is to compute checksums for the blocks in that area with position identities 4A, 14A & 15A. In this example, those computed checksums are respectively X4, X14A & X15. Next, the Proxy server compares these checksums with those of any block in the web page image 7b previously stored into and retrieved from the Proxy server's cache memory. With this comparative analysis of blocks' checksums, the Proxy server establishes that it has already sent data to the Portable Device for blocks 4A-X4 & 15A-X15 in the snapshot image 8, which respectively have the same checksums as blocks 4-X4 & 15-X15 in the Proxy server's cached web page image 7b. Therefore, the Proxy server instructs the Portable Device, in the following order, to copy blocks 4-X4 & 15-X15 from the Portable Device's cached image 7a of that web page; decompress them; store them into the Portable Device's display memory and assemble them in the positions respectively occupied by blocks 4A-X4 & 15A-X15 in the snapshot image 8 whose coordinates are sent by the Proxy server to the Portable Device along with these instructions; display them on the Portable Device's screen from the display memory location, and store these blocks' new positions into the Portable Device's cache memory for that web page. Immediately after, discovering that block 14A-X14A's checksum differs from every checksum computed in blocks cached in the Proxy server's web page image 7b, the Proxy server sends compressed data for this block to the Portable Device with instructions to decompress this block; store it into the Portable Device's display memory in the same position as in the snapshot image 8; display it on the Portable Device's screen from the display memory location, and store it into the Portable Device's cache memory for that web page. Subsequently, the Proxy server stores into its own cache memory for that web page a copy of the new block of data just stored into the Portable Device's cache memory and the new coordinates of blocks that changed positions.
In this example, instead of the Proxy server sending data for blocks 4A-X4 & 15A-X15 to the Portable Device as would have been the case with the prior art method, the Proxy server only sends to the Portable Device instructions to respectively copy blocks 4-X4 & 15-X15 from its web page image 7a already stored into cache memory. As exemplified here too, the principal embodiment of the present invention allows an updated version of a previously-viewed web page stored into the Portable Device's cache memory to be displayed without having to send as much data as would have been necessary by relying strictly on prior art. In particular, as demonstrated by block 15A-X15 of this example, it is possible with this invention that the Proxy server will not need to send data to the Portable Device for a viewable area that had yet not been viewed by the user.
In an alternate embodiment of this invention, after dividing the snapshot image 8 of the currently-viewed web page into blocks of data in the preferred manner disclosed above, the Proxy server computes checksums for every block of data in the snapshot image 8 of the currently-viewed web page (instead of only for those blocks that are contained in the current viewable area of the Portable Device's display screen in the snapshot image 8). These checksums are computed by relying on the same algorithm used to ascribe checksums to blocks of web page images stored into the Portable Device's and the Proxy server's cache memories. Subsequently, the Proxy server verifies whether a web page image of this currently-viewed web page is stored into the Portable Device's cache memory, mirrored into the Proxy server's cache memory, by checking if any stored web page associated with the website of the currently-viewed web page contains a block whose ascribed checksum is the same as one of the checksums just computed for the blocks in the snapshot image 8 of the currently-viewed web page (instead of only for those blocks that are contained in the current viewable area of the Portable Device's display screen in the snapshot image 8). For reference purposes, the Proxy server finds that it is the case with the Portable Device's web page image 7a, and the Proxy server retrieves a copy of its corresponding web page image 7b, stored into its cache memory, for the purpose of comparing this stored web page image 7b with the new snapshot image 8 of that web page.
Then, the Proxy server compares these checksums, for each block at a time in sequence, with the checksums of blocks anywhere in the web page image 7b previously stored into and retrieved from the Proxy server's cache memory. When, with this comparison, the Proxy server is informed that blocks contained anywhere in the snapshot image 8 (instead of only in the current viewable area of the Portable Device's display screen in the snapshot image 8) have the same checksums as blocks in the cached web page image 7b, the Proxy server instructs the Portable Device, in the following order, to copy those blocks from the web page image 7a stored into the device's cache memory; decompress them; store them into the Portable Device's display memory and assemble them on the basis of their position coordinates in the snapshot image 8 which coordinates are sent from the Proxy server to the Portable Device along with the Proxy server's instructions; if some of those blocks are positioned in the current viewable area of the Portable Device's display screen in the snapshot image 8, display them on the Portable Device's screen from the display memory location; and store these blocks' new positions into the Portable Device's cache memory for that web page. Applied to the previous example illustrated by
As mentioned earlier, the principal embodiment of this invention can also be executed when advertisement banners or other graphic or non-graphic elements are inserted in the web page in the web page server as the user scrolls up, down or sideways, which insertion, should the Proxy server thereafter refresh its virtual display while the user is still navigating on this web page, shifts the positions of all subsequent blocks of data in the refreshed web page. With references to
In this example, a web page was requested by the user and loaded onto the Proxy server. The Proxy server's browser displayed a virtual image of that web page onto the Proxy server, and the Proxy server took a single frozen image frame or snapshot 22a whereby no pixels changed in this frame. The Proxy server thereafter divided this image into separate blocks of data in the preferred manner described above using HTML content, and it calculated checksums for blocks of data located in the initial viewable area of the display area 23 of the snapshot image 22a. Three blocks of data were identified in this way: 25-X25, 26-X26 & 27-X27. (Reference characters for blocks of data in this example rely on the structure used in the previous example, with numbers on the left-hand side of hyphens indicating blocks' positions; alphanumeric codes on the right-hand side of hyphens indicating blocks' computed and ascribed checksums, and the capital letter A denoting a change in the position or computed checksum of a particular block.) In the manner disclosed above, the Proxy server sent to the Portable Device display instructions or data, or both, with respect to these blocks of data. Within this process, these blocks were stored, in a compressed format and with their corresponding positions, into the Portable Device's and the Proxy server's cache memories respectively as web page images 21a & 21b in
As the user scrolls back up at the initial viewable area 23 of this same web page, refreshed content for this web page is received by the Proxy server as explained in greater detail in a further embodiment of this invention, an image of which is displayed onto the Proxy server by its browser. As a response to the user scrolling back up, a new element—an advertisement banner—was inserted in the web page at position 28, which added advertisement shifted the position of every block of data below it in the refreshed web page virtually displayed in the Proxy server. Shortly afterward, the Proxy server takes a single frozen image frame or snapshot 22b of this refreshed web page image whereby no pixels change in this frame. The Proxy server then determines the display instructions and data that it must send to the Portable Device regarding blocks of data positioned in the current viewable area 23 of the display area in the refreshed snapshot image 22b, the results of which when relying on the principal embodiment of this invention are compared with the prior art method.
In application of the prior art method of correlation analysis, performed with respect to blocks' positions and their respective content, the Proxy server would recognize that block 25-X25 of the refreshed snapshot image 22b is the same as block 25-X25 in the web page image 21b stored into the Proxy server's cache memory. For blocks 28-X28, 26A-X26 & 27A-X27 of the current viewable area of the display area in the refreshed snapshot image 22b, the Proxy server would find that they do not correlate with blocks in their respective positions in the web page image 21b stored into the Proxy server's cache memory. More particularly, the Proxy server does not recognize that blocks 26-X26 & 27-X27 in the web page image 21b stored into the Proxy server's cache memory have simply shifted into the blocks positioned at 26A & 27A in the refreshed snapshot image 22b. Based on this analysis, the Proxy server would instruct the Portable Device to copy block 25-X25 from the Portable Device's stored image 21a of that web page in its cache memory; decompress it; store it at its correct location into the Portable Device's display memory, and display the block from the display memory location on the Portable Device's screen at the same position. Subsequently, the Proxy server would send to the Portable Device compressed data for blocks 28-X28, 26A-X26 & 27A-X27 of the refreshed snapshot image 22b with instructions to decompress these blocks; store them at their correct location into the Portable Device's display memory; display them on the Portable Device's screen from the display memory location, and store them into the Portable Device's cache memory for that web page. The Proxy server would also store into its own cache memory an updated mirror image of the Portable Device's cached data for that refreshed web page image.
In application of the checksum comparative analysis included in this invention's preferred embodiment, the Proxy server first computes a checksum for each block of data contained in the current viewable area 23 of the Portable Device's display screen in the refreshed snapshot image 22b. It does so by relying on the same algorithm used to ascribe checksums to blocks of web page images stored into the Portable Device's and the Proxy server's cache memories. Thus the Proxy server computes a checksum for blocks with position identities 25, 28, 26A & 27A in the initial display area 23 of the refreshed snapshot image 22b. For this example, these blocks' respective computed checksums are X25, X28, X26 & X27. Second, the Proxy server compares these checksums, for each block at a time in sequence, with the checksums of blocks anywhere in the web page image 21b previously stored into the Proxy server's cache memory. This way, the Proxy server recognizes that it has already sent data to the Portable Device for the current viewable area of the Portable Device's display area: blocks 25-X25, 26A-X26 & 27A-X27 of the refreshed snapshot image 22b are found to be respectively the same as blocks 25-X25, 26-X26 & 27-X27 in the Proxy server's cached web page image 21b. Therefore, the Proxy server instructs the Portable Device, in the following order, to copy blocks 25-X25, 26-X26 & 27-X27 from the Portable Device's cached image 21a; decompress them; store them into the Portable Device's display memory and assemble them respectively in the same positions as blocks 25-X25, 26A-X26 & 27A-X27 in the refreshed snapshot image 22b whose coordinates are sent from the Proxy server to the Portable Device along with these instructions; display them on the Portable Device's screen from the display memory location, and store these blocks' new positions into the Portable Device's cache memory for that web page. Immediately after, since block 28-X28's checksum is different from the checksums of any block stored into the Proxy server's image 21b of the web page, the Proxy server sends to the Portable Device compressed data for this block with instructions to decompress it; store it into the Portable Device's display memory in the same position as in the refreshed snapshot image 22b; display it on the Portable Device's screen from the display memory location, and store it into the Portable Device's cache memory for that web page. Last, the Proxy server stores into its own cache memory for that web page a copy of the new block of data just stored into the Portable Device's cache memory and the new coordinates of blocks that changed positions.
In this example, instead of the Proxy server sending data for blocks 26A-X26 & 27A-X27 to the Portable Device as would have been the case with the prior art process, the Proxy server only sends to the Portable Device instructions to copy blocks 26-X26 & 27-X27 from its web page image 21a already stored into cache memory. As exemplified here, the present invention allows a refreshed version of a web page stored into the Portable Device's cache memory to be displayed without having to send as much data as would have been necessary by relying strictly on prior art.
The alternate embodiment described above for the invention whereby, prior to sending any data for a web page image, the Proxy server initially computes checksums and performs a comparative checksum analysis for blocks located anywhere in a just loaded web page image (instead of only for the initial viewable area of the display area), can be translated to situations where a currently-navigated web page is refreshed. In this case, the moment the Proxy server receives refreshed content for the web page that is currently being displayed on the Portable Device, the Proxy server computes checksums for every block of data in the refreshed snapshot image 22b of the refreshed web page (instead of only for those blocks that are contained in the current viewable area 23 of the Portable Device's display screen in the refreshed snapshot image 22b). These checksums are computed by relying on the same algorithm used to ascribe checksums to blocks of web page images stored into the Portable Device's and the Proxy server's cache memories. Then, the Proxy server compares these checksums, for each block at a time in sequence, with the checksums of blocks anywhere in the web page image 21b previously stored into the Proxy server's cache memory. When, with this comparison, the Proxy server is informed that blocks contained anywhere in the refreshed snapshot image 22b (instead of only in the current viewable area 23 of the Portable Device's display screen in the refreshed snapshot image 22b) have the same checksums as any block in the cached web page image 21b, the Proxy server instructs the Portable Device, in the following order, to copy those blocks from the web page image 21a stored into the device's cache memory; decompress them; store them into the Portable Device's display memory and assemble them on the basis of their position coordinates in the snapshot image 22b which coordinates are sent from the Proxy server to the Portable Device along with the Proxy server's instructions; if some of those blocks are positioned in the current viewable area of the Portable Device's display screen in the refreshed snapshot image 22b, display them on the Portable Device's screen from the display memory location; and store these blocks' new positions into the Portable Device's cache memory for that web page. The subsequent operations, starting with the Proxy server sending compressed data to the Portable Device for new or modified blocks contained in the current viewable area of the Portable Device's display screen in the refreshed snapshot image 22b, are then executed as detailed above in the previous example, except for the following two improvements resulting from this embodiment. First, if some blocks located elsewhere than in the current viewable area of the Portable Device's display screen in the refreshed snapshot image 22b are copied in the manner described in this embodiment, and should the user scroll over them, they are ready to be instantly displayed on the Portable Device's screen from the display memory. Second, as the Proxy server in this embodiment no longer needs to compute and compare checksums when the user scrolls over to a new viewable area in the refreshed snapshot image 22b, it can immediately respond to a scrolling command by sending compressed data for new or modified blocks, if any, contained in the new viewable area of the Portable Device's display screen in the refreshed snapshot image 22b.
In another embodiment of the invention, the Proxy server does not store into its cache memory a mirror copy of web page images stored into the Portable Device's cache memory, nor any other information. As in the principal embodiment of this invention, though, the Portable Device saves in its cache memory the checksums ascribed to blocks of data stored therein and previously computed by the Proxy server. When the Proxy server loads a new web page, or when the content of the currently-viewed web page is refreshed, the Proxy server takes a snapshot image of the new or refreshed web page displayed on its virtual display. The Proxy server then computes checksums for blocks of data positioned in the current viewable area of the Portable Device's display area on this snapshot image. Depending on the user's action that triggered the request for the new or refreshed web page, one of the two following sequences of events follows.
If the user's action entails that the Portable Device is informed of the web page to be requested—for instance, the user types the URL of a web page in the browser's search bar—the Portable Device communicates to the Proxy server all checksums stored into the Portable Device's cache memory for this web page. This communication is sent alongside or shortly after the user's action that initially triggered this request, which implies that the Proxy server is likely to have received these checksums by the time it has computed checksums for blocks of data positioned in the current viewable area of the Portable Device's display area with respect to the snapshot image of the new or refreshed web page. Possessing all the required information, the Proxy server thus performs a comparative analysis between the just computed checksums for blocks of data in the current viewable area of the Portable Device's display area, one block at a time in sequence, and the checksums previously received from the Portable Device. Once this analysis is completed, the Proxy server sends to the Portable Device display instructions or data, or both, in the same manner as in the principal embodiment detailed above.
If the user's action entails that the Portable Device is not informed of the web page to be requested—for instance, the user clicks on a link, which click is only interpreted afterwards by the Proxy server—the Proxy server communicates to the Portable Device information identifying the requested or refreshed web page. This information is sent after loading the new or refreshed web page and computing checksums for blocks of data positioned in the current viewable area of the Portable Device's display area, so it may include the just computed checksums, as well as the locations of their corresponding blocks of data. The Portable Device thereafter checks whether it possesses stored data associated to this web page, and it sends to the Proxy server all computed checksums saved for that cached web page image, if any. If the Proxy server receives checksum information from the Portable Device, the Proxy server subsequently performs a comparative analysis between the computed checksums of blocks of data in the current viewable area of the Portable Device's display area, one block at a time in sequence, and the checksums just received from the Portable Device. Once this analysis is completed, the Proxy server sends to the Portable Device display instructions or data, or both, in the same manner as in the principal embodiment detailed above. If the Proxy server did not receive checksum information from the Portable Device, it can immediately start sending data to the Portable Device—including checksums ascribed to each block—and display instructions in the same manner described above.
Compared with the principal embodiment of the invention, no data needs to be stored into the Proxy server's cache memory according to this embodiment, although this effect comes with a performance cost: for requests by which the Portable Device does not immediately possess information identifying the requested web page, the Proxy server has to wait for the Portable Device to later transmit information to the Proxy server before the comparative checksum analysis can be performed therein. The alternate embodiment described above whereby, prior to sending any data for a web page image, the Proxy server initially computes checksums and performs a comparative checksum analysis for blocks located anywhere in a just loaded web page image (instead of only for the initial viewable area of the display area), can be translated to the embodiment disclosed in this paragraph.
In another embodiment of the invention, the Proxy server does not store blocks of data into its cache memory, but only saves the checksums ascribed to blocks of data stored into the Portable Device's cache memory. When the Proxy server loads a new web page, or when the content of the currently-viewed web page is refreshed, the Proxy server takes a snapshot image of the new or refreshed web page displayed on its virtual display, and it computes checksums for blocks of data positioned in the current viewable area of the Portable Device's display area on this snapshot image. Then, the Proxy server performs a comparative analysis between the computed checksums of blocks of data in the current viewable area of the Portable Device's display area on the snapshot image, one block at a time in sequence, and the checksums previously saved into its cache memory. Once this analysis is completed, the Proxy server sends to the Portable Device display instructions or data, or both, in the same manner as in the principal embodiment detailed above, except that it cannot indicate precisely to the Portable Device the storage location of blocks of data that should be copied from the Portable Device's cache memory. Compared with the principal embodiment of the invention, no data needs to be stored into the Proxy server's cache memory according to this embodiment, although this effect comes with a performance cost since both the Proxy server and the Portable Device have to scan through more information in order to respectively execute the checksum comparative analysis and copy blocks of data. The alternate embodiment described above whereby, prior to sending any data for a web page image, the Proxy server initially computes checksums and performs a comparative checksum analysis for blocks located anywhere in a just loaded web page image (instead of only for the initial viewable area of the display area), can be translated to the embodiment disclosed in this paragraph.
In an alternate embodiment, blocks of data copied by the Portable Device from its cache memory may be displayed on the Portable Device's screen from the Portable Device's display memory simultaneously with these blocks being stored into the Portable Device's display memory, instead of only thereafter. Likewise, in this alternate embodiment, blocks of data transmitted to the Portable Device from the Proxy server may also be displayed on the Portable Device's screen from the Portable Device's display memory simultaneously with these blocks being stored into the Portable Device's display memory, instead of only thereafter. The rest of the principal embodiment of the invention applies normally to this alternate embodiment.
According to the prior art, when the Proxy server's browser receives content from a web page server, blocks or parts of this web page image are virtually displayed as a virtual image on the Proxy server, which then takes a single frozen image frame or snapshot of the virtual image and, as is substantially detailed above, transmits blocks of data or display instructions, or both, to the Portable Device.
As illustrated in
If the user scrolls down or clicks on a link that shifts the image display down, the resulting command is instantaneously communicated to the Proxy server. Depending on whether relevant data for that lower area had already been sent to the Portable Device, the Proxy server then sends data or instructions, or both, to the Portable Device to display on the Portable Device's screen the lower portion of the virtual image, which now corresponds with the current viewable area of the Portable Device's screen. Furthermore, as still contemplated in the prior art, if the user scrolls down or clicks on a link that shifts the image display down to the image's limit 43 representing the end of the web page's incomplete image, the Proxy server is again instantaneously informed of this event. It interprets the event as a request to be sent to the web page server to the effect that additional content for the web page should be transmitted. This additional content is transferred from the web page server to the Proxy server's browser, and eventually to the Portable Device through the same process by which the initial content was sent. It is also possible for the Proxy server to interpret a request for additional content for the web page on the basis of the user's shown intentions, for instance, by scrolling quickly toward the bottom of the page; by clicking on a link that shifts the display area to a position of the web page that has not been loaded on the Proxy server; because, for this specific web page, the user's history reveals that other portions of the web page are usually scrolled to, etc. When combined with the principal embodiment of this invention, each partial image of a web page that is transmitted to the Portable Device is stored in the Portable Device's and the Proxy server's cache memories, as substantially described above. These steps are repeated as necessary, depending on the user's clicking or scrolling down commands and on the amount of content that the web page comprises.
When additional content is requested by the Proxy server's browser to a web page server, the web page server takes into account any modification or update that took place in higher portions of the refreshed web page to determine the content of the currently-requested portion of the web page. These changes include advertisement banners or other text or graphic elements that have been added, inserted as a response to user scrolling, deleted, modified (e.g., changed in size) or moved at another position in the web page hosted on the web page server between the moment a previous portion of the web page's content was transmitted to the Proxy server and the Portable Device, and stored in their cache memories, and the later instance an additional portion is called up. As a consequence of this refreshment, based on prior art methods, some blocks of data that were originally sent in a previous portion of the web page transmission may be sent anew in a subsequent one. Likewise, if the user scrolls back up to a portion of the web page that was previously viewed, the Proxy server's browser sends a request to the web page server for refreshed content to be sent for that portion of the web page. This content is analyzed and processed by the Proxy server using the method disclosed above regarding refreshed content after an additional element has been inserted during user navigation of a web page. Therefore, every time a new portion of a web page is requested or a previously-viewed portion of a web page is refreshed, redundant or unneeded transfers of data between the Proxy server and the Portable Device are likely to happen, which in turn affect negatively the Portable Device's bandwidth consumption and speed performance. By decreasing the likelihood of cases in which new or refreshed portions of web pages are requested to a web page server, the following embodiments of the invention reduce the amount of data transferred from the Proxy server to the Portable Device and thus conserve on bandwidth consumption and improve the Portable Device's performance. In a preferred embodiment, the following embodiments are combined with the principal embodiment of this invention, extensively detailed above, for a more efficient reduction of data transmission.
The first of these further embodiments of the invention is two-part, the first part of which is illustrated in
In some cases, the content that the user is interested in is a specific picture 47 that is not received as part of a transmission's extra content in accordance with the first half of this embodiment (compare with
As a particular example of the combined halves of this embodiment, illustrated in
In a further embodiment of the invention, the number of instances in which accidental or unprompted transfers of data from the Proxy server to the Portable Device, for additional portions of a web page, is significantly decreased or nullified. In the prior art, the Proxy server automatically and instantaneously interprets the user scrolling down or clicking on a link that shifts the image display down to the image's limit 43, representing the end of the virtual display's and the snapshot's incomplete images (45 & 48 of
In this embodiment, scrolling down or clicking somewhere that shifts the image display down to the images' limits 43 is no longer interpreted as a request for additional content of a web page to be sent to the web page server. Instead, as illustrated in
In an alternate embodiment, scrolling down or clicking somewhere that shifts the image display close to the images' limits 43 is still no longer interpreted, in itself, as a request for additional content of a web page to be sent to the web page server. Instead, the Proxy server's browser sends a request to the web page server for additional content to be transmitted on the basis of the user's shown intentions, for instance, by scrolling quickly toward the bottom of the page; by clicking on a link that shifts the display area to a position of the web page that has not been loaded on the Proxy server; because, for this specific web page, the user's history reveals that other portions of the web page are usually scrolled to, etc. In this alternate embodiment, clicking on a button 49 is but one way by which the Proxy server can interpret the user's intentions of viewing the next portion of the web page. The rest of the previously-disclosed embodiment of the invention applies normally to this alternate embodiment.
By ensuring that data is only sent as a response to a user's request (e.g., loading a web page), shown intentions (e.g., scrolling toward other sections) and specific commands (e.g., clicking on a button), these further embodiments of the invention reduce the amount of data that the Proxy server needs to send to the Portable Device. In addition to improving the performance of the device and reducing bandwidth consumption, these more efficient processes make it significantly less likely for the Proxy server to send to the Portable Device data in which the user is not interested. In this invention's preferred embodiment, these advantages combine with the principal embodiment of this invention, in which a checksum comparative analysis is executed, to provide an even more efficient process for sending data to the Portable Device and displaying it. When a user scrolls back up in a web page after multiple portions of the web page image have been sent from the Proxy server to the Portable Device and displayed on the device's screen, it is likely that a modified, deleted or added element in one of the first portions of the refreshed web page causes the position of a large number of blocks of data to have shifted in comparison with blocks stored in the Portable Device's and the Proxy server's cache memories. As described in the detailed examples above, in application of the correlation analysis of the prior art, the Proxy server would have to send over again to the Portable Device all of these shifted blocks of data for areas in which the Portable Device's display is moved to. In application of the checksum comparative analysis included in this invention's preferred embodiment, only new or modified blocks—whose internal content is actually different from the content of any block stored into the Portable Device's and the Proxy server's cache memories—need to be sent from the Proxy server to the Portable Device.
As mentioned above with respect to the size of the Proxy server's virtual image displayed on it by its browser, information sent to web page servers by the Proxy server's browser, most notably the components of User-Agent strings, can be altered in a way that modifies the web page servers' interactions with the Proxy server's browser. In various cases, these manipulations allow the Proxy server to send less data to the Portable Device and thereby reduce the Portable Device's bandwidth consumption and improve the device's performance and speed. The next embodiment of the invention discloses a method for selecting the browser-identification information that the Proxy server's browser communicates to web page servers, so that the amount of data transferred to the Portable Device is further reduced while still maintaining a minimally-satisfying navigation experience to the user. In this invention, browser-identification information can be conveyed in any manner from the Proxy server to web page servers. However, in the preferred embodiment of the invention referred to hereinafter, the browser-identification information is conveyed in components of User-Agent strings.
According to the prior art, the User-Agent strings that are communicated to web page servers during the user's navigation contain browser-identification components that typically either disclose true information about the browser or cloak and alter its actual identity for another browsing application. This way, if the web page server offers different versions for a web page in accordance with different browsing applications, the Proxy server can change the version that it would receive. In the prior art, whether real or simulated, the browser-identification information communicated to web page servers by a Proxy server's browser generally stays the same throughout the user's navigation on the Internet. However, many web page servers only offer adapted versions of their content to specific browsing applications, and it is possible that the Proxy server's browser does not identify itself as one of them. Moreover, taking into account the method that is substantially described above for data transfer from the Proxy server to the Portable Device, the browser identity that minimizes the amount of data transferred to the Portable Device may not be the same for different web pages. In other cases, the browser identity that leads to the least amount of data being sent from the Proxy server to the Portable Device has the disadvantage of not offering a satisfying navigation experience to the user, taking into consideration the Portable Device's characteristics. The embodiment of the invention disclosed hereinafter avoids these pitfalls and reduces the amount of data transferred from the Proxy server to the Portable Device, thereby conserving on bandwidth and improving the Portable Device's performance without neglecting usability. It consists of a method for the Proxy server's browser to adapt the browser-identification components of its User-Agent strings into the components, among those that offer a minimally-satisfying navigation experience to the user, with which the lowest amount of data is transferred to the Portable Device. This process is applied with respect to most web pages requested by the user and on a case-by-case basis.
To perform this embodiment, the Proxy server relies on a database. This database is constituted of the web sites that are the most often requested and navigated to by typical users. For each of these websites, usability and data transfer performance are evaluated from the point of view of the user, with reference to a specific Portable Device and to each browsing application that the Proxy server's browser could potentially identify itself as.
Usability is generally assessed with reference to predetermined thresholds: either a browser offers a navigation experience to the average user that minimally satisfies this threshold, or it does not. In this way, the measurement of usability is generally translated into a discrete, binary variable. Usability can be appraised by individual human testers who rank popular websites to be included in the database, by relying on a computer program that recreates the display of web pages based on various browsing applications. Alternatively, usability can be assessed automatically. For the automated assessment, the first step is to determine the descriptive characteristics that are considered to be necessary in order for a target user to find the navigation experience of a website minimally satisfying. The characteristics could include the display speed on the Portable Device, the navigation speed when the user scrolls up, down or sideways in a web page, the navigation speed when the user requests another page in the same website to be loaded, the display arrangement of the content sent from the web page server being intuitive for the user, and so forth. When one of these aspects is measurable, minimum thresholds for user satisfaction are also established. Then, using an algorithm that integrates these settings with reference to a specific type of Portable Device, a computer application—which may run on the Proxy server—analyzes and measures these characteristics in the websites selected for the database by mimicking each of the browsing applications that the Proxy server's browser could potentially identify itself as in the User-Agent string. Hence this automated process measures usability and establishes the browsing applications that offer a minimally-satisfying navigation experience to the user. A particular example of a computer application assessing usability, whose characteristics focus on ease of use, is disclosed further below as a preferred embodiment.
Data transfer performance is assessed by estimating the bandwidth consumption for data that would be transferred from the Proxy server to the Portable Device as a consequence of requesting, accessing and navigating the website through each browsing application that the Proxy server's browser could potentially simulate. For each browsing application, a lower bandwidth consumption is interpreted as a better performance. The measurements for data transfer performance are preferably executed with an automated process, as disclosed in the preferred embodiment below.
For each website that is considered popular enough to be inserted in the database, the server determines the browser-identification components of the User-Agent string communicated by its browser as those that simulate the browsing application that provides the best data transfer performance among those that are minimally satisfying for the user's navigation experience. In the database, the browsing application that thus achieves this optimal yet minimally-satisfying performance is assigned, on a case-by-case basis for each popular website therein. In the unlikely event that no browsing application is found to offer a minimally-satisfying navigation experience to the user, the browsing application selected by the server for the database is simply the one that offers the best data transfer performance. In the equally unlikely event that, for a website, two or more browsing applications offer the same data transfer performance, and each provides a minimally-satisfying navigation experience to the user, the Proxy server selects for the database the browsing application that was rated the best for usability.
For example, supposing that there are only four candidate browsing applications—e.g., Chrome, Opera Mini, Safari and UC Browser—a database is created in which, for all of the most popular websites, one of these four browsing applications is assigned in application of the method described above. In this fictitious example, three websites are specifically analyzed in this way: yahoo.com (
By executing this process to all popular websites, a database is created, and it is saved in the Proxy server. In application of this embodiment of the invention, when a user requests a web page hosted in a web page server, the Proxy server's browser first checks if the website associated with that web page is listed in the database previously set up and saved in the Proxy server. If it is, the Proxy server's browser cloaks its actual identity and alters the browser-identification components of the User-Agent string that it establishes with this web page server so that it simulates the browsing application assigned to that website in the database. With reference to the database created in the example above and illustrated in
In a preferred embodiment of the process just disclosed, the Proxy server builds the entire database, for every popular website assigned in it, by assessing both usability and data transfer performance with a computer application run by the Proxy server. For usability, this computer application focuses on the interactive elements of a web page: elements that require an action by the user before they can perform their functions, such as buttons, text boxes, drop-down menus, etc. Obviously, when user input cannot be processed in elements that require interaction with the user, usability is substantially impaired. Some browsing applications are limited in this way whereby they cannot recognize some interactive elements in a web page nor, as a result, allow the user to interact with them. Usability in this preferred embodiment's database is thus measured with reference to this characteristic: for the first few image portions of some of the website's web pages that could be loaded and virtually displayed on the Proxy server by its browser, the computer application running on the Proxy server counts the number of interactive elements that are loaded, recognized and virtually displayed therein, on the basis of each potential browsing application that the Proxy server's browser could simulate. Beforehand, a threshold is predetermined to assess if the user's navigation is minimally-satisfying. For instance, usability could be considered minimally-satisfying when at least a specific percentage of the total interactive elements actually contained in the tested web pages are loaded, recognized and virtually displayed on the Proxy server by its browser, with respect to each browsing application that the Proxy server's browser could potentially mimic. As a sub-example, different interactive elements could be attributed different weights in calculating the percentage for this minimal threshold. Whatever the characteristics and thresholds that are selected, the computer application measures usability for each browsing application that could be assigned to the popular websites of the database.
In this preferred embodiment, where the process just disclosed is combined with the principal embodiment of this invention (or similar processes for data transfer), data sent to the Portable Device is constituted of compressed frames of elements in web page images. Therefore, comparisons in data transfer performance can be achieved with reference to the size of web page images loaded on the Proxy server's browser, with respect to each browsing application that it could potentially mimic. This method is actually integrated in this preferred embodiment, whereby the computer application run by the Proxy server evaluates data transfer performance: for the first few image portions of some of the website's web pages that could be loaded and virtually displayed on the Proxy server by its browser (which could be the same image portions as those that are analyzed for usability), the computer application calculates the size of these image portions, also based on each potential browsing application that the Proxy server's browser could mimic. The smaller the size of a web page's image portion that could be loaded on the Proxy server, the better the data transfer performance of its corresponding browsing application is. The computer application then relies on these measurements for both usability and data transfer performance to build the database, in the manner detailed in the general description of this process.
While this invention has been particularly shown and described with reference to an exemplary embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention. The invention in its broadest, and more specific aspects, is further described and defined in the claims which now follow.