It is important that we don't push more data upstream than strictly necessary. You might have users on mobile networks and we want sessionstack.js to be optimal. Nevertheless, pushing data upstream doesn't create a user-visible performance impact in general.
The sessionstack.js sends data to our servers only when it's needed. This means that we're not constantly sending the state of the entire DOM, but rather batch and send only the changes that happen in the HTML (e.g. an element has been added). And we don't send data for each event, but rather batch the changes together.
The script also does not send externally-fetched CSS or images over the network, which often form the bulk of a page’s data. These are instead fetched later by the SessionStack's servers
The SessionStack servers are fetching CSS and images from your web app. This is needed, in case you make some changes to your stylesheets or images, we want to have their original versions when the session was monitored.
In order to minimize these extra requests we make to your servers, SessionStack employs two levels of caching. The first is a standard HTTP client cache, which both respects standard cache headers and includes rate-limiting to ensure that it doesn’t fetch too frequently even if the cache headers are incorrect. The second tier creates a version control-like storage for your static files. Before fetching static files and storing them, we're checking whether we don't already have this file stored and if this is the case, we're re-using it.
Updated over 4 years ago