protected boolean isExplicitlyCacheable(final ResponseCacheControl cacheControl, final HttpResponse response) {
        if (cacheControl.isPublic()) {
            return true;
        }
        if (!sharedCache && cacheControl.isCachePrivate()) {
            return true;
        }
        if (response.containsHeader(HttpHeaders.EXPIRES)) {
            return true;
        }
        if (cacheControl.getMaxAge() > 0) {
            return true;
        }
        if (sharedCache && cacheControl.getSharedMaxAge() > 0) {
            return true;
        }
        return false;
    }
Determines whether the given CacheControl object indicates that the response is explicitly non-cacheable.

@param cacheControl the CacheControl object representing the cache-control directive(s) from the HTTP response.
@return true if the response is explicitly non-cacheable according to the cache-control directive(s),
false otherwise.
<p>
When cacheControl is non-null:
- Returns true if the response contains "no-store" or (if sharedCache is true) "private" cache-control directives.
- If the response contains the "no-cache" directive, it is considered cacheable, but requires validation against
the origin server before use. In this case, the method returns false.
- Returns false for other cache-control directives, implying the response is cacheable.
<p>
When cacheControl is null, returns false, implying the response is cacheable.
httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/ResponseCachingPolicy.java