1. 程式人生 > 程式設計 >Springboot如何設定靜態資源快取一年

Springboot如何設定靜態資源快取一年

這篇文章主要介紹了Springboot如何設定靜態資源快取一年,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

由於本人所在專案組,所用的專案是前後端分離的,前端是React 的SPA,每次打包都會新版本的靜態檔案。

然而,在有些時候,這些靜態資源是不變的,故可以將資源快取至使用者本地,提升效能。

寫法如下,需要繼承WebMvcConfigurerAdapter類,並重寫addResourceHandlers方法。就可以告訴瀏覽器強制快取

package cn.ixan.search.configuration;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.CacheControl;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import java.util.concurrent.TimeUnit;


@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
  /**
   * <p>設定靜態資源快取時間:1年</p>
   * <p>注意:不可快取入口檔案</p>
   * @param registry 資源註冊
   */
  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/*.js","/*.css")
        .addResourceLocations("classpath:/static/")
        //.setCacheControl(CacheControl.maxAge(365,TimeUnit.DAYS).cachePublic())
        .setCachePeriod(3153600);
  }
}

據某位大佬說,大家可以強制設定靜態資源快取一年,但一定不要快取入口檔案,大家可以試試改造自己的專案。

如果設定成功,會有下面的效果,from disk cache,一般情況是from memory cache

大家還可以注意下cache-control這個值,當然這個值是以秒為單位的。

有興趣的同學可以研究研究cache-control,補充補充web基礎知識

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。