I would expect the OCSP response to be read from the wininet cache on subsequent requests. Is that not the case here? Caching the CRL check makes sense because CRLs can become very large and parsing them takes a long time. That's not the case with OCSP responses.