IP Library Granted Patent US 7,793,220
Granted Patent B1
US 7,793,220 · App. 09/767,365 · Granted Sep 7, 2010

Scalable derivative services

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,793,220
App. No.
09/767,365
Granted
Sep 7, 2010
Kind
B1
Abstract

An efficient method for parsing HTML pages identifies pages containing a mix of static and dynamic content. The pages are parsed to form abstract syntax trees (ASTs), which are then cached along with the pages. When a later version of a page is retrieved, it is compared against the cached version, and only those portions of the AST that contain different content are reparsed.

Claims (68)

1. A computer-implemented method for efficiently parsing received data files, comprising:

receiving, by a virtual browser executing on a server that is intermediary to a plurality of clients and a plurality of web servers, a data file from one of the plurality of web servers, responsive to a request by one of the plurality of clients;

determining that the received data file comprises an object that is not cached on the server;

determining whether the object is currently being tracked;

retrieving a previously stored version of the data file and a syntax tree comprising nodes and tokens representing data within the previously stored version of the data file, the syntax tree including at least one static node;

comparing the previously stored version of the data file with the received data file and identifying non-matching content in the received data file;

parsing only the non-matching content of the received data file;

updating the syntax tree by replacing the at least one static node of the syntax tree with a new token;

creating a mapping from the new token to a subtree in the syntax tree; and

storing the updated syntax tree.

2. The computer-implemented method of claim 1 wherein the data file is a web page.

3. The computer-implemented method of claim 1 wherein the data file is an HTML file.

4. A method for efficiently parsing web pages, comprising:

receiving, by a virtual browser executing on a server that is intermediary to a plurality of a clients and a plurality of web servers, an HTML page from one of the plurality of web servers, responsive to a request by one of the plurality of clients;

determining that the received HTML page comprises an object that is not cached on the device server;

determining whether the object is currently being tracked;

retrieving a previously cached version of the HTML page and a syntax tree comprising nodes and tokens representing data within the previously cached version of the HTML page, the syntax tree including at least one static node;

comparing the previously cached version of the HTML page with the received HTML page and identifying non-matching content in the received HTML page;

parsing only the non-matching content in the received HTML page;

updating the syntax tree by replacing the at least one static node of the syntax tree with a new token;

creating a mapping from the new token to a subtree in the syntax tree; and

storing the updated syntax tree and a most recent version of the HTML page.

5. A method for efficiently parsing HTML pages, comprising:

receiving, by a virtual browser executing on a server that is intermediary to a plurality of a clients and a plurality of web servers, an HTML page from one of the plurality of web servers, responsive to a request by one of the plurality of clients;

responsive to a determination that a previously cached version of the HTML page exists:

retrieving the previously cached version of the HTML page and a first syntax tree comprising nodes and tokens representing data within the previously cached version of the HTML page, the syntax tree including at least one static node;

comparing the previously cached version of the HTML page with the received HTML page and identifying non-matching content in the received HTML page;

parsing only the non-matching content in the received HTML page;

updating the syntax tree by replacing the at least one static node of the syntax tree with a new token; and

creating a mapping from the new token to a subtree in the syntax tree;

responsive to a determination that a previously cached version of the HTML page does not exist:

parsing the received HTML page and building a syntax tree comprising nodes and tokens representing content of the received data file, the syntax tree containing at only static nodes; and

storing the syntax tree and the received HTML page in a cache.

6. A method for efficiently parsing received data files, comprising:

receiving, by a virtual browser executing on a server that is intermediary to a plurality of clients and a plurality of web servers, a data file from one of the plurality of web servers, responsive to a request by one of the plurality of clients;

determining that the received data file comprises an object that is not cached on the server;

determining whether the object is currently being tracked;

retrieving a previously stored version of the data file and a syntax tree comprising nodes and tokens representing data within the previously stored version of the data file, the syntax tree including at least one static node;

comparing the previously stored version of the data file with the received data file and identifying non-matching content present only in the received data file;

parsing only the non-matching content of the first data file;

updating the syntax tree by replacing the at least one static node of the syntax tree with a new token;

mapping the new token to a subtree in the syntax tree; and

storing the updated syntax tree.

7. The method of claim 6 , further comprising:

responsive to identifying non-matching content present only in the received file:

adding the new token to the syntax tree.

8. A system for efficiently parsing input data from a plurality of content servers, comprising:

a server that is intermediary to a plurality of clients and a plurality of web servers, wherein the server performs the following functions:

receiving a data file from one of the plurality of web servers, responsive to a request by one of the plurality of clients;

determining that the received data file comprises an object that is not cached on the server;

determining whether the object is currently being tracked;

retrieving a previously stored version of the data file and a syntax tree comprising nodes and tokens representing data within the previously stored version of the data file, the syntax tree including at least one static node;

comparing the previously stored version of the data file with the received data file and identifying non-matching content in the received data file;

parsing only the non-matching content of the received data file;

updating the syntax tree by replacing the at least one static node of the syntax tree with a new token;

creating a mapping from the new token to a subtree in the syntax tree; and

storing the updated syntax tree.

9. A system for efficiently parsing received data files transmitted between a client and a server, the system comprising:

a server that is intermediary to a plurality of clients and a plurality of web servers, wherein the server performs the following functions:

receiving a data file from one of the plurality of web servers, responsive to a request by one of the plurality of clients;

determining that the received data file comprises an object that is not cached on the server;

determining whether the object is currently being tracked;

retrieving a previously stored version of the data file and a syntax tree comprising nodes and tokens representing data within the previously stored version of the data file, the syntax tree including at least one static node;

comparing the previously stored version of the data file with the received data file and identifying non-matching content in the received data file;

parsing only the non-matching content of the received data file;

updating the syntax tree by replacing the at least one static node of the syntax tree with a new token;

creating a mapping from the new token to a subtree in the syntax tree; and

storing the updated syntax tree.

Assignments (11)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Dec 15, 2011
From: TEROS, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 027388/0146 →
CHANGE OF NAME Recorded Nov 1, 2005
From: STRATUM8 CORPORATION
To: TEROS, INC.
Reel/Frame 016716/0598 →
CORRECTION OF RECORDATION COVER SHEET Recorded Oct 9, 2001
From: LIANG, SHENG; ZHANG, HONG; CHAUHAN, ABHISHEK; MIRANI, RAJIV; CHANG, OLIVER
To: STRATUM 8 CORPORATION
Reel/Frame 012244/0284 →