How to implement no caching on JSF pages
Currently there are 2 ways I know that can do this. 1.) By implementing Filter and manually overriding the cache controls. See code below ...
https://www.czetsuyatech.com/2015/01/jsf-no-cache-page.html
Currently there are 2 ways I know that can do this.
1.) By implementing Filter and manually overriding the cache controls. See code below (note: not my original I found this somewhere else long time ago):
2.) The one I preferred, using omnifaces' CacheControlFilter. More information available at: http://showcase.omnifaces.org/filters/CacheControlFilter. To use just need to add the filter and integrate with facesServlet.
1.) By implementing Filter and manually overriding the cache controls. See code below (note: not my original I found this somewhere else long time ago):
@WebFilter(servletNames = { "Faces Servlet" })
public class NoCacheFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
if (!request.getRequestURI().startsWith(
request.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) {
// Skip JSF resources (CSS/JS/Images/etc)
response.setHeader("Cache-Control",
"no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
}
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
2.) The one I preferred, using omnifaces' CacheControlFilter. More information available at: http://showcase.omnifaces.org/filters/CacheControlFilter. To use just need to add the filter and integrate with facesServlet.
<filter> <filter-name>noCache</filter-name> <filter-class>org.omnifaces.filter.CacheControlFilter</filter-class> </filter> <filter-mapping> <filter-name>noCache</filter-name> <servlet-name>Faces Servlet</servlet-name> </filter-mapping>




Post a Comment