我是靠谱客的博主 舒服樱桃,最近开发中收集的这篇文章主要介绍一个模拟304机制的方法——针对一次超大数据的post请求,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

场景:

      post拉取一个超大的数据,比如通讯录等。


       为了避免每次都要请求都要拉取超大数据,我们可以在第一次请求后,把这份超大数据本地存储起来,下一次时,如果判断本地数据没有失效,就直接使用本地数据,而不用服务端传递庞大数据了,这样就在一定程度上缩短了http传递数据的时间了。这里的要点就是判断数据是否失效的机制。流程图不太好画,就用伪码吧。


这里使用了nodejs作为中间过渡层,大概的流程如下:

A:客户端设置headers["cache-flag"]=1给nodejs;

B:nodejs返回大数据Data给客户端

C:nodejs返回heades["cache-md5"] ="xxxx"给客户端

D:客户端本地存储大数据Data

E:客户端本地存储headers.cache-md5的值xxxx

F:客户端设置headers["cache-flag"]=1,并且从本地存储中拿到xxxx设置headers["cache-md5"]="xxxx"给nodejs

G:nodejs返回headers["cache-target"]=1给客户端

H:nodejs返回headers["cache-md5"]="newxxxx"给客户端

I:客户端使用本地存储的Data



具体的解释:

1、客户端:如果要使用缓存机制,在发请求的时候,设置一个请求头headers["cahce-flag"]=1;

2、nodeJs:(每次还是会请求底层服务端拿到数据),判断请求头有没有cache-flag,如果没有直接把从底层服务端拿到的数据返回给客户端;如果有cache-flag标志,再判断有没有headers["cache-md5"],如果没有,统一直接返回数据,如果有,则把nodejs拿到的数据打一个md5值newxxx",并且和请求的headers.cache-md5的值xxx相比较,如不相等,则说明过期,直接返回大数据,同时设置响应头,headers["cache-md5"]="newxxx";如果相等,说明没有过期,则把content-length设置为0,responseText设置为空,同时返回两个头部给客户端,headers["cache-target"] =1;headers["cache-md5"]="xxx"

3、客户端判断每次都会存储大数据data(如果有的话),也会每次存储nodejs返回的cache-md5,并且每次还会把这个cache-md5传递给nodejs,当客户端判断有header["cahce-target"],如果有,则说明缓存没有失效,则使用本地缓存。




感觉描述的有点啰嗦而且没有说清楚,还是整理一下画一个流程图吧。

最后

以上就是舒服樱桃为你收集整理的一个模拟304机制的方法——针对一次超大数据的post请求的全部内容,希望文章能够帮你解决一个模拟304机制的方法——针对一次超大数据的post请求所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部