Github user pandareen commented on the issue:
https://github.com/apache/tomcat/pull/115
Okay let me explain.
Case 1. [https://i.imgur.com/tofjYaM.png](https://i.imgur.com/tofjYaM.png)
- When chrome gets a `Cache-Control: no-cache` directive in response header, it
sends `If-Modified-Since` and `If-None-Match` headers to the server to validate
staleness in the next page request/reload. This makes perfect sense because if
the resource is not changed in mean time, the server sends a 304 (not modified)
status code and browser can use the same resource...
Case 2. [https://i.imgur.com/mOWglQL.png](https://i.imgur.com/mOWglQL.png)
- When chrome gets a `Cache-Control: private` directive in response header, it
is not sending the `If-Modified-Since` and `If-None-Match` in request headers
and as a result you see the `Status Code: 200 OK (from memory cache)` which
means chrome didn't try the server for the js file and loaded it again from the
memory(But in reality I had made changes in js file). I tried to change/match
headers like the no-cache case but couldn't get the headers going. Finally I
noticed the `Expires` header doesn't have GMT in the string so I changed it and
suddenly everything worked.
This lets me believe that in case 2, when chrome gets a `Cache-Control:
private` directive, it requires a valid `Expires` header to trigger the cache
validation request..
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]