Hello I'm trying to set caching for 1 year for my static context (js,css and images) however seems like caching is only done for 2-3 weeks. below I put my caching filter and a response for some js file request.
I've added this code in a special "catch-all" filter and verified that all resources are indeed going through this filter : // cache for 1 year private static final long _cacheTime = (1000 * 60 * 60 * 24 * 365); public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest hreq = (HttpServletRequest)req; HttpServletResponse hres = (HttpServletResponse)res; hreq.setCharacterEncoding("UTF-8"); hres.setHeader("Vary", "Accept-Encoding"); hres.setCharacterEncoding("UTF-8"); // put caching for 1 year for images and js, css files if ((path.endsWith(".png")) || (path.endsWith(".jpg")) || (path.endsWith(".gid"))) { // put caching for 1 year for images and js, css files hres.setHeader("Cache-Control", "public: max-age=31536000"); hres.setDateHeader("Expires", Utils.now().getTime() + _cacheTime); } else if ((path.endsWith(".js")) || (path.endsWith(".css"))) { // put caching for 1 year for images and js, css files hres.setHeader("Cache-Control", "public: max-age=31536000"); hres.setDateHeader("Expires", Utils.now().getTime() + _cacheTime); } else { // don't cache servlets or HTML - override headers hres.setHeader("Pragma", "no-cache"); hres.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate"); hres.setHeader("Expires", "0"); } passFilter(req, res, chain); } now the problem is that the caching is set "only" for something like 2-3 weeks. here is an example of response headers for some js file : * * 1. Request URL: http://www.ichess.co.il/scripts/tiny_mce/tiny_mce.js 2. Request Method: GET 3. Status Code: 200 OK 4. Request Headers 1. Accept: */* 2. Referer: http://www.ichess.co.il/ 3. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10 5. Response Headers 1. Accept-Ranges: bytes 2. Age: 138 3. Cache-Control: public: max-age=31536000 4. Connection: Keep-Alive 5. Content-Length: 181324 6. Content-Type: text/javascript;charset=UTF-8 7. *Date:* *Sun, 16 Jan 2011 07:40:28 GMT* 8. ETag: W/"181324-1294691843184" 9. *Expires:* *Wed, 02 Feb 2011 08:20:57 GMT* 10. Last-Modified: Mon, 10 Jan 2011 20:37:23 GMT 11. Proxy-Connection: Keep-Alive 12. Server: Apache-Coyote/1.1 13. Vary: Accept-Encoding 14. Via: 1.1 TLVPROXY01 -- רן ברנפלד מנהל אתר השחמט הישראלי *http://www.ichess.co.il*