これは、すべてのブラウザでWebページのキャッシュを制御する方法からの引用です。あなたはあなたの質問でリンクしましたが、明らかに見落とされていました:
ページがHTTP経由で提供され、ヘッダーがHTTP応答ヘッダーとHTMLメタタグの両方に存在する場合、応答ヘッダーで指定されたものがHTMLメタタグよりも優先されることに注意してください。HTMLメタタグは、ページがローカルディスクファイルシステムから表示される場合にのみ使用されます。W3HTML仕様の第5.2.2章も参照してください。プログラムで指定しない場合は、これに注意してください。Webサーバーにはデフォルト値を含めることができるためです。どちらかを確認するには、FirebugNetパネルを使用してそれらを表示/デバッグできます。
これは明らかに事実です。これらのヘッダーは、HTML出力ではなく、実際のHTTP応答に設定する必要があります。JSF 1.x Webアプリケーションの場合、最良の方法は、タスクを実行するためのサーブレットフィルターを作成することです。キックオフの例は次のとおりです。
public class NoCacheFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
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);
}
// ...
}
web.xml
目的のURLパターン、たとえば*.jsf
、のサーブレット名にマップしますFacesServlet
。