JSPにExpires
またはCache-Control
ヘッダーを追加するにはどうすればよいですか?私は、画像、CSSおよびJavaScriptファイルとしての私の静的なコンポーネントのためのページを含めるには、遠未来の有効期限を追加したいです。
JSPページのブラウザキャッシュを無効にするには、Filter
を作成します。これは_url-pattern
_の_*.jsp
_にマップされ、基本的にdoFilter()
メソッドで以下を実行します。
_HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0
httpResponse.setDateHeader("Expires", 0); // Proxies.
_
この方法では、これをすべてのJSPページにコピーアンドペーストして、scriptletsで混乱させる必要はありません。
CSSやJSなどの静的コンポーネントのブラウザーキャッシュを有効にするには、それらをすべて_/static
_や_/resources
_などの共通フォルダーに入れ、_url-pattern
_にマップされるFilter
を作成します_/static/*
_または_/resources/*
_であり、基本的にdoFilter()
メソッドで以下を実行します。
_httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 604800000L); // 1 week in future.
_
以下も参照してください:
<%
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%>
<%
response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1
response.setHeader("Pragma", "no-cache"); //HTTP 1.0
response.setDateHeader("Expires", 0); //prevents caching at the proxy server
%>
Tomcatのようなサーブレットコンテナには、事前定義されたフィルタのセットが付属しています。たとえば、 Expires Filter を参照してください。独自の同様のフィルターを作成するよりも、既存のものを使用する方が簡単な場合があります。