Client-Side Web Resource Versioning in Stateless REST Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In REST-compliant systems, maintaining different versions of web resources is challenging due to the stateless nature of servers, which do not store user context, making it difficult to revert or restore resources to previous states without client-side intervention.

Innovation Solution

A client-side application intercepts modification requests, retrieves and stores representations of web resources in their original state using GET requests, and stores them locally, allowing for undo and redo operations by restoring the resource to its original or modified state using PUT or POST requests.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If the server operates in a stateless environment without storing user context, then server complexity and memory usage are reduced, but the ability to maintain and revert resource versions is lost

Engineering Contradiction:
Improveserver complexityVSAvoidversion management capability
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent introduces a client-side intermediary (the web browser with local storage) that mediates between the user and the stateless server. This intermediary maintains the version history and context locally, allowing the server to remain simple while the client handles version management. The client stores representations of resources in local storage and manages undo/redo operations without requiring server-side context retention.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Quantity of substance

If the server does not store user context between requests, then server memory usage is reduced, but the client cannot perform undo operations without retrieving original state from server

Engineering Contradiction:
Improveserver memory usageVSAvoidtime to retrieve original state
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The patent applies preliminary action by storing representations of resources in their original state in the client's local storage before modifications are made. When a user wants to undo a change, the original state is already available locally, eliminating the need to retrieve it from the server and reducing the time required for undo operations.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If the client stores multiple versions of web resources locally, then undo and redo operations become possible, but client storage requirements increase

Engineering Contradiction:
Improveundo and redo functionalityVSAvoidclient storage volume
Core Design Contradiction:
Ease of operationVSVolume of stationary object

Solution Approach 1:

The patent uses copying by storing representations of resource states in the client's local storage rather than maintaining multiple full copies of resources on the server. The client captures and stores serializable representations of the resource state at key moments (initial load, after modifications), enabling undo/redo operations while keeping storage requirements manageable through selective copying of state representations.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS9723078B2Temporary content versioning on a client in a rest-based system
Publication Date: 2017.08.01 ADOBE INC
  • US9723078B2 patent drawing
  • US9723078B2 patent drawing
  • US9723078B2 patent drawing

AI summary

Techniques are disclosed for maintaining different versions of a web resource. A client-side application observes and tracks all asynchronous requests for web resources sent from the client to a server. Every time a user attempts to modify a resource on the server, the application stops or otherwise pauses the execution of the request and retrieves a representation of the resource from the server in an original state. The representation is stored locally on the client in a local storage, such as browser persistent storage, and may be stored with a timestamp and the corresponding resource URL. Subsequently, the request to modify the resource is executed. In this manner, a representation of the resource is retained in an original state prior to modification. The locally-stored representation can be used to restore the resource back to the original state in response to a so-called undo request by the user.