I have a website with static assets that don't change (js, images, etc). Each of these assets has the cache-control header set with the following property:
cache-control: public, max-age=31536000, immutable
However, when I reload the page I'm still seeing 200 responses from the server instead of a 304 response. The browser is indicating that the asset is being served from memory or disk cache, but it is still making the request and downloading content. This used to work before and I'm leaning towards this being a browser bug, but I'm not entirely sure.



What you are describing is simply how Chrome dev tools shows a response served from the cache. There are other StackOverflow questions (like this one) that confirm this.
The status code is displayed as
200because that's what it is. The response is cached, and part of the response is the status code. There is no special status code for a cached response.You've misunderstood what
304is used for. That is used in reply to a conditional request. It represents an actual response with that status code, received over the network, not a cached response.To confirm that the response is indeed served from the cache, and that no new request is being sent to the server, you can look at your server logs.