Scenario

In Production , you have an XSLT list view web part displaying a list  This web part returns timeout errors when loaded page initially, when refreshed, error disappears and page loads successfully. An error "Unable to display this Web Part. To troubleshoot the problem open this Web page using Microsoft SharePoint Foundation-compatible HTML editor such as Microsoft SharePoint Designer"  is displayed when error occurs on page load.

A Possible reason

if we have  many columns added to the  target form library, which when opened using XSLT web parts was hitting a timeout error which took more time than what is set for XSLT timeout . In my case, the timeout value was set to 1 second. Using developer dashboard, we can  see the timeout error comes if page refresh takes more than 1 second.

A Possible Resolution

1. Install February 2012 CU for SharePoint if you do not have XsltTransformTimeOut   setting in farm.

Or


2. Increase timeout to 5 in $farm = Get-SPFarm $farm.XsltTransformTimeOut using following PS commands.
You have to use DeveloperDashboard on problem pages and determine average time taken for page load. Then use that time to increase the timeout.

About XsltTransformTimeOut


I had tested XsltTransformTimeOut in test farm. This is set to 1 second by default. Increasing this timeout can affect performance during large form rendering. To use as a workaround for customer's issue, suggested to increase timeout to5 second. I had tested it and found working if timeout increased to 2 or 5.
Increased timeout to 5 in $farm = Get-SPFarm $farm.XsltTransformTimeOut using following PS commands.

Steps to follow
==========

Check Current Setting

$farm = Get-SPFarm
$farm.XsltTransformTimeOut

The default setting is 1 second. The PowerShell code below changes it to 2 seconds which should be sufficient for your farm. Developer dashboard returned average 1 to 1.3 seconds delay in your production farm. So, I’m choosing 5 seconds timeout.

Change Setting to 5 Seconds

$farm = Get-SPFarm
$farm.XsltTransformTimeOut = 5
$farm.Update()