Hi, By the way, why using Squid? Have you already tried Varnish? It has a "grace" function which might help you :) During grace period, varnish serves stale (but cacheable) objects while retriving object from backend. Of course, it depends if that solution makes sense with your application.
And Varnish would reduce disk IOs compared to squid, but forget ICP, they don't do it. You could then do a real tiered caching: users ==> haproxy ==> edge caches ==> backend caches ==> origin. edge caches can be Varnish and can do URL hashes to get content from backend layer to limit also the MISS rate and the load on origin. cheers