I believe Cloudflare does not follow the Cache-Control header. It seems like you will need to create a page rule to make it cache filetypes other than the ones listed here. At the bottom of that page you can also see what all the CF-Cache-Status values mean.
This seems inconsistent when using “cache everything” - sometimes Cloudflare seems to set its own max-age, ignoring any .htaccess settings. But I just changed my .htaccess to say max-age=31536001 (i.e. changing it to “1” at the end), and that’s what’s showing up in the headers. So it seems it is recognising it in this case.
@M4rt1n: Curiously, I don’t see that content-type line in my Response Headers.
Seemed like the best approach was to take your final advice and I converted the font to woff2 (and added that extension to my .htaccess).
However, it’s still showing DYNAMIC and is the slowest loading thing on most pages.
I just downloaded the font, hosted it on my server and checked. It is getting cached. #SEE So there must be something on your side, or within your Cloudflare configuration. Also your content-type is always different from mine. Even tho I think this is not the problem here our content-types:
Files with the .woff2 extension should be cached by default. The Cache Everything page rule would make it cacheable anyway. So there is not reason for DYNAMIC!
Do you have Development Mode enabled?
The correct (as per RFC8081) type is font/woff2 as @M4rt1n said above. While it should make no difference, can you update your config to the standard MIME type and see if it does anything. Similarly, your otf fonts should have MIME type font/otf.
The OP had the following page rules. The uncached file was being matched by one of the first two rules. Only one Page Rule will ever match, and it is the first Page Rule in the list when you read the rules from the top down.