If-None-Match seems not to work

I have the following in system.yaml

  expires: 0
  last_modified: false
  cache_control: no-cache
  etag: true

In the response of a page, I see something likes

Cache-Control: no-cache
Content-Encoding: gzip
Date: Sat, 07 Sep 2019 06:21:17 GMT
ETag: "af10340f68238f2a23723131b1f49172"
Vary: Accept-Encoding

I don’t make any change on the page, and revisit it, the browser sends the request with header

If-None-Match: "af10340f68238f2a23723131b1f49172"

But the server always return 200 response with the full page content. The same ETag is returned.

I expect a “304” response but it was not.

Did I miss any configuration?