昨天在部署项目时遇到一个问题,因为服务要部署到外网使用,中间经过了较多的网络传输限制,而且要加载arcgis等较大的文件,所以在部署后,发现页面loading需要很长时间,而且刷新也要重新从服务器下载文件。这当然是不能忍受的,即使在不考虑文件大小的情况下,我们也希望我们的静态文件如js, css, json, img等,可以在刷新的时候尽量不重新加载,这样我们的页面会变得更有效率即使在网络不好的状况下。

  那么问题来了:

    我们如何在刷新浏览器时,使自己的项目中的任何可控静态文件,被浏览器缓存?

  就简单说下我的思路和经历:(声明,作为一名前端,有些理解可能是跑偏的,欢迎指点。

                另文章有引用看到的不错知识的连接,传送门走起~

                文中的很多思考,后端可以略过不看,因为我对后台有很多不确定性

                如果你只是想迅速知道结果,请看直达第五条后面

  1.当我获得这个需求后,我的第一个想法是从服务器端或者偏后台的的方向去寻求解决方法。但是由于我们作为一名前端开发者,我们总要先检查自己的前端是否可以完成,以及放在那一部分较好。很遗憾,前端好象对此无能为力(如果你有,欢迎指点)。此时,我们基本确定了自己需要研究的方向。

  2.最简单的方式,打开百度,我们获得的第一类相关信息为SpringMVC 配置静态资源缓存,基本思路是通过在web.xml中配置filter,还需要通过Tomcat容器进行一些过滤配置。一篇关于Tomcat下MVC静态资源强缓存配置的文章~,很遗憾,SpringBoot并不支持这种在web.xml中配置过滤器,显然这不是我们需要的。

  3.但我们至少缩小了我们的范围,继而我发现了页面在刷新请求资源时,使用的cache-contro为no-store.这时,由于我的SpringBoot项目,并没有进行特殊的配置,所以得出结论,如果不是SpringBoot内置的,就是通过Tomcat进行配置的。接着是另一篇传送门Tomcat配置Cache-Control~,但是通过配置之后发现并没有改变这些资源的Cache-Control,所以再一次兴奋起来,你又证明了一个不太可行的方式。

  4.其实很少有文章或者资源讲述SpringBoot缓存静态资源的,有一部分是将数据请求的缓存,之后又问了几个师兄,又通过百度,发现了1.SpringBoot可以写类似于MVC的过滤类,通过过滤配置强缓存, 2. 通过SpringBoot +redis配置缓存我们的静态资源。这里事情来到了一个要写过滤类的代码,事情来到了一个转折,加上当时我有其他内容要修改,所以就把这个交给了我们后台的兄弟们。思路已经很清晰了,写过滤类,实现静态资源缓存。或者是更复杂的一些东西。但是实现,我就不行了。不过事情到这里并没有结束,,,因为有更好的方法

  这里有一些我觉得可以了解的资源:

     浏览器缓存原理

    彻底理解浏览器缓存机制

    浏览器三种刷新的区别

  5.今天将近中午的时候,此项目前端的修改基本完成的时候,其实后台的兄弟也觉得实在不行就写Filter,但还是想找一种更合理简单的方法,我觉得这是很好的。我又继续我们自己的思考,如果有,那么一定是在SpringBoot内部进行设置,但是我们百度的总是SpringBoot和一些插件相结合进行控制(ex: EhCache),我觉得是自己对后台不理解导致的搜索盲区,最终误打误撞,找到了理想的解决方法:

  通过配置application.properties

    #资源缓存时间,单位秒

    spring.resources.cache-period: 3600   

    # 开启gzip压缩

    spring.resources.chain.gzipped=true

    # 启用缓存
    spring.resources.chain.cache=false

  

  总算啰嗦完了!(想必你也是这种心情,终于听你哔哔完了)

  写这篇文章算是一个记录,这个问题从昨天产生到解决中间过了大概有一天时间。但是真正思考这个问题的时间可能并没有多久,对自己能解决结果,真的是很意外。又觉得是值得记录的,因为证明了我之前有时候想的,前端和后台的开发思想,计算机思想,应该是一致的。嗯,也这么长时间没写博客了,献丑献丑~

  (希望以后有时间把自己总结的前端的干货(想减少大家和我当时对前端的误解,其实前端的内容真的很多很多,就是总感觉这些大家只要看都能懂的,就总不想写。。)都能分享一下,哎~)

  希望各位看官多多点赞,让我多在首页待一待好不~_~

转载于:https://www.cnblogs.com/zgh-blog/p/SpringBootCache.html

SpringBoot cache-control 配置静态资源缓存 (以及其中的思考经历)相关推荐

  1. nginx 配置静态资源缓存。解决web静态资源访问过慢

    Nginx文件结构 1.全局块:配置影响nginx全局的指令.一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等. ...

  2. idea拦截了html中的静态资源,IDEA配置静态资源热加载操作(Springboot修改静态资源不重启)...

    第一步: 修改file->settings->compiler->build project automatically 第二步: 按ctrl+shift+a,搜索Registry双 ...

  3. Nginx 静态资源缓存配置

    示例 # Media: images, icons, video, audio, HTC location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|m ...

  4. Springboot的web开发-静态资源

    1.web开发简介 SpringMVC自动配置概览 Spring Boot provides auto-configuration for Spring MVC that works well wit ...

  5. Spring boot 2.4开启静态资源缓存

    Spring boot 2.4开启静态资源缓存 yml配置: spring:web:resources:cache:cachecontrol:no-store: falsemax-age: 10000 ...

  6. nginx静态资源缓存与压缩

    一.静态资源缓存 参考文章 (1)apache设置max-age或expires 这里需要修改.htaccess文件. <IfModule mod_headers.c><FilesM ...

  7. Spring-Boot:写出来的网站访问不到静态资源?怎样通过url访问SpringBoot项目中的静态资源?localhost:8989/favicon.ico访问不了工程中的图标资源?

    Spring-Boot:Spring-Boot写出来的网站访问不到静态资源?怎样通过url访问SpringBoot项目中的静态资源?localhost:8989/favicon.ico访问不了工程中的 ...

  8. 前端web:浏览器静态资源缓存策略

    浏览器静态资源缓存策略 浏览器其实提供了两种控制策略,分别是强制缓存和协商缓存 强制缓存 强制缓存:就是强制使用浏览器缓存下来的资源; 在指定的一段时间内用自己缓存的文件就行,不需要再次发出请求. 具 ...

  9. 前端静态资源缓存最优解以及max-age的陷阱

    原文地址:点这里 合理的使用缓存可以极大地提高网站资源的利用率,还可以节约带宽从而降低服务器成本.但是很多站点针对缓存的策略并不合理,甚至是完全无作为,如果是这样,就完全没有发挥出缓存的优势,而不合理 ...

最新文章

  1. maven的内部属性
  2. json文本装换为JSONArray
  3. 通过配置文件避免硬编码的一个例子
  4. php 路由 隐藏index,CI中路由与伪静态、隐藏index.php(十四)
  5. 从安装到部署的Cordova iOS应用开发说明
  6. fullpage.js(cndjs)
  7. IDEA拉取GitLab代码出现Git Pull failed remote: HTTP Basic: Access denied
  8. Oracle 数据库常用操作总结一之用户的创建、删除和赋权
  9. 测试用例设计方法——等价类划分法
  10. EasyUI入门—Layout布局
  11. python3爬虫实战-requests+beautifulsoup-爬取下载顶点网站的小说
  12. ps端午节计算机辅助设计,PS教程:端午节的字体设计
  13. java7723魂斗罗2_魂斗罗2013-丛林之谜
  14. gitlab忘记密码进行重置
  15. QT根据屏幕分辨率调整控件
  16. 武大计算机专业薪酬,2018大学毕业生薪酬排行榜公布:武大输给华科,更意想不到的高校是它...
  17. oracle锁矩阵,你有多了解Oracle Enqueue lock队列锁机制?
  18. 二极管专题:二极管钳位电路
  19. 学习bootstra前端框架2
  20. 1-Spring Security OAuth2专栏介绍

热门文章

  1. 层叠上下文-《CSS 世界》阅读笔记
  2. Pr简介安装教学与素材全家桶
  3. sublime text3配置python的代码提示
  4. hexo×语雀 实现云端富文本写作
  5. 计算机一级wps考试方式,2015全国计算机一级WPSoffice考试方式和要求
  6. c语言动态烟花小程序代码,如何用c语言编写动态烟花
  7. 杭电ACM2008题
  8. 锐捷网络认证客户端RG-SU苹果MAC OSX官方版下载,附使用说明
  9. 新版NFT数藏源码/可接支付+数字藏品系统
  10. flash builder 环境配置