Squid internals Flow of a typical request clientProcessRequest() handles throwing the request off if its a "special" request (think CONNECT, PURGE, TRACE) If the request is not special, it calls clientProcessRequest2() which handles the actual cache lookup If the request is found in the cache we lock the returned StoreEntry and call storeClientCopy() to begin retrieving data from it (the callback here is clientCacheHit()) If the request was not found in the cache, we pass the request off to clientProcessMiss() clientProcessMiss() checks for forwarding loops and handles any special requests If the request is still to be fulfilled, we pass it off to fwdStart()