当前位置: 首页 > wzjs >正文

郑州做的比较好网站公司江苏宜安建设有限公司网站

郑州做的比较好网站公司,江苏宜安建设有限公司网站,有那种做订单的网站吗,如何进行电商网站设计开发[Java实战]Spring Boot 静态资源配置(十三) 引言 静态资源(如 HTML、CSS、JavaScript、图片等)是 Web 应用的基石。Spring Boot 通过自动化配置简化了静态资源管理,但面对复杂场景(如多模块项目、CDN 集成…

[Java实战]Spring Boot 静态资源配置(十三)

引言

静态资源(如 HTML、CSS、JavaScript、图片等)是 Web 应用的基石。Spring Boot 通过自动化配置简化了静态资源管理,但面对复杂场景(如多模块项目、CDN 集成、缓存优化)时,开发者仍需深入理解其工作原理。本文将系统解析 静态资源加载机制自定义配置技巧性能优化方案,并提供企业级实战案例。

一、Spring Boot 静态资源默认配置

1. 默认资源路径与优先级

Spring Boot 自动映射以下目录中的静态资源(按优先级排序):

目录说明示例路径
classpath:/META-INF/resources/Jar 包内资源src/main/resources/META-INF/resources/logo.png
classpath:/resources/标准资源目录src/main/resources/resources/css/style.css
classpath:/static/常用静态资源目录src/main/resources/static/js/app.js
classpath:/public/公共资源目录src/main/resources/public/images/banner.jpg

访问规则

  • 所有资源映射到 /** 路径。
  • 示例:static/js/app.jshttp://localhost:8080/js/app.js

2. 默认首页(Welcome Page)

Spring Boot 自动识别以下位置的 index.html 作为首页:

classpath:/META-INF/resources/index.html
classpath:/resources/index.html
classpath:/static/index.html
classpath:/public/index.html

二、自定义静态资源配置

1. 修改默认资源路径

application.yml 中覆盖默认配置:

spring:web:resources:static-locations: - classpath:/assets/     # 自定义目录- file:/opt/static/      # 外部目录(优先级高于 classpath)

2. 添加额外资源路径

通过 WebMvcConfigurer 扩展:

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/custom/**")  // 访问路径.addResourceLocations("classpath:/custom-static/", "file:/data/static/") // 资源位置.setCacheControl(CacheControl.maxAge(30, TimeUnit.DAYS)); // 缓存策略}
}

三、高阶配置与性能优化

1. 资源版本控制(防缓存)

为资源添加哈希版本,避免浏览器缓存旧文件:

spring:web:resources:chain:strategy:content:enabled: truepaths: /static/**   # 对 /static 下的文件启用版本控制

访问路径将变为:/static/js/app-abc123.js

2. 资源压缩(Gzip/Brotli)

启用响应压缩,减少传输体积:

server:compression:enabled: truemime-types: text/html,text/css,application/javascriptmin-response-size: 1024

3. CDN 集成

将静态资源托管到 CDN,提升访问速度:

@Configuration
public class CdnConfig {@Value("${cdn.host}")private String cdnHost;@Beanpublic ResourceUrlEncodingFilter resourceUrlEncodingFilter() {return new ResourceUrlEncodingFilter();}@Beanpublic ResourceUrlProvider resourceUrlProvider() {ResourceUrlProvider urlProvider = new ResourceUrlProvider();urlProvider.setHandlerMap(Collections.singletonMap("/static/**", new CdnResourceResolver(cdnHost)));return urlProvider;}
}

四、企业级实战案例

案例 1:多模块项目资源管理

项目结构

parent-project
├── core-module(业务逻辑)
└── web-module(Web 层)└── src/main/resources└── static└── web-module  # 模块隔离资源

配置

# web-module 的 application.yml
spring:web:resources:static-locations: classpath:/static/web-module/

案例 2:动态主题切换

根据用户选择加载不同主题的 CSS:

<link th:href="@{/themes/${user.theme}/style.css}" rel="stylesheet">

目录结构

static
└── themes├── default│   └── style.css└── dark└── style.css

五、常见问题与解决方案

1. 静态资源 404 错误

  • 排查步骤
    1. 检查文件是否在配置的 static-locations 路径中。
    2. 确认访问 URL 与资源路径匹配(注意大小写)。
    3. 清除浏览器缓存或使用无痕模式测试。

2. 缓存导致资源未更新

  • 解决方案
    • 启用版本控制(内容哈希)。
    • 强制刷新:Ctrl + F5(Windows)或 Cmd + Shift + R(Mac)。

3. 安全限制

Spring Security 放行静态资源

@Configuration
@EnableWebSecurity
public class SecurityConfig {@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.authorizeRequests().requestMatchers("/static/**", "/public/**").permitAll().anyRequest().authenticated();return http.build();}
}

六、总结与最佳实践

  1. 目录规范:按类型组织资源(如 /static/css/static/js)。
  2. 环境区分:开发环境禁用缓存,生产环境启用压缩和版本控制。
  3. 监控优化:使用工具(如 Lighthouse)分析资源加载性能。
  4. 安全防护:避免敏感文件暴露在静态目录中。

扩展思考:如何结合 Spring Boot 与 WebAssembly 实现高性能前端?欢迎评论区探讨!

附录

  • Spring Boot 资源处理官方文档
  • HTTP 缓存策略详解(MDN)

希望本教程对您有帮助,请点赞❤️收藏⭐关注支持!欢迎在评论区留言交流技术细节!


文章转载自:

http://hHAVZuvF.fbtgp.cn
http://DBqCqhvZ.fbtgp.cn
http://0kzv0KDS.fbtgp.cn
http://clbM7wG9.fbtgp.cn
http://Cqyh9q92.fbtgp.cn
http://HTZivhBE.fbtgp.cn
http://2rGQp7fw.fbtgp.cn
http://IfpndVNf.fbtgp.cn
http://DZBJfLAJ.fbtgp.cn
http://pqHdkrYg.fbtgp.cn
http://pffFKAN6.fbtgp.cn
http://JvekmaHV.fbtgp.cn
http://HFgy7eHp.fbtgp.cn
http://ZZvJ04PO.fbtgp.cn
http://QXsTeXOo.fbtgp.cn
http://WNfKTFlN.fbtgp.cn
http://yixezz7C.fbtgp.cn
http://qjTHxLGL.fbtgp.cn
http://d6o3Q8oh.fbtgp.cn
http://eGH1INWm.fbtgp.cn
http://3Si0I3Ds.fbtgp.cn
http://FZs0SVEP.fbtgp.cn
http://XOSRAi4l.fbtgp.cn
http://BgO7CPch.fbtgp.cn
http://jV77mSLg.fbtgp.cn
http://l5msFOdH.fbtgp.cn
http://6TxAEc3t.fbtgp.cn
http://ZtgfxuhV.fbtgp.cn
http://5J6G43dI.fbtgp.cn
http://mhSiQo0L.fbtgp.cn
http://www.dtcms.com/wzjs/599957.html

相关文章:

  • 国内外设计网站商城网站开发需求分析
  • 肇庆 网站建设 骏域网站南宁如何做百度的网站推广
  • wordpress网站做h5分类零售管理系统哪个软件好
  • 响应网站和模板网站北京网站设计合理刻
  • 网站建设氺首选金手指14ec网站域名
  • 银川如何做百度的网站专业的扬州网站建设
  • 网站建设模板后台新建的网站 找不到
  • 个人网站如何加入百度联盟软件界面设计的标准是什么
  • 网站建设手机apphtml自我介绍代码
  • 教研室网站建设大美互助app
  • 大淘客构建自己的网站网上交易系统
  • 做网站出路哪家公司建网站好
  • 网站html模板下载深圳网站建设公司哪家好
  • 做美食直播哪个网站最好免费空间最大的网盘
  • 网站建设 合同网页编辑岗位职责
  • 网站后台编辑技巧溧阳市城乡建设局网站
  • 阿里建站平台官网图片上传 网站建设教学视频教程
  • 柒零叁网站建设网上商城如何做起来
  • 商务网站的建设与管理wordpress mysql 配置
  • 网站的盈利模式龙华住房与建设局网站
  • vps如果制作论坛网站百度推广怎么看关键词排名
  • 淘宝网站的建设内容如何把自己的网站推广
  • 淘宝客网站一定要备案长春关键词seo
  • cpc引流做网站cpa推广做邀请函好的网站
  • 海外网站开发成都建设网官方网站
  • 青岛南丰网站建设公司网站的排版好看
  • 网站推广 英文搭建小程序的方式有几种
  • 朝阳市网站制作网站开发与维护是干什么的
  • 广州官方网站建设qq自动发货平台网站怎么做
  • iis8 wordpressseo好seo