簡體   English   中英

在 Spring Boot 中啟用 Http 緩存

[英]Enable Http Cache in Spring Boot

從我的客戶端,我正在從服務器查詢一些枚舉。 現在,我想在服務器上查詢一次這些枚舉后立即將它們緩存在客戶端中。

我嘗試將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,但它仍然不起作用。 我沒有正確理解什么? 我還需要配置什么?

好的,我注意到它適用於 IE,但不適用於 Chrome。 Chrome 的問題在於,如果您正在刷新頁面,它會在請求的標頭上設置Cache-control: max-age=0 這顯然可以防止數據被緩存。 然后,我使用指向我的應用程序的超鏈接創建了一個簡單的 html,並通過此鏈接刷新它。 因此,緩存按預期工作。

您需要檢查是否有任何限制,因為 Spring Security 設置了 no-cache HTTP 標頭。 您可以在此處獲取更多相關信息: 如何在 Spring Boot 中啟用 HTTP 響應緩存

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM