动静分离和前后端分离相关

动静分离和前后端分离相关

动静分离,动态资源 jps servlet spring mvc 与静态资源 js html img css  不会部署到同一个服务器

前后端分离   网站架构模式 微服务开发基于SOA,面向于服务器开发,后台和前段采用接口方式。将一个项目拆分成一个控制web (前端) 和接口(后端) 。最终使用rpc远程调用技术。

  视图层和业务逻辑层拆分,采用rpc远程调用技术

 

静态资源url后面加时间戳。

目的是为了控制项目上线时候,静态资源与老的浏览器缓存静态资源避免冲突。

规范  项目上线时间

 

 

 第一次请求 访问成功后 缓存在浏览器  第一次加载时不走缓存的 

第一次加载图片后  返回一个 最后修改时间

第一次下载资源时候 客户端保存修改资源时间

第二次下载资源时候 客户端判断客户端上一次修改的时间 是否需要返回300还是304

1、清缓存 会重新下载

2、

第二次下载资源时候,服务器判断当前资源文件与客户端上次修改的时间是否需要返回200还是304

如果服务器最后修改时间 大于 客户端 足厚一次修改的时间 重新加载

服务器端 最后一次修改的时间 小于客户端最后修改的时间 返回304 走本地缓存

 

默认浏览器缓存是 七天  

再次访问时候  走缓存

304状态码  走本地缓存

 

 

 生产环境中 js css 最后一次的修改时间与客户端缓存的最后一次修改的时间可能会产生冲突

 服务器端在 2018.11.6上线

  用户           2018.12.4 访问

 新的js文件上线 14.6    浏览器最后还是保留上次上线功能

解决方案: 直接在js加时间戳

 给静态的资源加时间戳 动态的不用加了

 

静态资源缓存

实际项目中在发布版本的时候,可能由于浏览器缓存导致与服务器端代码发生冲突。

这时候可以在静态资源请求后面加上时间戳,对应每次发布版本的时间。

火狐浏览器 F5 刷新

火狐浏览器 CTRL 强制刷新

 

HTTP 304状态码

客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。因此,如果请求中包含 If Modified Since,就说明已经有缓存在客户端。服务端只要判断这个时间和当前请求的文件的修改时间就可以确定是返回 304 还是 200 。
对于静态文件,例如:CSS、图片,服务器会自动完成 Last Modified 和 If Modified Since 的比较,完成缓存或者更新。但是对于动态页面,就是动态产生的页面,往往没有包含 Last Modified 信息,这样浏览器、网关等都不会做缓存,也就是在每次请求的时候都完成一个 200 的请求。
因此,对于动态页面做缓存加速,首先要在 Response 的 HTTP Header 中增加 Last Modified 定义,其次根据 Request 中的 If Modified Since 和被请求内容的更新时间来返回 200 或者 304 。虽然在返回 304 的时候已经做了一次数据库查询,但是可以避免接下来更多的数据库查询,并且没有返回页面内容而只是一个 HTTP Header,从而大大的降低带宽的消耗,对于用户的感觉也是提高

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个很常见的需求,下面是大致的步骤: 1. 创建SpringBoot项目 首先,我们需要使用Spring Initializr创建一个SpringBoot项目,添加Web,Spring Security和JPA依赖。 2. 配置Spring Security 添加一个Security配置类,该类继承WebSecurityConfigurerAdapter并重写configure方法,配置登录和注销URL,以及用户认证和授权规则。 3. 创建用户实体类和用户DAO接口 创建一个User实体类和一个UserRepository接口,使用JPA来实现对用户信息的存储和访问。 4. 创建登录页面 在前端项目中使用Vue框架,创建一个登录页面并添加相关的HTML、CSS和JavaScript代码。 5. 实现登录逻辑 在前端页面中,使用Vue的axios库向后端发送登录请求,后端接收请求并验证用户信息,验证通过后返回一个JWT令牌给前端。 6. 配置跨域请求 由于前后端分离,需要配置允许跨域请求,可以在SpringBoot项目中添加一个WebMvcConfigurer配置类,使用addCorsMappings方法配置跨域请求规则。 7. 配置JWT 在后端中,使用JWT来实现登录认证和授权,可以使用jjwt库来实现。 8. 实现JWT认证 在后端的Security配置类中,重写configure方法,添加一个JWT认证过滤器,用于解析JWT令牌并验证用户身份。 9. 实现JWT授权 同样在Security配置类中,添加一个JWT授权过滤器,用于验证用户是否有访问API的权限。 10. 集成前后端 将前端页面打包成静态文件,将其放置在SpringBoot项目的/resources/static目录下,启动SpringBoot项目,访问前端页面即可进行登录操作。 以上是大致的实现步骤,具体的实现细节需要根据你的具体需求来进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值