Я новичок в SpringBoot.Как установить кеш-контроль в css и js-файлы в SpringBoot?
Я делаю свой проект на основе sample project of Springboot. Я хотел бы контролировать заголовки http для кеша только для файлов js/css.
Я добавил файл js test.js
под номером src/resources/static
, затем ссылаюсь на него в greeting.html
.
Затем я следую некоторым ответам на StackOverflow и добавляю WebMvcConfiguration.java
и WebSecurityConfig.java
как таковые, но это не работает для меня.
Я уверен, что WebMvcConfiguration и WebSecurityConfig не должны использоваться вместе, или я настроил что-то неправильно. Я предпочитаю решение с Java Config, а не XML.
Я открываю ChromeDevTool для проверки ответа с сервера. Ответ http-заголовок
Accept-Ranges:bytes
Cache-Control:no-store
Content-Length:20
Content-Type:application/javascript
Date:Thu, 02 Feb 2017 10:53:14 GMT
Expires:
Last-Modified:Thu, 02 Feb 2017 10:52:49 GMT
Pragma:
Спасибо!
UPDATE: Когда я снял WebSecurityConfig
, я получил следующий заголовок
Accept-Ranges:bytes
Cache-Control:no-store
Content-Length:20
Content-Type:application/javascript
Date:Thu, 02 Feb 2017 11:14:51 GMT
Last-Modified:Thu, 02 Feb 2017 11:14:20 GMT
greeting.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script th:src="@{/test.js}"></script>
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
WebMvcConfiguration.java
@EnableWebMvc
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/test.js").addResourceLocations("classpath:/resources/").setCachePeriod(31556926);
}
}
WebSecurityConfig.java
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.headers()
.defaultsDisabled()
.cacheControl();
}
}
@dur, я хотел бы установить 31556926. я не знаю, какой набор без кэширования в Spring Security. Как я могу это достичь? – Max
@dur, я удалил WebSecurityConfig и WebMvcConfiguration. Я получил 'no store' в HTTP-заголовке ответа для' test.js' – Max
Нет, другого фильтра нет. То же самое для .css – Max