一个模拟304机制的方法——针对一次超大数据的post请求
来源:互联网 发布:扫图宝软件 编辑:程序博客网 时间:2024/06/06 03:07
场景:
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请求
- ASP模拟POST提交数据的方法
- 针对post和get请求的理论知识
- UWP——HttpClient模拟浏览器的GET、POST请求
- 利用fiddler模拟发送json数据的post请求
- 利用fiddler模拟发送json数据的post请求
- php模拟POST请求的两种方法
- php模拟POST请求的两种方法
- 数据请求的两种方法 get post NSURLConnection请求
- Fiddler模拟post和get请求,分析请求的参数、请求的数据
- 针对andoid 客户端的Get请求 和 Post 请求
- 用$.post为ComboBox请求的数据添加一个选项
- curl 模拟一个post请求
- 一个ajax的Post请求
- 获取post请求的数据
- PHP中模拟post提交数据的方法
- php 模拟POST提交数据的2种方法
- kevinsawicki 的 HttpRequest使用Post方法请求数据
- 安装编译源码php5.6.11
- 安装Ubuntu 15.04后要做的事
- openal 基本知识
- ajax node.js
- 金蝶K/3WISE V14.0安装包下载地址,金蝶K3 WISE V14.0安装包资源包下载链接
- 一个模拟304机制的方法——针对一次超大数据的post请求
- Tomcat7.0.22安装配置
- Java中的引用和C++中引用的区别
- s2s4h4框架整合之平台搭建(1)
- 使用均匀分布随机数产生器构造任意分布的随机数产生器
- 汇顶GT9158 touchpad调试总结
- 转载架构师的成长之路
- TLD理解之Forward-Backward Error
- 创建图片内存副本和旋转,缩放,平移,镜面,倒影