We are running on SSL on following server topology: - 1 ISA (SSL Terminate/cache/proxy+AD authentication) - 1 SharePoint - 1 IBM DB2 Database - enterprise/corporate DB - 1 MS SQL Server - local DB

We have recently optimized the caching, compression, minification, and other ASP.net best practices such as viewstate and cookie sizes, minimizing round trips, parallel connections/domain sharding and a lot more....

Now we are not convinced that the we are in an optimized position as the network resources i.e. bandwidth and especially latency are out of our control!!

The client/browser to server/SharePoint is trans-Atlantic i.e. (ASIA, USA, EUROPE).

As of my understanding the only ways to improve the network (latency) are: - TCP/SSL optimization - hardware/software? - CDNs - cloud or our own ?

Your opinion and insights would be much appreciated Best regards Hertzel


Have you done anything specificly for SharePoint performance optimization?

Object cache

In SharePoint you should adjust the object and output cache. During stress load your \SharePoint Publishing Cache\Cache hit ratio should preferably be above 90%

For object cache default is 100 mb. Adjust it up in 100 mb increments while measuring hit ratio and at the same time measure \SharePoint Publishing Cache\object discard rate is low and that response time for users isnt raising (\ASP.NET Apps v2.0.50727()\Request Execution Time and \ASP.NET Apps v2.0.50727()\Requests/Sec).

Output cache

If you are having both anonyous users and user sessions this requires different cache profiles. Some of the OOB cache profiles are not very effective. Use VaryByCustom(rights) or roll your own handler and set it up per Layout Page.

More on custom handlers.

Also consider enabling the BLOB cache. Its not perfect by any standards, and it has given me alot of grief across WFE with corrupted files, but when it works it will definately speed up your site. A thing to look out for here are to set the MaxAge property on the output cache element to avoid unneccessary traffic between client and server (304's).

<BlobCache location="C:\blobCache" path="\.(gif|jpg|png|css|js)$" maxSize="10" max-age="86400" enabled="True"/>

More info here.

More info on caching.

If you got loads of custom code make sure your developers cache expensive operations or the HTML output of your web parts using HttpRuntime cache and make sure they handle cache insertion in a single threaded fashion (lock(myObject)) to avoid redundant cache entries.

In general check out the foot-print of your page. Are HTML optimized, are images and scripts optimized? Consider if some of the content on a page could be loaded asyncronously using AJAX/jQuery.

Hope this is what you needed, else feel free to ask.

  • Excellent insight Andres. I agree that someone needs to be very careful for BLOB cache usage. – Namwar Rizvi Sep 14 '10 at 10:30

sometimes large blob cache will reduce your performance rather helping with heavy loads. Blob cache index are written to hard drive periodically and before recycle. When this serialization is progress, it will affect the time taken to serve the client request.

It is even more devastating when app pool recycle corrupt indexes and files are no longer being fetched from blob cache ; this happens generally because – if timeout for recycle is lower than time taken to save the indexes on disk

Ref: Best practices for Blob cache


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy