The two header sets
Tokened assets: far-future immutable. Everything else: short, or revalidate with an ETag. Two sets, and every response picks one.
How to verify a hit
Request twice and compare the transfer size. A hit transfers zero bytes, which is the only proof that the header worked.