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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org