@ctweney the respond to logic needs to run in conjunction or in a before_filter. Looks like the cleanest way might be:
caches_action :index, :if => proc do
   request.format.html?  
end

The respond_to below probably still needs to be there, since i think that if Proc will just make it skip the cache, index will still need to throw the 406