Recently I worked on caching using Authcache ESI and Varnish.
I configured the Varnish VCL based on the recommendations provided by Authcache ESI module. But all the blocks for which I enabled Authcache ESI wouldn't show up on the page.
On further debugging, I discovered that the culprit is the interaction between Authcache ESI and Context modules. Context module displays blocks on a page even if they are not enabled to be shown on any region in any theme. But Authcache ESI thinks that these blocks are disabled and so does not cache them. It does not take into account the fact that Context module is displaying them.
So what's the fix for this? Create a non-public page. Remove it from the sitemap and disallow indexing via robot.txt. Now configure all the blocks that you want to be cached using Authcache ESI to show up on any region of this page. Now Authcache ESI will know that these blocks are enabled and voila! You'll get your blocks back on all the other pages as well!