Mark R. Brown's white paper states that one of the main advantages of FastCGI is that different requests can share the same cache, which makes practical use of caching:
Today, the most widely deployed web server APIs are based on the process pool server model. A web server consists of a parent process and a pool of child processes. Processes do not share memory. An incoming request is assigned to an unoccupied child in a random order. The child starts the request before completion before accepting a new request. A typical server has 32 child processes, with a large server 100 or 200.
In-memory caching works very poorly in this server model because processes do not exchange memory and incoming requests are assigned randomly. For example, to store a frequently used file in memory, the server must store a copy of the file for one child, which takes up memory. When the file is modified, all children should be notified that it is complex (APIs do not provide a way to do this).
FastCGI is designed for efficient in-memory caching. Requests are routed from any child process to the FastCGI application server. The FastCGI application process maintains a cache in memory.
source share