Checklist
- Required Directives
- NoCaching Directives
- Other Tuning Directives
- Compression (optional)
Required Directives
In order to have caching work correctly for Connections, several key values need to be set in the ibmproxy.conf file for WebSphere Edge server. These are documented in the Info Center
http://publib.boulder.ibm.com/infocenter/ltscnnct/v2r0/topic/com.ibm.connections.25.help/t_install_deploy_caching_proxy.html
NoCaching Directives
The Activities server places a private caching header in the response fo ATOM2 feed requests:
Cache-Control: private,max-age=0,must-revalidate
By design, the proxy server does not attempt to cache privately cacheable responses. However, the proxy server also will not forward If-Modified-Since headers to the application server on subsequent requests for this content. This means that Activities application code specifically designed to skip database access and return HTTP 304 responses when content has not changed will instead always access the database and return a 200 response.
As a work-around, the proxy server should be explicitly instructed NOT to attempt to cache these ATOM2 requests, by adding a line to the configuration file like:
NoCaching
http://*/service/atom2/*
Adding this directive allows the proxy server to forward the request to the application server with the If-Modified-Since header intact, which the server can then validate to determine if additional processing is necessary.
In addition, there are several other pages that display user specific data but have no Cache-Control headers. This means that the proxy server will cache these pages and potentially serve them to a different user. As a workaround, the following NoCaching directives need to be set:
NoCaching
http://*/activities/service/atom/*
NoCaching
http://*/activities/service/atom2/*
NoCaching
http://*/activities/service/atom2/forms/*
NoCaching
http://*/activities/service/download/*
NoCaching
http://*/activities/service/download/forms/*
NoCaching
http://*/activities/service/getnonce
NoCaching
http://*/activities/service/getnonce/forms
NoCaching
http://*/blogs/api*
NoCaching
http://*/blogs/api_form*
NoCaching
http://*/blogs/approvedmsg.jsp*
NoCaching
http://*/blogs/confirmflagged.jsp*
NoCaching
http://*/blogs/notify.jsp*
NoCaching
http://*/blogs/notifyedit.jsp*
NoCaching
http://*/blogs/notifyflagged.jsp*
NoCaching
http://*/blogs/notifyquarantined.jsp*
NoCaching
http://*/blogs/ownermsg.jsp*
NoCaching
http://*/blogs/roller-ui/admin*
NoCaching
http://*/blogs/roller-ui/createWebsite.do*
NoCaching
http://*/blogs/roller-ui/favorites*
NoCaching
http://*/blogs/roller-ui/myupdates*
NoCaching
http://*/blogs/roller-ui/rendering/api/*
NoCaching
http://*/blogs/roller-ui/rendering/api_form/*
NoCaching
http://*/blogs/roller-ui/scripts/authCheck.jsp*
NoCaching
http://*/blogs/roller-ui/servermetrics.do*
NoCaching
http://*/blogs/roller-ui/yourWebsites.do*
NoCaching
http://*/blogs/services/atom*
NoCaching
http://*/blogs/services/atom_form*
NoCaching
http://*/blogs/services/xmlrpc*
NoCaching
http://*/bookmarklet/post/*
NoCaching
http://*/communities/dsx/*
NoCaching
http://*/communities/forum/service/atom/*
NoCaching
http://*/communities/service/atom/communities/my*
NoCaching
http://*/communities/service/atom/community*
NoCaching
http://*/communities/service/forum/get/nonce
NoCaching
http://*/communities/service/json/communityview*
NoCaching
http://*/dogear/atom/inbox/*
NoCaching
http://*/dogear/atom/mybookmarks/*
NoCaching
http://*/dogear/atom/mynotifications/*
NoCaching
http://*/dogear/atom/mysentnotifications/*
NoCaching
http://*/dogear/html/inbox/*
NoCaching
http://*/dogear/html/mybookmarks/*
NoCaching
http://*/dogear/html/mynotifications/*
NoCaching
http://*/dogear/html/mysentnotifications/*
NoCaching
http://*/dogear/seedlist/*
NoCaching
http://*/dogear/templates/*
NoCaching
http://*/files/form/authenticated
NoCaching
http://*/homepage/web/getuserpref
NoCaching
http://*/homepage
NoCaching http://*/homepage/web/widgets
NoCaching
http://*/homepage/web/jsp/*.jsp
NoCaching
http://*/homepage/web/servermetrics
NoCaching
http://*/homepage/admin/admin.jsp
NoCaching
http://*/homepage/atom/search/*
NoCaching
http://*/homepage/atom/mysearch/*
NoCaching
http://*/mobile/activities/*
NoCaching
http://*/mobile/blogs/*
NoCaching
http://*/mobile/profiles/*
NoCaching
http://*/profiles/aboutView.do
NoCaching
http://*/profiles/home.do*
NoCaching
http://*/profiles/html/*.do
NoCaching
http://*/search/atom/mysearch
NoCaching
http://*/search/serverStats
NoCaching
http://*/search/web/*
NoCaching
http://*/wikis/basic/api/*
NoCaching http://*/wikis/dm/atom/*
NoCaching
http://*/wikis/form/api/*
NoCaching
http://*/wikis/form/authenticated
NoCaching
http://*/wikis/seedlist/*
NoCaching
http://*/wikis/templates/about.jsp*
NoCaching
http://*/wikis/templates/demo.jsp*
NoCaching
http://*/wikis/templates/faq/en/tour1.jsp*
NoCaching
http://*/wikis/templates/statistics.jsp*
NoCaching
http://*/wikis/templates/toolbox.jsp*
NoCaching
https://*/activities/service/atom/*
NoCaching
https://*/activities/service/atom2/*
NoCaching
https://*/activities/service/atom2/forms/*
NoCaching
https://*/activities/service/download/*
NoCaching
https://*/activities/service/download/forms/*
NoCaching
https://*/activities/service/getnonce
NoCaching
https://*/activities/service/getnonce/forms
NoCaching
https://*/blogs/api*
NoCaching
https://*/blogs/api_form*
NoCaching
https://*/blogs/approvedmsg.jsp*
NoCaching
https://*/blogs/confirmflagged.jsp*
NoCaching
https://*/blogs/notify.jsp*
NoCaching
https://*/blogs/notifyedit.jsp*
NoCaching
https://*/blogs/notifyflagged.jsp*
NoCaching
https://*/blogs/notifyquarantined.jsp*
NoCaching
https://*/blogs/ownermsg.jsp*
NoCaching
https://*/blogs/roller-ui/admin*
NoCaching
https://*/blogs/roller-ui/createWebsite.do*
NoCaching
https://*/blogs/roller-ui/favorites*
NoCaching
https://*/blogs/roller-ui/myupdates*
NoCaching
https://*/blogs/roller-ui/rendering/api/*
NoCaching
https://*/blogs/roller-ui/rendering/api_form/*
NoCaching
https://*/blogs/roller-ui/scripts/authCheck.jsp*
NoCaching
https://*/blogs/roller-ui/servermetrics.do*
NoCaching
https://*/blogs/roller-ui/yourWebsites.do*
NoCaching
https://*/blogs/services/atom*
NoCaching
https://*/blogs/services/atom_form*
NoCaching
https://*/blogs/services/xmlrpc*
NoCaching
https://*/bookmarklet/post/*
NoCaching
https://*/communities/dsx/*
NoCaching
https://*/communities/forum/service/atom/*
NoCaching
https://*/communities/service/atom/communities/my*
NoCaching
https://*/communities/service/atom/community*
NoCaching
https://*/communities/service/forum/get/nonce
NoCaching
https://*/communities/service/json/communityview*
NoCaching
https://*/dogear/atom/inbox/*
NoCaching
https://*/dogear/atom/mybookmarks/*
NoCaching
https://*/dogear/atom/mynotifications/*
NoCaching
https://*/dogear/atom/mysentnotifications/*
NoCaching
https://*/dogear/html/inbox/*
NoCaching
https://*/dogear/html/mybookmarks/*
NoCaching
https://*/dogear/html/mynotifications/*
NoCaching
https://*/dogear/html/mysentnotifications/*
NoCaching
https://*/dogear/seedlist/*
NoCaching
https://*/dogear/templates/*
NoCaching
https://*/files/form/authenticated
NoCaching
https://*/homepage/web/getuserpref
NoCaching
https://*/homepage
NoCaching https://*/homepage/web/widgets
NoCaching
https://*/homepage/web/jsp/*.jsp
NoCaching
https://*/homepage/web/servermetrics
NoCaching
https://*/homepage/admin/admin.jsp
NoCaching
https://*/homepage/atom/search/*
NoCaching
https://*/homepage/atom/mysearch/*
NoCaching
https://*/mobile/activities/*
NoCaching
https://*/mobile/blogs/*
NoCaching
https://*/mobile/profiles/*
NoCaching
https://*/profiles/aboutView.do
NoCaching
https://*/profiles/home.do*
NoCaching
https://*/profiles/html/*.do
NoCaching
https://*/search/atom/mysearch
NoCaching
https://*/search/serverStats
NoCaching
https://*/search/web/*
NoCaching
https://*/wikis/basic/api/*
NoCaching https://*/wikis/dm/atom/*
NoCaching
https://*/wikis/form/api/*
NoCaching
https://*/wikis/form/authenticated
NoCaching
https://*/wikis/seedlist/*
NoCaching
https://*/wikis/templates/about.jsp*
NoCaching
https://*/wikis/templates/demo.jsp*
NoCaching
https://*/wikis/templates/faq/en/tour1.jsp*
NoCaching
https://*/wikis/templates/statistics.jsp*
NoCaching
https://*/wikis/templates/toolbox.jsp*
Note that all of the above should be set to https if a full SSL configuration is being used.
Other Tuning Directives
It is safe to attempt to cache query URLs (those with ‘?’ in the URL). To do this, set the following directives to something like:
CacheQueries Always
http://appserver/*
The default memory sizes for the cache are very small. Assuming a dedicated server, it is reasonable to increase the memory cache size to a significant fraction of the total system memory using the CacheMemory directive. Note that because the proxy server is a 32 bit application, cache memory is limited to about 1500MB. Sizes larger than that would need to move to a disk backed cache.
The EdgeServer has its own set of threads used for incoming connections, defined by the MaxActiveThreads directive. This setting should be changed to be at least as large as the ThreadsPerChild setting in IHS.
By default, a connection coming into the proxy will require a connection to be made to the back end servers if the request content is not cached. This can cause a higher than necessary usage of the IHS server’s connection threads. By turning on the proxy’s connection pool, with the ServerConPool directive, connections from front end clients can share existing back end connections and reduce overhead on the IHS server.
MaxPersistRequests allows more requests to use the same persistent HTTP connection to the server. By default, only 5 requests are allowed per connection. This can be modified to allow more connections, which can be especially beneficial when using SSL since an SSL handshake can take a non-trivial amount of time to complete. Allowing more requests per connection allows the SSL connection to stay open longer and less handshakes are necessary. This can be changed with the MaxPersistRequests directive.
Compression
Consider enabling GZIP on the proxy server rather than the HTTP server because of the CPU resources needed to compress the content. In a typical deployment, the HTTP server will run on the same physical server as WebSphere. Using more CPU on that server could potentially lower overall throughput. The Edge server without GZIP, however, uses almost no CPU, even at high throughput levels. Moving compression to the Edge therefore makes the best use of available resources.
Once enabled, the files that are zipped are specified by MIME type. The MIME types compressed should be the same as the compression rules defined in IHS.
CompressionFilterEnable
\Bin\modz.dll
CompressionFilterAddContentType text/html,Image/bitmap,application/x-javascript,text/css,text/plain,text/xml,application/xml,application/atom+xml