DOM Capturing

Document Object Model (DOM) capturing is the method unblu uses (in embedded co-browsing) to recreate the visitor browser for the agent.

DOM capturing’ uses JavaScript, running in the visitor browser, to transfer the visual state (a ‘clone’) of the visitor browser to an agent, without the need for any installation on the visitor side. This visual state is independent of how the visitor got to where they are, and how complicated it was for the web application to display the current state.

Limitations of DOM Capturing

While this is an ideal solution for servicing visitors, without the need for any downloads on the visitor side, there are a number of technical and performance issues to consider.

To create a visual representation of the client's browser, the JavaScript must process all DOM nodes on a page and send this to the agent's browser. unblu DOM capturing is based on a JavaScript library. JavaScript is interpreted and therefore dependent on the parsing speed of the browser, the complexity of the DOM, and the power of the underlying hardware. Any of those areas could affect performance.

Symptoms of Performance Problems

Performance problems will show themselves as:

  1. The browser displays a warning to the client that a long-running JavaScript script has been detected.
  2. The user cannot scroll or interact with the website until the JavaScript run is finished.
  3. The browser cannot communicate with the unblu server until the JavaScript run is finished.

The first two problems create a sub-par user experience but the third problem is critical. After a timeout is reached the unblu server will assume that the browser has stalled but it cannot know the 'reason' for the problem.

Performance Factors

The JavaScript needs to be able to capture the DOM within a reasonable time frame. There are three variables which define the performance:

  1. Browser performance (executing the JavaScript).
  2. Power of the underlying hardware.
  3. Complexity of the Document Object Model (DOM).

Complexity of the DOM

The unblu server has a feature that will detect whether the page complexity (number of DOM nodes) exceeds a (configurable) limit. If the complexity of the DOM tree exceeds this limit the server will abort processing and a 'Page too Complex' message will display.

Unfortunately, simply defining this limit (using com.unblu.recorder.maxNodes=[configuration value]) will likely not solve the problem on its own. This value is set to 45,000 by default.

We do not recommend increasing this default value. For example, even if the complexity is lower than the default value it may still be 'too complex' and generate a warning.

Note: Node-processing capacity was tripled, from 15,000 to 45,000 in the move from unblu version 4.1 to 4.2. Therefore, if you are using a version prior to 4.2 simply upgrading your installation may solve potential problems.

Solving Performance Problems

Before attempting to tweak browsers and upgrade hardware you should be aware that, strictly speaking, there is only one guaranteed way to fix this problem:

Page Design

While more memory, faster processors, etc., can manage this problem they are not a fix, per se. Even the fastest browser running on a fast machine can hit limits. For example, as new pages are orchestrated to run unblu the chances increase that some may bump up against DOM complexity.

The only way to truly eliminate this limitation is to use Web paging when designing your pages. By dividing potential complexity across discrete web pages you solve any potential DOM complexity problems at source.

Workarounds

If, for whatever reason, you are unable to implement Web paging and, given that it is unlikely you would be able to upgrade visitor hardware, you could try to encourage your visitors to use a modern browser (e.g., Google Chrome). However, you should bear in the mind that this may or may not work, according to the complexity of the pages on your site.

Embedded Co-browsing

Limitations of Embedded Co-Browsing

Resource Histories

Universal and Document Co-browsing (Optional)

Memory Handling

  • deployonprem

results matching ""

    No results matching ""