我尝试将“Cache-control:max-age = 60”设置为不经常从服务器获取数据超过60秒。但我真的不知道该怎么做。我试过这样的事情:
@GetMapping(value = "/movies")
public List<Movie> getMoviesData() {
CacheControl.maxAge(60, TimeUnit.SECONDS);
return (List<Movie>) movieRepository.findAll();
}
但它不会在邮差标题中显示任何内容。后来我尝试了这个:
在pom.xml中:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1-m02</version>
</dependency>
以下是代码:
@GetMapping(value = "/movies")
public List<Movie> getMoviesData() {
CacheControl cc = new CacheControl();
cc.setMaxAge(60);
cc.setPrivate(true);
return (List<Movie>) movieRepository.findAll();
}
但它也没有显示任何内容。现在我尝试了这个:
@GetMapping(value = "/movies")
public List<Movie> getMoviesData(HttpServletResponse response) {
response.addHeader("Cache-Control", "max-age=60");
response.addHeader("Last-Modified", new SimpleDateFormat("dd-MM-yyyy_HH:mm:ss").format(new Date()));
return (List<Movie>) movieRepository.findAll();
}
它显示Cache-Control →max-age=60
,但每次发送get请求时都会刷新Last-Modified
。例如,我有:
Last-Modified →21-01-2017_20:00:41
几秒后
Last-Modified →21-01-2017_20:00:46
所以max-age=60
不起作用。有人可能知道我做错了什么以及如何正确地做到这一点?