真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBootWeb如何實(shí)現(xiàn)靜態(tài)文件緩存處理

這篇文章主要為大家展示了“Spring Boot Web如何實(shí)現(xiàn)靜態(tài)文件緩存處理”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Spring Boot Web如何實(shí)現(xiàn)靜態(tài)文件緩存處理”這篇文章吧。

專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)北辰免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

采用Spring Boot + Freemarker開發(fā)Web項(xiàng)目時(shí),由于一些靜態(tài)文件比較大,如果是在PC上訪問影響不大,當(dāng)在手機(jī)上訪問時(shí),特別是用流量訪問時(shí)速度會(huì)慢很多,而且很耗流量。

通過對(duì)請(qǐng)求進(jìn)行抓包,可以發(fā)現(xiàn)每次進(jìn)入一個(gè)頁面都需要加載靜態(tài)文件,如果不差錢的公司可以將靜態(tài)文件放在cdn上來加快訪問速度,或者用Nginx來做靜態(tài)文件的緩存。

今天給大家介紹一種其他的緩存優(yōu)化方式,通過Spring的緩存機(jī)制來緩存靜態(tài)文件,在Spring Boot中配置靜態(tài)文件緩存只需要在配置文件中加入下面的配置即可:

# 資源緩存時(shí)間,單位秒
spring.resources.cache-period=604800 
# 開啟gzip壓縮
spring.resources.chain.gzipped=true 
# 啟用緩存
spring.resources.chain.cache=false

配置可以參考文檔: https://docs.spring.io/spring-boot/docs/1.5.4.RELEASE/reference/htmlsingle/ 的SPRING RESOURCES HANDLING部分

加上緩存配置后我們?cè)L問頁面后,被加載過的靜態(tài)資源就會(huì)緩存起來,第二次訪問時(shí)就不會(huì)再去重新請(qǐng)求下載了,通過抓包可以看出確實(shí)被緩存了。

Spring Boot Web如何實(shí)現(xiàn)靜態(tài)文件緩存處理

在Size那列有from memory cache,資源被緩存在瀏覽器的內(nèi)存中了,也有的文件會(huì)緩存在磁盤中,那就是from disk cache。

優(yōu)化目的是達(dá)到了,但是有一個(gè)小問題沒有解決,就是如果我的資源文件變了,比如css文件有修改,當(dāng)我服務(wù)端發(fā)布之后,用戶這邊還是會(huì)存在緩存。

最好的效果時(shí)當(dāng)文件有改變時(shí)或者說當(dāng)服務(wù)端的程序重啟之后,用戶的請(qǐng)求需要下載服務(wù)端的最新資源,沒有重啟的時(shí)候就用緩存的內(nèi)容,這樣就能保證更改后用戶能夠馬上看到最新的內(nèi)容。

我們可以用版本號(hào)來解決這個(gè)問題,就是在靜態(tài)資源后面加上一個(gè)版本號(hào),當(dāng)資源發(fā)生變化時(shí)將版本號(hào)也改變,這樣就不會(huì)有問題了。

使用方式如下:

用法很簡(jiǎn)單,關(guān)鍵是version這個(gè)值從哪來呢?

我們可以在啟動(dòng)前通過代碼設(shè)置這個(gè)值:

System.setProperty("version", version);

這個(gè)值可以通過main方法的args傳進(jìn)來,在啟動(dòng)項(xiàng)目的腳本中動(dòng)態(tài)傳到程序中,啟動(dòng)腳本可以獲取程序jar的MD5值作為版本號(hào),這樣當(dāng)服務(wù)端的程序重啟之后,版本號(hào)就變了,緩存就失效了。

然后在過濾器中獲取這個(gè)值設(shè)置到request中就可以在每個(gè)頁面中使用了

String version = System.getProperty("version");
req.setAttribute("version", version == null ? "1.0.0" : version);

除了這種參數(shù)傳遞的方式,大家還可以通過自定義打包的插件,在打包的時(shí)候?qū)ersion替換成具體的內(nèi)容也可以。

上面講的方式是通過自己去生成version來控制文件的變更,其實(shí)Spring Mvc中已經(jīng)提供了靜態(tài)文件的版本管理功能,有二種方式,一種是通過資源的MD5來生成版本號(hào),文件內(nèi)容變了,MD5肯定也變了。另一種是在資源的前面加上版本號(hào)的路徑。

MD5

在屬性文件中增加下面的配置:

spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**

增加Url的處理:

@ControllerAdvice
public class ControllerConfig {

  @Autowired
  ResourceUrlProvider resourceUrlProvider;

  @ModelAttribute("urls")
  public ResourceUrlProvider urls() {
    return this.resourceUrlProvider;
  }

}

頁面中使用方式如下:

復(fù)制代碼 代碼如下:


編譯之后就會(huì)變成下面的內(nèi)容:

復(fù)制代碼 代碼如下:


版本號(hào)

在屬性文件中增加下面的配置:

spring.resources.chain.strategy.fixed.enabled=true
spring.resources.chain.strategy.fixed.paths=/js/**,/v1.0.0/**
spring.resources.chain.strategy.fixed.version=v1.0.0

頁面中使用方式如下:

編譯之后就會(huì)變成下面的內(nèi)容:

無論使用哪種方式,能實(shí)現(xiàn)效果,并且工作量不會(huì)太大即可,優(yōu)化無止境,干就完了。

以上是“Spring Boot Web如何實(shí)現(xiàn)靜態(tài)文件緩存處理”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁題目:SpringBootWeb如何實(shí)現(xiàn)靜態(tài)文件緩存處理
轉(zhuǎn)載來源:http://weahome.cn/article/jsejig.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部