Server-Controlled Browser Navigation for Stateful Applications
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional browsers do not effectively communicate Back and Forward button actions to servers, leading to issues with stateful applications, where users may encounter invalid data or errors due to the browser's caching behavior, especially with HTTP GET and POST requests, and existing solutions like deactivating the Back button or preventing caching are inadequate.
Innovation Solution
Implementing a system where the server determines the actions to perform when the user clicks the Back or Forward button by loading invisible pages and specifying undo or redo requests, ensuring that the server updates the application state accordingly, thereby providing a real undo and redo functionality.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If the browser uses cached versions of pages for Back button navigation, then navigation speed is improved, but data validity deteriorates because the server is not aware of the navigation and may have changed the application state
Solution Approach 1:
The patent implements a feedback mechanism where the browser sends notifications to the server about Back and Forward button actions. The server responds by providing the current application state, ensuring the client has valid data while maintaining fast navigation through cached pages.
Solution Approach 2:
The patent uses preliminary action by having the server prepare and provide the current application state in advance before the user actually needs it. When the Back button is clicked, the browser already has the cached page for immediate display, and the server state is updated in the background to ensure consistency.
2Reliability
If the Back button is deactivated to prevent incorrect undo operations, then data validity is improved, but ease of operation deteriorates because users cannot navigate back even when appropriate
Solution Approach 1:
The patent makes the Back button dynamic by enabling it only when appropriate based on server response. The button's enabled state changes based on whether the server has processed the navigation request and confirmed the application state, allowing navigation when safe and preventing it when inappropriate.
Solution Approach 2:
The server provides feedback about whether Back navigation is appropriate by controlling the enabled state of the Back button. This feedback mechanism allows the button to remain active when navigation is safe while being deactivated only when it would cause problems, maintaining both reliability and usability.
3Reliability
If invisible pages are loaded to enable server-controlled navigation actions, then reliability is improved through proper state management, but device complexity increases due to additional page loading mechanisms
Solution Approach 1:
The patent extracts the navigation control logic from the visible application pages and places it in separate invisible pages. These dedicated invisible pages handle the Back and Forward button actions, separating concerns and making the system more maintainable despite the added complexity.
Solution Approach 2:
The invisible pages serve as intermediaries between the user's Back/Forward button clicks and the server's state management system. They translate user actions into proper server communication and coordinate the state changes, acting as a mediator that simplifies the overall interaction flow.
Data Source
AI summary
When a user clicks a Back button or a Forward button while reviewing an application page in a browser, the client performs an action in response which is specified by a server. The Back and Forward buttons may be controlled by the server and may be used to provide real undo and redo functionality for stateful server applications. The functionality may be implemented using invisible pages loaded in the browser. If it is determined that undo or redo cannot be performed, the client may continue to display the application page, optionally with a message to the user.


