A solution that improves a user's experience while surfing the Internet. An intermediate device resides logically between a browsing device and content available via the Internet. As responses to content requests from browsing devices are received from a content server, browser links are identified and modified, disabled or covered for example. The intermediate device also creates a browser link to a compound browser object(s) that is created and stored at the intermediate device. This created browser link invokes code at the intermediate device to upload the compound browser object(s). The intermediate device obtains these compound browser objects by obtaining content associated with the identified browser links either from a content server, a local cache or knowledge of its existence eat the browser device.
Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.
1. A method that improves data transportation between a plurality of endpoints and a plurality of content servers, wherein the transportation between the endpoints and the content servers is based on the Internet Protocol (“IP”), the method comprising the actions of: intercepting a data transportation between the plurality of endpoints and the plurality of content severs at an intermediate device, wherein the data transportation is a markup language (“ML”) file originating from a content server and directed toward a destination endpoint that requested the ML file; modifying the intercepted ML file to add: a browser link associated with a compound object; and an instruction to activate a software code that is embedded within the compound object; sending the modified ML file toward the destination endpoint; the intermediate device receiving a request from the destination endpoint for the compound object, wherein the request was generated by the destination endpoint because of the added browser link associated with the compound object; the intermediate device responding to the request for the compound object by: identifying and retrieving one or more browser objects from a cache; embedding the retrieved one or more browser objects into the compound object; embedding the software code into the compound object; and sending the compound object to the destination endpoint; wherein the software code, when activated at the destination endpoint per the added instruction, is operable to adapt the modified ML file to enable retrieval of the one or more browser objects that were embedded into the compound object.
An intermediate server accelerates web browsing between users and content servers by intercepting web page data (HTML, XML) on its way to a user. The server modifies the page by adding a link to a "compound object" stored on the intermediate server and includes instructions to run code (e.g., Javascript) embedded in the compound object. When the user's browser requests the compound object (because of the added link), the intermediate server creates the compound object by combining cached web page resources (images, scripts, stylesheets) related to the original web page with the software code. The intermediate server then sends the compound object to the user. The code, when run in the user's browser, adapts the modified web page so the retrieved resources from the compound object are used in the webpage.
2. The method of claim 1 , wherein the software code enabling retrieval of the one or more browser objects comprises instructing a browser application at the destination endpoint to: verify that the browser object is included in the compound object; and if the browser object is included in the compound object, then uncover a browser link associated with the browser and modify the uncovered browser link to point to the compound object; and if the browser object is not included in the compound object, then searching for a next covered browser link.
The software code (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers) instructs the user's browser to check if a particular web resource (image, script) is in the compound object. If it is, the code reveals the original, hidden link to that resource and changes it to point to the resource within the compound object. If the resource is *not* in the compound object, the code moves on to check the next hidden link. This allows resources in the compound object to be displayed or executed, effectively replacing the original links with links to resources in the compound object.
3. The method of claim 1 , wherein the software code enabling retrieval of the one or more browser objects comprises instructing a browser application at the destination endpoint to: verify that the browser object is included in the compound object; and if the browser object is not included in the compound object, then convert the link associated with the compound object into a link that points to the browser object.
The software code (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers) instructs the user's browser to check if a particular web resource (image, script) is in the compound object. If the resource is *not* in the compound object, the code changes the original link associated with the compound object to directly point to that missing web resource. This ensures that if a resource isn't available in the compound object, the browser still tries to fetch it from its original location using the original URL.
4. The method of claim 1 , wherein the browser link associated with the compound object represents a uniform resource locator (“URL”) for the one or more browser objects embedded into the compound object, and the action of identifying and retrieving one or more browser objects utilizes this URL.
The link to the "compound object" (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers) acts as a URL (web address) listing the addresses of all the web resources (images, scripts, stylesheets) contained inside it. The intermediate server can then use this URL (or parts of it) to find and retrieve these web resources from its cache or from the original content server when creating the compound object. This ensures the compound object contains the correct resources.
5. The method of claim 1 , wherein the action of modifying an intercepted ML file to add a browser link associated with the compound object and an instruction to activate a software code further comprises including a link for requesting the software code.
When the intermediate server modifies a web page (HTML, XML) (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers) it includes a link to the "compound object" *and* a separate link to retrieve the software code that will use the contents in the compound object. The separate link ensures the software code can be loaded and executed, to use the compound object's content.
6. The method of claim 1 , wherein the action of embedding the retrieved browser objects into the compound object further comprises creating a multipart object that complies with Microsoft mhtml scheme.
The intermediate server (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers) creates the "compound object" by assembling the embedded resources into a single file formatted according to the Microsoft mhtml standard. This standard allows multiple web resources (HTML, images, etc.) to be combined into a single file, making it easier to transmit and manage as a single unit.
7. The method of claim 1 , wherein the action of embedding the software code into the compound object further comprises embedding software code that is a JavaScript.
The software code that adapts the web page (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers) is written in JavaScript. JavaScript can then manipulate the page contents, enabling interaction with the compound object's contents.
8. The method of claim 1 , wherein the action of modifying an intercepted ML file further comprises the action of modifying an HTML file.
The intermediate server modifies an HTML file (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers) when intercepting web page data. The intermediate server improves data transportation between endpoints and content servers.
9. The method of claim 1 , further comprising the action of processing the intercepted ML file by: searching the ML file for browser links; and for each browser link found: calculating a hash value that represents a URL for the browser link; and covering the browser link.
The intermediate server first scans the intercepted web page (HTML, XML) (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers) for web links. For each link found, it calculates a unique "hash" value representing the URL of that link and then hides or "covers" the original link on the page.
10. The method of claim 9 , wherein the action of modifying the intercepted ML file to add a browser link associated with a compound object further comprises including the hash values of the URL of the one or more browser objects embedded into the compound object.
When the intermediate server modifies a web page and adds a link to a "compound object" (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers where the intermediate server scans the intercepted web page (HTML, XML) for web links), it also includes the "hash" values of the URLs of the web resources contained inside the compound object. These hash values allows the software code on the user's machine to verify the correct resources are extracted from the compound object.
11. The method of claim 9 , wherein the action of embedding the software code further comprises embedding a software code that, when executed by the browser application, is capable of removing the cover from browser links of objects that are embedded in the compound object.
The software code (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers where the intermediate server scans the intercepted web page (HTML, XML) for web links) when executed by the user's browser, removes the "cover" (hiding) from the original links to web resources contained within the compound object, making them accessible and useable by the browser.
12. The method of claim 9 , wherein the action of processing the intercepted ML file further comprises the action of associating a second software code with the modified ML file that is operable to remove the covers from one or more left behind covered browser links.
The intermediate server associates a *second* software code with the modified web page (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers where the intermediate server scans the intercepted web page (HTML, XML) for web links) that removes the "covers" (hiding) from any original links that were not included within the compound object and therefore left behind. This ensures even non-cached resources are still accessible.
13. The method of claim 1 , further comprising the action of maintaining information about previous compound objects that were sent to a destination endpoint.
The intermediate server keeps track of the "compound objects" it has previously sent to a specific user device (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers).
14. The method of claim 13 , wherein the action of maintaining the information about previous compound objects further comprises implementing the action by a cookie mechanism.
The intermediate server uses browser cookies to store information about the previous compound objects sent to a specific user device (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers where the intermediate server keeps track of the "compound objects" it has previously sent to a specific user device).
15. The method of claim 13 , wherein the action of embedding the one or more retrieved browser objects into the compound object further comprises embedding browser objects that were not embedded into a previous compound object sent toward the destination endpoint.
The intermediate server only includes web resources in the "compound object" (from the method that improves data transportation between a plurality of endpoints and a plurality of content servers where the intermediate server keeps track of the "compound objects" it has previously sent to a specific user device) if those resources were *not* already sent to that user device in a previous compound object. This prevents redundant data transfer, only the resources which are not already downloaded in the previous compound object are embedded into the new compound object.
16. A Surfing-Accelerating Server (“SAS”) that improves the transportation of markup language (“ML”) content between a plurality of endpoints and a plurality of servers, comprising: a memory; an ML file handler processor configured to: process a received ML file and modify it to add a browser link associated with a compound object and an instruction to activate a software code that is embedded within the compound object; and send the modified ML file toward a destination endpoint; and a request handler processor configured to respond to a request from the destination endpoint for the compound object by: identifying and retrieving one or more browser objects; embedding the retrieved one or more browser objects into the compound object; embedding the software code into the compound object; and sending the compound object toward the destination object; wherein the software code, when activated by a browser of the destination endpoint per the added instruction, is operable to adapt the modified ML file to enable retrieval of objects that are associated with the compound object; wherein the SAS is installed in an intermediate node positioned between the plurality of endpoints and the plurality of servers and wherein the communication between the endpoints and the servers is based on Internet Protocol (IP); and wherein the compound object comprises two or more independent browser objects, each browser object being an object that is fetched automatically by the browser.
A "Surfing-Accelerating Server" (SAS) sits between users and content servers to speed up web page delivery. It contains memory and processors. One processor modifies web pages by adding a link to a "compound object" and instructions to run software code inside the object. Another processor handles requests for the compound object. It retrieves web resources, embeds them and the software code into the object, and sends the object to the user. The code, when run in the user's browser, adapts the page to retrieve resources from the compound object. Communication between endpoints and servers is based on Internet Protocol (IP). The compound object contains multiple independent web resources that would normally be downloaded separately by the browser.
17. The SAS of claim 16 , wherein the browser link to the compound object comprises at least a portion of a URL associated with one or more browser objects to be embedded into the compound object.
The link to the "compound object" (from the Surfing-Accelerating Server that improves the transportation of markup language content between a plurality of endpoints and a plurality of servers) includes at least part of the URL (web address) of the web resources to be embedded inside that compound object.
18. The SAS of claim 16 , wherein the software code is JavaScript.
The software code used to adapt the web page (from the Surfing-Accelerating Server that improves the transportation of markup language content between a plurality of endpoints and a plurality of servers) is JavaScript.
19. The SAS of claim 16 , wherein the compound object is a multipart object.
The "compound object" (from the Surfing-Accelerating Server that improves the transportation of markup language content between a plurality of endpoints and a plurality of servers) is formatted as a multipart object, such as an mhtml archive, so multiple web resources can be bundled into one file.
20. A method, employed by an intermediate server residing between a plurality of user devices and a plurality of content servers, that accelerates the delivery of markup language (“ML”) content to a requesting device, comprising: receiving from a content server a response to a request from a user device for ML content; parsing the received response for one or more browser links, wherein each browser link points to a unique browser object; modifying the one or more browser links; embedding in the parsed response: a browser link that identifies a compound browser object located at the intermediate device; and an executable function; creating the compound browser object by retrieving the unique browser objects associated with the one or more browser links, wherein the unique browser objects retrieved have not been previously obtained by the requesting user device; and creating the executable function, wherein the executable function, when executed by the requesting user device, will operate to transmit the compound browser object to the requesting user device; wherein a browser object is an object that is fetched automatically by the browser.
An intermediate server speeds up web page delivery by intercepting web page responses from content servers. It analyzes the page for web links to individual web resources. It modifies those links, and embeds a link to a "compound object" on the intermediate server, plus an executable function. The server creates the compound object by gathering those resources that have not been previously obtained by the requesting device. The executable function, when run by the requesting device, transmits the compound browser object to the requesting user device. A browser object is an object that is fetched automatically by the browser.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
September 26, 2008
March 21, 2017
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.