Diffing Engine for Webpage State Synchronization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Traditional data compression techniques are inefficient for transmitting user interface information and executable code, especially when only small portions of data are updated, as they can be compute-intensive and unsuitable for frequent transmission, leading to potential data loss during communication.

Innovation Solution

A diffing engine is used to transmit data as incremental changes (differences), with a mechanism to automatically send the complete webpage from the server to the client in case of transmission errors, utilizing hash values to ensure data integrity and synchronization between the server and client.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of energy

If traditional data compression techniques are used to transmit user interface information, then bandwidth consumption is reduced, but the data transmission becomes compute-intensive and time-consuming

Engineering Contradiction:
Improvebandwidth consumptionVSAvoiddata transmission time
Core Design Contradiction:
Loss of energyVSLoss of time

Solution Approach 1:

The patent segments the data transmission process into two distinct phases: (1) transmitting the complete data set initially, and (2) transmitting only incremental changes (differences) subsequently. This segmentation allows the system to benefit from compression for small updates while maintaining the ability to recover from transmission errors by requesting the complete data set again, thus resolving the contradiction between reduced bandwidth usage and transmission reliability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements preliminary action by sending the complete data set before sending incremental changes. This ensures that the receiver has the full data context available before applying differences, enabling error recovery without requiring retransmission of the entire data set. This preliminary transmission establishes a foundation that reduces subsequent bandwidth needs while maintaining transmission efficiency.

Inventive Principle:
Principle #10Preliminary action

2Loss of energy

If incremental changes are transmitted instead of complete data sets, then bandwidth consumption is minimized, but data integrity cannot be ensured when transmission errors occur

Engineering Contradiction:
Improvebandwidth consumptionVSAvoiddata integrity
Core Design Contradiction:
Loss of energyVSReliability

Solution Approach 1:

The patent implements feedback mechanisms where the receiver sends acknowledgments to the transmitter about the successful application of incremental changes. When transmission errors are detected (either through acknowledgment failures or explicit error notifications), the system triggers a feedback loop that requests retransmission of the complete data set. This feedback ensures data integrity while maintaining bandwidth efficiency for successful transmissions.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The patent prepares for potential transmission errors by maintaining the complete data set at the transmitter before incremental changes are sent. This 'cushioning' ensures that if an error occurs during incremental transmission, the complete data set is already available for retransmission, protecting against data integrity issues without requiring complex error correction codes that would increase bandwidth consumption.

Inventive Principle:
Principle #11Beforehand cushioning (Prior cushioning)

3Reliability

If complete data sets are transmitted frequently, then data synchronization between server and client is maintained, but bandwidth consumption increases significantly

Engineering Contradiction:
Improvedata synchronizationVSAvoidbandwidth consumption
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The patent implements dynamic data transmission by adapting the transmission strategy based on the current state of the data and the receiver's needs. Instead of transmitting complete data sets at fixed intervals, the system dynamically switches between transmitting complete sets and transmitting only incremental changes. This dynamic approach maintains data synchronization while minimizing bandwidth consumption by transmitting only what is necessary at each moment.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the transmission parameter from fixed-interval complete data transmission to variable-interval differential transmission. The system monitors data changes and transmission success, adjusting the transmission strategy accordingly. When data changes are minor and transmission is successful, only differences are transmitted. When errors occur or significant changes happen, complete data sets are transmitted. This parameter change optimizes bandwidth usage while maintaining synchronization reliability.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10063617B2Error correction using state information of data
Publication Date: 2018.08.28 META PLATFORMS INC
  • US10063617B2 patent drawing
  • US10063617B2 patent drawing
  • US10063617B2 patent drawing

AI summary

The disclosure is directed to error correction in transmission of data whose state is to be synchronized between a server and a client. When data, e.g., a web page, changes at the server, the changes are sent to the client as a sequence of diffs, where each diff represents an incremental change in the state of the data over a previous diff in the sequence. This can eliminate the need to transmit the whole webpage whenever the web page changes. If a diff is lost in transmission, the state of the webpage at the client becomes invalid. To overcome this problem, the server sends a hash of the webpage state at the server to the client, e.g., at specified intervals. The client or server can compute a hash of the webpage state and compare both the hashes. If they don't match, the client receives the whole webpage.