Many full page caches are in front of Magento. Often Magento doesn't see the request. That makes external caches very fast. You only have to define a process in front of magento and send your own request. But external caches have to reload dynamic content with ajax and aren't that flexible. Lesti_Fpc has an other workflow.
I wanted a full page cache with the same flexibility of Magento. That means a little bit more loading time than other caches. But Lesti_Fpc can mostly handle every theme without much configurations and without editing any phtml. And we replace dynamic customer content before sending response. Here is a little diagramm to show the workflow of Lesti_Fpc.
The filled rectangles are events in magento. I have choosen the event
controller_action_layout_generate_blocks_before
as starting point, cause in this moment the
customer-session already exists and the xml of the layout is completely build. That's important for custom
handles from other extensions. I generate a sha1-key out of things like hostname, uri, store, currency,
special customer session data and other things. If we have object in cache with this key, we reduce the xml
of layout. In this moment are only dynamic blocks in the layout and we can generate the blocks. We replace
the placeholder in content with the content of the dynamic blocks and we can send response to the customer.
That's all.