In the case of client-side data fetching and rendering (CSR), time to the first byte is on the lower side than Isomorphic application. The SSR pages have view specific content on them, for which server do processing. This also increases the size of the page to be downloaded thus, increasing TTFB.



(Relative to CSR) Additional TTFB with Isomorphic = Server page processing time + time taken to download additional bits of increased page size

2. Lower server throughput:

In Isomorphic, the server fetches the data, processes it and generates the initial page to respond. The longer it takes, lower will be the server throughput which eventually has an impact on the end-end latency.



CSR:



In CSR application, you generate the assets on build time and upload them to CDN. The server will have the responsibility of generating the HTML page with assets embedded to it.



Isomorphic:



In Isomorphic/SSR with React, the server throughput impact is large. renderToString is synchronous CPU bound-call, which holds the event loop, which means the server will not be able to process any other request till the function call completes.



For this data point, we hosted the Isomorphic sample application and monitored the server throughput with a simple home page, containing the few HTML elements like anchor tags and text content.



Following is the server load which we put while testing it

The number of concurrent connection = 3000

Duration = 15 minutes

The number of pipelined requests = 1

There are two tables:

Table for the request latency, and Table for the request volume.

Request latency table lists the request times at the 2.5% percentile, the fast outliers; at 50%, the median; at 97.5%, the slow outliers; at 99%, the very slowest outliers. Here, lower means faster.

160 ms is the fastest response, 1 second 557 ms is the average and 10 seconds 32 ms is the slowest.

Request volume (2nd table) table lists the number of requests sent and the number of bytes downloaded. These values are sampled once per second. Higher values mean more requests were processed.

2.03 MB with 743 request per seconds is the worst case 4.88 MB with 1776.49 request per second is the average 8.19 MB with 2997 request per seconds is the best case

3. Constant time to page interaction

While the HTML page is being generated on the server and user will see the content earlier than the CSR application, but they can’t interact with it until javascript is done downloading and executing. Completion in Javascript execution will add events to the page, which are responsible to make page interactive like button click, navigation, input, etc. So, if the customer is really fast and clicking a button or page navigation, the browser won’t execute that action until Javascript execution is complete.