Archive | Performance RSS for this section

Runtime optimized JavaScript and CSS resources – some results

In Notes/Domino 8.5.3, there is a new setting on the XPages tab of the Application Properties called Use runtime optimized JavaScript and CSS resources.

Runtime Optimized JS

Methodology

I put it to the test on two applications and loaded several pages 5 times each and, using firebug (on the Net tab), noted the amount of data loaded and the load time.

Firebug_Net

Results

In the first database, I opened a page with a view panel and a page with a similar view panel, but a full-text search executed against it. I also opened a page with a document in edit mode and a page with a document in read mode.

This database uses several dojo components (in edit mode of the form), a dojo tabbed table on the form, and some dojo logic around the page with the view panel. It has a few small stylesheets, but uses the OneUI application layout, so there are plenty of stylesheets involved.

Database 1

Without Optimization With Optimization
Page Size Load Time Size Load Time
View 21k 1.78s 7k 0.96s
View-Search 7.5k 1.38s 7.3k 1.12s
Document-Edit 13.7k 2.33s 6.7k 1.47s
Document-Read 11.4k 1.18s 4.5k 0.99s

There are significant improvements in the size of the files loaded and the loading performance.

In the second database, I tested with a page loading an ExtJS grid, so it uses grid libraries and stylesheets, along with jQuery. The database also uses the OneUIv2.1 theme.

Database 2

Without Optimization With Optimization
Page Size Load Time Size Load Time
ExtJS Grid 3.2m 3.02s 3.2m 3.15s

It changed the total number of GET requests on the page from 38 to 33.

A Better Understanding

Initially, I was surprised that it didn’t make a noticeable difference in the second database, so I looked into it further and found that it is intended to improve the loading of dojo modules. It is not going to help with any external javascript libraries that you include in your application. (Quite frankly, they should already be optimized for you.)

Here’s how the What’s new in Domino Designer 8.5.3 page in the DDE help file describes it:

For performance reasons, the XPages runtime now features a new option that dynamically aggregates multiple Dojo modules, or multiple CSSs into a single file. This results in the following performance improvements:

  • a decrease in requests sent from the browser to the server
  • an increase in user performance, particularly in the context of networks with high latency
  • an increase in the speed of JS/CSS parsing from the browser
  • the freeing up of server connections to fulfill other requests

As an extreme example of the saving, let’s say the XPages Extension Library is using the page DWA_ListView.xsp. Without the aggregator enabled, 82 requests are made to the server. With the aggregator enabled, the count decreases to 6 requests, including the Ajax request that gets the data. Also, a test run on processing time might see changes from ~4 sec to ~800 ms.

Your results?

Of course, your mileage may vary. I see that Julian Buss had impressive results with a test, but I haven’t seen a lot documented.

If you’ve tested this out, what kind of results have you seen?

Advertisements