WP_Filesystem in custom customize control

To cache something you can use the Transients API (thanks @Otto), get_transient() to see if it exists already exists, if not then fetch the data and store it in a transient with set_transient().

    if (get_transient('mytheme_webfonts')) {
        $content = get_transient('mytheme_webfonts');
    }
    else{
        $googleApi = 'https://www.googleapis.com/webfonts/v1/webfonts?sort=alpha&key={API_KEY}';

        $fontContent = wp_remote_get( $googleApi, array('sslverify'   => false) );

        $content = json_decode($fontContent['body']);

        set_transient( 'mytheme_webfonts', $content, WEEK_IN_SECONDS );
    }