不要在JSF页面中重新加载页眉

时间:2011-05-05 13:36:37

标签: java jsf-2

我正在开发一个jsf项目,我有几个使用相同模板的xhtml页面。该模板包含布局和页眉。我想知道当用户导航到另一个页面时是否有可能不重新加载标题,因为它总是相同的;因为它包含几个图像,所以导致导航速度变得更慢。

一句话:出于安全原因,我正在使用过滤器将以下标头添加到响应中:

HttpServletResponse resp = (HttpServletResponse) response;
resp.setHeader("Cache-Control", "no-cache,no-store,must-revalidate"); // HTTP 1.1
resp.setHeader("Pragma", "no-cache"); // HTTP 1.0
resp.setDateHeader("Expires", 0); // Proxies.

可以在不删除这些标题的情况下完成吗?

谢谢! 达米安

2 个答案:

答案 0 :(得分:1)

  

模板包含布局和页眉。我想知道当用户导航到另一个页面时是否有可能不重新加载标题,因为它始终是相同的;

这仅在使用HTML框架(不推荐)或通过Ajax请求而不是正常请求刷新页面部件时才可用。但是,缺点是您最终得到了不可记名的URL。

  

因为它包含几个图像,导致导航速度变得更慢。

如果这是真正的问题,那么您需要指示浏览器实际缓存图像(以及CSS和JS)。因此,如果您也在image / CSS / JS请求上设置这些响应标头,那么浏览器每次都被迫重新加载它们。这是不必要的,并且确实会导致加载缓慢。您需要确保这些标头仅在JSF页面上设置,因此您需要确保过滤器的URL模式仅与JSF页面请求匹配,例如, *.jsf*.xhtml,因此不是/*或其他内容。

另见:

答案 1 :(得分:0)

在我的音频播放器中寻找类似的技巧,以便在导航过程中不停止listenig。我只看一下soundcloud网站。你可以刷新ajax中的内容并使用window.history.pushState在javascript中更改url:

http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#dom-history-pushstate

它可能不适用于旧浏览器......