Automated Code Splitting for Browser Responsiveness

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional network-based applications face performance bottlenecks due to large initial code downloads, leading to slow startup times and decreased responsiveness, especially over high-latency networks, and require manual and error-prone dynamic code loading design.

Innovation Solution

A code splitting tool automatically analyzes and rewrites application code to break it into small stubs and bodies, dynamically loading only necessary code on demand or in the background, optimizing code distribution based on network conditions, device capabilities, and user interactions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If the entire code base is downloaded from the server to the client, then the application can execute locally with reduced server load and improved interaction latency, but the initial download time and perceived responsiveness are significantly degraded

Engineering Contradiction:
Improveapplication responsivenessVSAvoidinitial download time
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The code base is divided into multiple code chunks or modules that are downloaded progressively rather than all at once. The critical path code is downloaded first to enable immediate execution, while non-critical code is loaded asynchronously in the background, resolving the contradiction between needing code for execution and minimizing download time.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary analysis to identify and prioritize which code chunks are essential for initial application execution versus which can be loaded later. By pre-determining the critical path code and downloading it first, the system enables faster initial responsiveness while deferring non-essential code downloads.

Inventive Principle:
Principle #10Preliminary action

2Loss of time

If manual dynamic code loading design is implemented, then code can be loaded on-demand to reduce download size, but the process becomes challenging and error-prone requiring developers to track dependencies and schedule downloads

Engineering Contradiction:
Improvedownload sizeVSAvoidcode design complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The system automatically analyzes the application code base, identifies dependencies between code chunks, and generates the necessary loading logic without manual intervention. The code transformation process self-determines which code to load, when to load it, and in what order, eliminating the need for developers to manually track dependencies and schedule downloads.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The code transformation process acts as an intermediary that automatically generates the complex dependency tracking and download scheduling logic. Instead of requiring developers to directly manage these complexities, the transformation process inserts automated code that handles dependency resolution and progressive loading, simplifying the overall design process.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS9405555B2Automated code splitting and pre-fetching for improving responsiveness of browser-based applications
Publication Date: 2016.08.02 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9405555B2 patent drawing
  • US9405555B2 patent drawing
  • US9405555B2 patent drawing

AI summary

A “code splitting tool” provides various techniques for automatically analyzing and rewriting existing browser-based applications to introduce dynamic code loading into those applications thereby improving perceived application responsiveness. Structural elements of application code (including functions, classes, etc.) are broken into small “stubs” with corresponding bodies. Rewritten applications then initially transfer only the portion of the code (including some combination of stubs and bodies) to the client as necessary for initial application execution. Additional stubs and/or bodies are then transferred either on-demand at runtime or in the background. Automated code rewriting proceeds without requiring any application-specific knowledge or changes to existing code prior to code rewriting. Further, the code splitting tool can tailor code rewriting to specific computing devices (computers, PDA's, cell phones, etc.), specific network conditions, and/or specific users, through an automated training process that creates clusters that control code downloads to optimize perceived application responsiveness.