Most of the time when I come into existing NetScaler deployments, it is often only deployed as a simple load balancer to do SharePoint / Exchange or some web front-end, while that is of course a viable option this can also be done with other viable options such as HAProxy, Nginx Plus and so on, but the advantages to NetScaler is how it can do web optimization to improve web application performance on existing web stuff without doing any changes to the existing code base.
Now this isnt magic, for most of the feature is use a set of differnent commonly used optimization features which are also pretty common in most web-servers today. So for instance if we look at a Windows Server 2016 IIS, the TCP settings for instance are default to LAN connection and not out to the internet, so we need to have some form of feature which adjustes the TCP traffic depending on if it is LAN traffic or WAN traffic, so what does the NetScaler bring to the table?
- Caching (Caching static content on the NetScaler for faster access to data)
HTTP Compression (Compressing HTTP content using either Deflate or GZIP)
SSL Optimization (Doing SSL offloading, using different policies, multiplexing to different backend resources)
TCP Optimization (Differnent TCP profiles, with custom congestion algoritm, increases buffer size)
Rewrite / Reponder policies (To redirect users to correct start URL, give better error description on 404 errors, redirect users based upon AD group)
Domain Sharding (an option if HTTP/2 is not an option)
HTTP/2 (Binary based transfer instead of old HTTP 1/1 which is text based improved transfer time)
Also it can give us analytics using NetScaler Insight / MAS on web traffic so we can get a clearer overview on how our website is performing using AppFlow.. It can also present stastics like user-agents, latency, if users are getting 404 errors and such.
Now just by enabling Web Optimization we can get alot of benefits to improve web performance. This is from one of the built-in policies in the web optimization feature. (NOTE: That is uses Caching by default)
I can also remove HTML comments from within the code before sending out the web page to the enduser. So for instance by adding this to our website can actually affect how well the website performance, as an example ill show below.
So now without any modifications to the policy, and having a couple of web requests going to my CRM system we can see that is has some effect to the page load
Images Lazy loaded means that the browser doesn’t need to download the entire picture at once, only when the user eventually scrolls down to that place where the image is placed then it will “lazy” load the picture.
Now with a minor adjustment to the policy I can also see HTML comments being removed from the website.
And images being converted to WebP Which consumes alot less space then regular PNG files on websites.
And Front-end optimization also uses Caching which stores static content on the NetScaler. You can also notice that caching module (which is enabled by default when setting up Front-end optimization is also caching static content as well.
For a CRM application this doesn’t give a lot of effect but still gives some benefits regardless if alot of the content is read directly from the backend database.
So this has been a overview and intro to front-end optimization, and will follow up on to HTTP/2 and comparing differences between regular HTTP 1/1 and comparison with sharding.