Eu diria ambos. As implementações podem variar, mas considerando que o ponto inteiro do cache não é buscar algo que você já fez há pouco, parece ilógico que um cliente obtenha um registro CNAME e A e jogue fora um ou outro. Eu estou usando o termo 'cliente' vagamente aqui como você tem em sua pergunta, mas a implementação pode variar se estamos falando de um resolvedor de DNS (como dig, nslookup), cache de dns do aplicativo (como navegadores), cache dns servidor (por exemplo, BIND) etc. Se você quiser ter certeza, você deve confiar na documentação do cliente em particular ou fazer seus próprios testes.
No meu caso eu testei no BIND9. A técnica de teste simples que usei foi, primeiro, liberar todas as entradas do DNS no cache e, em seguida, fiz uma consulta DNS, finalmente despejei o cache do DNS para investigação. Como você pode ver abaixo, os registros CNAME e A foram armazenados em cache. O TTL não corresponde ao TTL real armazenado no arquivo de zona autoritativa porque estou obtendo meu DNS por meio do encaminhamento, o que significa que as entradas de DNS que estou recebendo podem vir também do cache de servidores DNS remotos.
ns1 bind # rndc flush && dig www.bbc.co.uk +nodnssec && rndc dumpdb ;; ANSWER SECTION: www.bbc.co.uk. 238 IN CNAME www.bbc.net.uk. www.bbc.net.uk. 166 IN A 212.58.246.55 www.bbc.net.uk. 166 IN A 212.58.246.54 ns1 bind # grep www.bbc.co.uk named_dump.db www.bbc.co.uk. 234 CNAME www.bbc.net.uk. ns1 bind # grep -P 212.58.246.5[4,5] named_dump.db www.bbc.net.uk. 166 A 212.58.246.54 166 A 212.58.246.55