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基礎知識

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM