The dbcache *is* a read cache, and this misconception has kept block validation times longer than they need to be. This problem will be fixed in v28. https://github.com/bitcoin/bitcoin/pull/28233
Setting higher dbcache benefits block validation time in addition to initial sync time. It should always be increased if there's enough free RAM.
Is there/was there a hard cap in the code? I thought I read on stack exchange dbcache is hard capped at 16gb.
Nevermind... I read through the github link you posted and see there is a 16gb hard cap.