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

Reply via email to