私のWebページの.pngファイルをキャッシュします。response.setDateHeader() - キャッシュが機能しない
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain filChain) throws IOException, ServletException {
logger.debug("doFilter()");
logger.info(((HttpServletRequest)req).getRequestURL().toString());
filChain.doFilter(req, res);
if (res instanceof HttpServletResponse) {
HttpServletResponse response = (HttpServletResponse) res;
logger.info(((HttpServletRequest)req).getRequestURL().toString());
response.setDateHeader("Expires", expiryDate);
}
}
私の問題:私はある)
String expiryDateStr = filterConfig.getInitParameter("expiryDate");
SimpleDateFormat format = new SimpleDateFormat(
"EEE, d MMM yyyy HH:mm:ss Z");
try {
Date d = format.parse(expiryDateStr);
expiryDate = d.getTime();
} catch (ParseException e) {
logger.error(e.getMessage(), e);
}
のdoFilter()(INITで次のようにexpiryDateフィールドの値を設定
web.xmlに<filter>
<filter-name>ContentFilter</filter-name>
<filter-class>filters.ContentFilter</filter-class>
<init-param>
<description>Add an Expires Header</description>
<param-name>expiryDate</param-name>
<param-value>Fri, 30 Apr 2021 20:00:00 GMT</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ContentFilter</filter-name>
<url-pattern>*.png</url-pattern>
</filter-mapping>
を次のエントリを追加しましたブラウザでWebページを更新するたびに、クライアントは.pngファイルを要求し続けます。私のフィルタは動作していないと思う。この設定は正しいですか?
私はdoFilter()の上にresponse.setDateHeaderを移動し、Live HTTPヘッダープラグインをインストールしました。私はpngファイルがweb.xmlで設定された値に設定された有効期限付きで返されるのを見ることができました。しかし、私がリフレッシュするとき、クライアントは依然としてそれらのファイルを要求していますか? expiresオプション以外のこのキャッシュを強制する標準的な方法はありますか? – ihavprobs
@shk:生のサーブレットAPIで自分自身で解決しようとするのではなく、適切なWebフレームワークを使用する必要があります。 – skaffman
ありがとうございます。私はそれを確認します。 – ihavprobs