前端与后端请求数据缓存的四种方式

前端与后端请求数据缓存的四种方式:

1,Cache-control

2,Expires

3,Etag/if-None-match

4,Last-modified/ if-Modified-Since

1,Cache-control 

服务端再相响应中设置 Cache-Control:max-age 来告诉浏览器,再有效时间内max-age内重复请求,无需再次访问浏览器,直接再浏览器获取结果。

服务器端设置,伪代码如下

header.set("Cache-Control","public,max-age=10")

 2,Expires

服务端再相响应中设置Expires:xxx 来告诉浏览器,再有效时间内Expires内重复请求,无需再次访问浏览器,直接再浏览器获取结果。

服务器端设置,伪代码如下

header.set("Expires",(date.now()+10).tostring())

3,Etag/if-None-match

etag需要搭配if-none-match使用,再首次请求资源时,服务器端对返回的数据,生成个签名,并设置再Etag里。浏览器缓存etag数据,并且再下次请求时候,再请求时将etag放在If-None-Match中。服务器端判断etag和if-none-match是否相等,若相等则说明数据未发生变化,服务器端返回304响应告诉浏览器从浏览器缓存中取数据即可。

前端设置伪代码:

伪代码块1:头部加If-None-Match

var ETagItem=JSON.parse(localStorage.getItem('EtagItem'))

headers:{'If-None-Match':ETagItem?ETagItem.etag:null}

伪代码块2:接收304响应,取数据

if(res.message.match(/code 304/)){

const data= EtagItem

}

伪代码块3:缓存数据

const {headers,data}=res
localStorage.setItem('EtagItem',Json.stringifyx({
etag:headers.etag,
data
}))

服务器端:给数据加密,然后在判断加密后的etag数值是否和前端传来的If-None-Match匹配

const dataETag=md5(data)
const resquestEtag=header.get('If-None-Match')
if(resquestEtag===dataETag){
  return 304
}

4,Last-modified/ if-Modified-Since

逻辑类似3,但是不是加密数据,是传一个数据结果最后修改时间,若是本次请求的 if-Modified-Since值还是最后修改时间,则返回304,否则返回数据和返回头部加上last-modified。前端收到数据后,localstorage缓存数据结果及last-modified值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
App前端后端数据交互是指在移动应用程序中,前端后端之间进行数据的传输和交换。前端是指App用户界面的展示层,负责与用户交互,收集用户的输入并展示数据后端是指服务器端的处理层,负责接收前端发送的请求并处理数据,最终将结果返回给前端。 在数据交互过程中,前端要向后端发送请求以获取所需的数据或执行相应的操作。请求可以通过HTTP协议发送,常见的请求类型有GET、POST、PUT、DELETE等。前端需要组装请求参数,如用户认证信息、查询条件等,并将其发送给后端后端在接收到前端请求之后,会对请求进行解析,并根据请求内容进行相关的数据处理。后端可以通过访问数据库、调用其他接口或进行计算等操作来获取、处理或生成数据。处理完成后,后端会将处理结果封装成HTTP响应并发送给前端前端在接收到后端的响应之后,会对响应进行解析,提取出所需的数据并进行展示或执行相应的操作。前端可以根据后端返回的状态码和响应内容来处理异常情况,并根据需要进行相应的错误提示或重试操作。 为了实现高效的数据交互,可以采用一些优化策略。例如,可以使用数据缓存来减少网络请求次数,使用压缩算法压缩数据体积,使用异步请求来提升用户体验等。 总之,App前端后端数据交互是移动应用程序中至关重要的一环,它通过前后端之间的数据传输和交换,实现了用户界面和服务器端的无缝连接,满足了用户获取数据和执行操作的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值