BlueConic performance

This article will offer some insight into how BlueConic works and provide you with tips on how to keep performance of your server in the best shape.

Request flow

To get a better understanding of how BlueConic works from a browser's point of view it is important to break down the client-side performance into 3 parts:

  • The loading time for the first page view of the first visit
  • The loading time for subsequent page views
  • The script execution time

The following request flow visualizes all 3 aspects:

script.png

The first request from the browser to BlueConic will load the BlueConic client-side API. This request is triggered by the script which has been placed on every page of the website.
Our script is being served by the Amazon CloudFront Content Delivery Network which ensures speedy delivery from a server location near the visitor. Since this script rarely changes it can usually be retrieved from the browser cache.

Next, the API will trigger two requests which will load the visitor's profile and profile properties. The visitor is recognized by a cookie ('BCSessionID') which contains a unique identifier. If no profile is available a new one will be created and the unique identifier for that new profile is returned to the browser in a cookie.

Based on the visitor's profile and the current location (URL) the configured connections, listeners and interactions are now executed. First the plugins, which contain the actual JavaScript code for the connections, listeners and interactions, and any libraries the plugins require are loaded onto the browser. All plugins (and libraries) which have active connections, listeners or interactions in BlueConic are loaded at once.

After the plugins and libraries have loaded, the scripts are executed. Script execution time is mainly determined by the amount and nature of configured listeners and interactions.

Tip: Restrict your listeners as much as possible to those URL's where the listeners are actually relevant. This article offers tips on how to specify URL restrictions.

Tip: Deactivate or remove listeners and interactions that are no longer relevant. 

Tip: Bundle listener rules as much as possible into a single listener.

 

FAQ

I see multiple requests going back and forth between the browser and BlueConic?
Correct! The number of requests depends on the configured connections, listeners and interactions and the actions of the user. These requests are all asynchronous and will not block page rendering (i.e. they will not delay the "DOM ready" event).
Is the page loading time affected by BlueConic?
Yes, but the effect is only fractional and should not be noticeable to the visitor due to the use of asynchronous requests. Our script is being served by Amazon CloudFront and will not be impacted by high traffic volume on your websites. Due to the extra requests, the DOM "load" event will be delayed.
Some requests seem data heavy?
Specifically the first page view of the first visit will see requests that transfer a lot of data as the client-side API, plugins and library have to be transferred to the browser. However, the API, plugins and library requests are static and will be cached for a year. Once the browser has these, subsequent views will retrieve them from the browser cache. As a result subsequent views will only use small REST calls. BlueConic uses minification and gzip to keep transfers to a minimum.