This article details some common combinations of HTML content and WebAccelerator settings that may give unexpected results, and makes some recommendations to resolve them. (Technical details provided by Mr. Patrick Chang, WAI (WebAccelerator Illuminatus) and valued member of F5's West Coast Field Services team. Thanks, Pat!)

1.   Content is re-validated before Maximum Age is reached

Look at:   Lifetime rules and Maximum Age
The WebAccelerator Cache settings are completely independent of the Client Cache settings: The Client Cache settings determine which cache headers are sent to the browser, while the WebAccelerator Cache settings determine how content is cached on the WebAccelerator. Maximum Age determines how long content will be cached on the WebAccelerator. The WebAccelerator HTTP Lifetime Heuristic watches the Last-Modified dates for each object to determine whether or not the WebAccelerator will check the real web server for updated content before the Maximum Age is reached.

Recommendation:
In most cases you should leave the Lifetime rules at their default settings, and allow WebAccelerator's Lifetime Heuristic to refresh objects that appear to be regularly modified before Max Age is reached.

2.   IBR (Intelligent Browser Referencing) and/or Minimum Age settings are ignored

Look at:   "Meta Tag: Refresh", IBR, and Minimum Age
Some HTML pages contain the meta tag: Refresh. The presence of this tag causes the browser to re-validate all content on this page. Thus, this tag will override Intelligent Browser Referencing and any Minimum Age setting configured in the "Lifetime -> Client Cache" settings.

Recommendation:
Eliminate the Refresh tags from the HTML pages for which you want to configure IBR or the Minimum Age validation parameter. A stream profile or iRule may be able to help if modifying the OWS content is out of the question. (Codeshare sample: Replace_ HTTP_ Refresh_ With_ HTTP_ Redirect)

Look at:   "Meta Tag: No-cache" and Minimum Age
Some HTML pages contain the meta tag: No-cache. The presence of this tag causes the browser to ignore any cache headers and not cache the page. Thus, this tag will override any Lifetime -> Min Age settings.

Recommendation:
Eliminate the No-Cache tags from all HTML pages which should be cached at the browser. A stream profile or iRule may be able to help if modifying the OWS content is out of the question.

Note:  If a stream profile or iRule is used to parse and re-write the content, compression will need to be disabled.

3.   Multi Connect isn't working

Look at:   Multi Connect and Host Map Options
Multi Connect multiplexes the domains of objects, causing browsers to open multiple parallel connections for object retrieval. The number of parallel connections is set on a per-host basis on the Applications screen by clicking on the Options link. The number of additional parallel connections which will be open for that host is equal to the value of the "Subdomains" dropdown * 2. The default setting for the "Subdomains" dropdown is 0. Thus, even though Multi Connect is turned on, if the value of the "Subdomains" dropdown is 0, Multi Connect will not be activated.

Recommendation:
Change the "Subdomains" dropdown value to 1 or more to allow browsers to open multiple parallel connections. A value of 2 or 3 is recommended. Ensure that the subdomains are

Notes:  (1) The number of subdomains is configured separately for HTTP and HTTPS.  (2) A default Windows registry setting prevents MSIE from opening more than 8 concurrent connections, so a larger "Subdomains" value won't further optimize page loads for those browsers.)

4.   Proxied content is not accelerated

Look at: Proxying and Assembly Rules
If a web request is proxied to the real web server for any reason, it will not be accelerated unless the "Assembly Rules -> Enable content assembly on proxies" option is enabled. Without it, proxied content will not be IBR'ed, Multi Connected, compressed, or in any way rewritten.

Recommendation:
Enable "Assembly -> Enable content assembly on proxies" to include proxied requests in the configured acceleration action.

5.   Content is cached at browser but not in WebAccelerator

Look at:   Proxy and Lifetime rules
Enabling the "Always Proxy" setting causes the WebAccelerator to always go back to the real web server for content. This overrides any Lifetime -> Maximum Age settings configured under WebAccelerator Cache settings, and causes this content to not be stored anywhere on the WebAccelerator. However, if "Assembly -> Enable content assembly on proxies" is enabled, the Client Cache setting will still be used for the browser. This can result in content being cached on the browser even though that content is not cached in the WebAccelerator.

Recommendation:
This behaviour is desirable in some cases. For example, using browser caching for small objects can take advantage of local caching while minimizing the resultant thrashing that could occur when caching large numbers of small objects on the WebAccelerator hard drive.

To enable WebAccelerator caching for proxied content, disable the "Always proxy requests for this node" setting.

6.   IBR (Intelligent Browser Referencing) is failing

Look at:   "Always Proxy" and "Assembly -> IBR"
Enabling the "Always proxy requests for this node" setting prevents WebAccelerator from caching this content anywhere on the WebAccelerator. Unless content is stored on the WebAccelerator, it is not eligible for IBR, as IBR requires a copy of the content for versioning purposes. Thus enabling "Always Proxy" will override "Assembly -> Enable IBR".

Recommendation:
To enable IBR, disable the "Always proxy requests for this node" setting.

7.   Conflicting cache headers sent to client

Look at:   "Lifetime -> Use HTTP lifetime headers if present" and Maximum Age
Enabling "Use HTTP lifetime headers if present" causes the caching headers from the real web server to be forwarded to the client. Setting the Maximum Age value in Client Cache settings will insert "Cache Control: Max-Age=<value>" and "Expires" headers with appropriate values. Enabling both "Use HTTP lifetime headers if present"and Maximum Age can result in conflicting cache headers sent to the client.

Recommendation:
Configure only one of these options, or coordinate the value of WebAccelerator's "Max Age" setting with the cache headers set by the webserver.