Im looking at using httpCachability and storing the cache data on the Server. Are there any draw backs to using this method of Caching? Can this be used on a 4 server load balanced farm?
I have noticed that once I click around the site once, the site is cached and the site's performance has improved considerably - however, when I do either a Save or Publish to content the whole cache is deleted from the server and the site goes slow once again, until cached.
Is there a way to configure this Deletion to only Published content and NOT saved content?
Or, can anyone recommend an alternative way to cache - I have looked into IIS and it doesnt really improve the performance much.
First find out exactly why the site is slow.
If it's only slow in production look into if you can install New Relic or Red Gate ANTS in the enironment to get a good look inside. SQL Server Profiler might also be of help.
In development I like to use dotTrace and SQL Server Profiler to find out if something is doing something bad or unnecessary.
Normally it's possible to pinpoint certain data calls and cache those objects instead of going to output caching where they're used.
Output Caching will add another layer of "must think of this" and make it more difficult to use personalisation stuff like Visitor Groups or even something as easy as just setting a cookie will take some planning.
In my experience it's often integrations with other systems or other remote calls that's taking up too much time in the visitor's "thread", try to avoid this and fetch this data async somehow instead.
When you cache data by "first request" it's important to implement cache locks to avoid cache races, the best answer here shows a good way:http://stackoverflow.com/questions/5578744/doing-locking-in-asp-net-correctly
Joel has a good post on integration patterns: http://joelabrahamsson.com/episerver-integration-patterns/