For point 2, why would this not be needed? This is how you invalidate the cache on the browser (e.g. requesting a new object like my-script.v1.js or my-script.v2.js). The browser wont get a new object if its cached so the ETag and Last-Modified do nothing in terms of keeping the cache fresh in this ...