Glassfish 3.1.2, Mojarra 2.1.6, активированный SSL
У меня вопрос о статическом кэшировании ресурсов. Я прочитал несколько сообщений об этом, но я не знаю, какие варианты мы должны использовать. Это
https://developers.google.com/speed/docs/best-practices/caching
также является хорошей статьей о кэшировании ресурсов. В нашем сервере приложений активируется SSL. Мы видим, что статические ресурсы (изображения, скрипты, css) не кэшируются.
Вот мой тестовый фильтр:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (request instanceof HttpServletRequest && response instanceof HttpServletResponse) {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
String uri = httpRequest.getRequestURI();
if (GET_METHOD.equalsIgnoreCase(httpRequest.getMethod()) && uri.contains(ResourceHandler.RESOURCE_IDENTIFIER)) {
httpResponse.setDateHeader("Expires", System.currentTimeMillis() + 2419200000L); // 1 month in future.
httpResponse.setDateHeader("Last-Modified", System.currentTimeMillis() - 2419200000L); // 1 month in past.
httpResponse.setHeader("Cache-Control", "public"); // Secure caching
}
}
chain.doFilter(request, response);
}
- Истекает: Хорошо. Это статический ресурс, который не меняется, поэтому мы устанавливаем дату истечения срока действия в будущем.
- Последнее изменение: Не уверен. Я читал, что установка этого в прошлое также распространяется на кеширование
- Cache-Control: Хорошо. Разрешить безопасное кэширование. Последствия безопасности?
Есть ли какие-либо последствия с этими настройками? Я также прочитал много сообщений, где кеширование должно быть отключено через фильтр. Единственная проблема, которую я вижу, это то, что у пользователей может возникнуть проблема с новой версией. Стили и скрипты могут быть изменены в новой версии, но браузер игнорирует новый и использует файлы из кеша.