Front end optimization

January 6, 2019

| Contributed by:

Note: Front end optimization is available if you have an Enterprise or Platinum NetScaler license and are running NetScaler release 10.5 or later.

The HTTP protocols that underlie web applications were originally developed to support transmission and rendering of simple web pages. New technologies such as JavaScript and cascading style sheets (CSS), and new media types such as Flash videos and graphics-rich images, place heavy demands on front-end performance, that is, on performance at the browser level.

The NetScaler front end optimization (FEO) feature addresses such issues and reduces the load time and render time of web pages by:

Reducing the number of requests.

Required for rendering each page.

Reducing the number of bytes in page responses.

Simplifying and optimizing the content served to the client browser.

You can customize your FEO configuration to provide the best results for your users. NetScalers support numerous web content optimizations for both desktop and mobile users. The following tables describe the front-end optimizations provided by the FEO feature, and the operations performed on different types of files.

Optimizations performed by the FEO feature

Web Optimization

Problem

What NetScaler FEO feature does

Benefits

Inlining

Client browsers often send multiple requests to servers for loading external CSS, images, and JavaScript associated with the web page.

CSS inline, JavaScript inline, CSS combine

Loading the external CSS, images, and JavaScript inline with the HTML files improves page-rendering time. This optimization is beneficial for content that will be viewed only once, and for mobile devices that have limited cache sizes.

Minification

Data fetched from servers includes inessential characters such as white spaces, comments, and newline characters. The time that browsers spend in processing such data creates website latency.

CSS minification, JavaScript minification, Removal of HTML comments

Minified files consume less bandwidth and avoid the latency caused by special processing.

Image optimization

Mobile browsers often have slow connection speeds and limited cache memory. Downloading images on mobile clients consumes more bandwidth, processing time, and cache space, resulting in web site latency.

Repositions HTML elements, to reduce rendering time for web pages and enable client browsers to load the objects faster.

Connection Management

Many browsers set limits on the number of simultaneous connections that can be established to a single domain. This can cause browsers to download webpage resources one at a time, resulting in higher browsers time.

Domain sharding

Overcomes the connection limitation, which improves page-rendering time by enabling client browsers to download more resources in parallel.

Web Optimizations performed on different file types:

The following table lists the web optimizations that the NetScaler performs on CSS, Images, JavaScript, and HTML.

|Object|Optimization|
|— |— |
|CSS|Minify linked CSS files, Combine multiple linked CSS files that are present within the head tag into a single CSS file, Convert linked CSS files to inline CSS files, Convert CSS import rule to linked CSS. Note: This optimization works if you have not defined the scope and media attributes for the import tag and when the import tag immediately follows the style tag, Within a linked CSS file, convert linked images to inline images, Move a CSS present within the body tag of an HTML page to the head tag. Note: The head tag must already be present within the HTML script.|
|Images|1. Optimize JPEG images by removing extraneous bytes. 2. Reduce image size by weakening the image quality to a value specified in FEO parameters. 3. Image shrink to attributes. 4. Convert linked images to inline images. Note: For animated images in GIF format, only this optimization is supported. 5. Convert non-animated images in GIF format to PNG format. 6. Reduce the image size to that specified on the web page, if the size specified on the web page is smaller. 7. Convert images in GIF, PNG, JPEG format to WebP format. 8. Convert images in JPEG format to JPER-XR format. 9. Lazy loading.|
|JavaScript|1. Minify linked JavaScript. 2. Convert linked JavaScript to inline JavaScript. 3. Move JavaScript present in the body tag to the end of the body tag. Note: The size of the body tag must be lesser than 64 Kbytes. 5. Extend cache expiry period.**|
|HTML|Remove Comments from HTML (Removes comments within the HTML files)|

Note:
The front end optimization feature supports ASCII characters only. It does not support the unicode character set.

How front end optimization works

After the NetScaler receives the response from the server:

Parses the contents of the page, creates an entry in the cache (wherever applicable), and applies the FEO policy.

For example, a NetScaler can apply the following optimization rules:

Remove white spaces or comments present within a CSS or JavaScript.

Combine one or more CSS files to one file.

Convert GIF image format to PNG format.

Rewrites the embedded objects and saves the optimized content in the cache, with a different signature than the one used for the initial cache entry.

For subsequent requests, fetches the optimized objects from the cache, not from the server, and forwards the responses to the client.

Remove extraneous information such as white spaces and comments.

**
Remove extraneous information such as white spaces and comments.

The period during which the browser can use the cached resource without checking to see if fresh content is available on the server.

Configure front end optimization

Optionally, you can change the values of the front end optimization global settings. Otherwise, begin by creating actions that specify the optimization rules to be applied to the embedded objects.

After configuring actions, create policies, each with a rule specifying a type of request for which to optimize the response, and associate the actions with the policies.

Note: The NetScaler evaluates front end optimization policies at request time only, not at response time.

To put the policies into effect, bind them to bind points. You can bind a policy globally, so that it applies to all traffic that flows through the NetScaler, or you can bind the policy to a load balancing or content switching virtual server of type HTTP or SSL. When you bind a policy, assign it a priority. A lower priority number indicates a higher value. The NetScaler applies the policies in the order of their priorities.

Prerequisites

Front end optimization requires the NetScaler integrated caching feature to be enabled. Additionally, you must perform the following integrated caching configurations:

Allocate cache memory.

Set the maximum response size and memory limit for a default cache content group.

Click the Graphical View tab to display the rate of requests processed by the FEO feature.

Sample optimization:

Refer to the Sample pdf for some examples of content optimization actions that are applied on HTML content and the embedded objects within the HTML content.

The official version of this content is in English. Some of the Citrix documentation content is machine translated for your convenience only. Citrix has no control over machine-translated content, which may contain errors, inaccuracies or unsuitable language. No warranty of any kind, either expressed or implied, is made as to the accuracy, reliability, suitability, or correctness of any translations made from the English original into any other language, or that your Citrix product or service conforms to any machine translated content, and any warranty provided under the applicable end user license agreement or terms of service, or any other agreement with Citrix, that the product or service conforms with any documentation shall not apply to the extent that such documentation has been machine translated. Citrix will not be held responsible for any damage or issues that may arise from using machine-translated content.