gpt4 book ai didi

caching - Spring Boot中如何防止缓存

转载 作者:行者123 更新时间:2023-12-02 07:33:03 24 4
gpt4 key购买 nike

我有一个 gradle 项目,我在后端和前端 Angular 2 中使用 spring-boot。每次我在添加或删除后执行get-Request时,IE都不会调用get-方法。他从缓存中获取数组。

我已经找到了客户端的解决方案。我已经放置了标题:

        'Cache-Control': 'no-cache, no-store, max-age=0, must-revalidate',
'Pragma': 'no-cache',
'Expires': '0'

在我的请求中。然后就可以了。

但我尝试在服务器端解决这个问题。我在互联网上发现,如果您只需添加

,就可以防止缓存
spring.cache.type=NONE

在你的application.properties中。但这是行不通的。

我还忘记了什么吗?

应用:

@SpringBootApplication
public class MyApplicationextends SpringBootServletInitializer{

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyApplication.class);

}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

UI Controller :

@RequestMapping("/service")
public interface MyUIController {

@RequestMapping(method=RequestMethod.GET, value= "/getBooks", produces="application/json")
public List<Books> getBooks(HttpServletRequest request, HttpServletResponse response);
}

休息 Controller :

@RestController
public class MyRestController implements MyUIController {
public List<DomainEntity> getDomains(HttpServletRequest request, HttpServletResponse response) {
return myUIService.getBookss(request, response);

服务:

@Service
public class MyUIService {
public List<Books> getBooks(HttpServletRequest request, HttpServletResponse response) {

HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));
HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

ResponseEntity<List<Books>> responseEntity = restTemplate.exchange(
UriComponentsBuilder.fromHttpUrl(url).build().encode().toUri(),
HttpMethod.GET,
requestEntity,
new ParameterizedTypeReference<List<Books>>(){});

return responseEntity.getBody();
}

最佳答案

正如 M. Deinum 提到的,spring.cache.type 用于缓存支持,这完全是 Spring 的另一个功能。

但是根据 Spring docs ,可以使用此 java 配置来启用缓存控制:

@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
// ...
.headers().cacheControl();
}
}

这将自动添加必要的缓存控制 header 。

关于caching - Spring Boot中如何防止缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39119664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com