2016-04-18 45 views
2

從我的客戶端查詢服務器的一些枚舉。現在,只要在服務器上查詢過一次,我想將這些枚舉緩存在客戶端中。在Spring Boot中啓用Http緩存

我試圖設置Cache-Control如下:

@CrossOrigin 
@RequestMapping(value = "enums/{name}", method = RequestMethod.GET) 
public List<String> getEnums(@PathVariable("name") String name, final HttpServletResponse response) { 
    response.setHeader("Cache-Control", "max-age=3600"); 
    return myservice.findAllEnums(name); 
} 

的響應頭似乎與Cache-control: max-age=3600正確設置。我也在我的安全配置中禁用了所有http頭,如下所示:

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

不幸的是,響應沒有在瀏覽器中緩存。只要我查詢資源,查詢就會再次進入服務器。

同時,我徹底刪除了Spring Security,但它仍然不起作用。 我的理解不正確?我還需要配置什麼?

回答

1

好吧,我注意到它使用的是IE,但沒有使用Chrome。 Chrome的問題在於,如果您要重新制作頁面,它會在請求的標題上設置Cache-control: max-age=0。這顯然會阻止數據被緩存。然後我使用超鏈接創建了一個簡單的html到我的應用程序,並通過此鏈接重新創建它。因此,緩存按預期工作。

0

您需要檢查Spring Security是否設置了no-cache HTTP頭進行恢復。 你可以在這裏得到更多的相關信息:How to enable HTTP response caching in Spring Boot

+0

同時,我compeltly關掉春季安全,但它仍然無法正常工作。 –