JAVA:IT TRICK

ブラウザのキャッシュをオフにする

サーブレットでブラウザに対して「キャッシュを使わない」ことを指示する方法について説明します。
  • このエントリーをはてなブックマークに追加
  • Clip to Evernote
  • IT TRICK RSS

サーブレットでブラウザに対して「キャッシュを使わない」ことを指示する方法について説明します。

キャッシュしないようにブラウザに伝えるにはレスポンスヘッダに「Pragma:no-cache」、「Cache-Control:no-cache」、「Expires:<0ミリ秒>」を設定する必要があります。以下は実際のサンプルです。

キャッシュをオフにするサンプル

setDateHeader()メソッドはHTTPヘッダに同名のヘッダが存在する場合、指定したヘッダ名に対応する日付型のヘッダ値を上書きし、同名のヘッダが存在しない場合は追加します。

また、ヘッダー値に指定される値は、 GMT 1970 年 1 月 1 日 からのミリ秒数として表現された、long 値になります。

Sample48132.java
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Sample48132 extends HttpServlet {

	public void doGet(HttpServletRequest request,
			HttpServletResponse response)
	throws IOException, ServletException {

		response.setHeader("Pragma", "no-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);

	}
}

上記のサーブレットのためのweb.xml設定です。

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
        <servlet>
                <servlet-name>48132</servlet-name>
                <servlet-class>Sample48132</servlet-class>
        </servlet>

        <servlet-mapping>
                <servlet-name>48132</servlet-name>
                <url-pattern>/48132</url-pattern>
        </servlet-mapping>

</web-app>