一个POST请求的小优化

看到一个实现HTTP POST请求幂等性的优化方案,非原创,只是记录一下。

POST请求可能会发生以下场景:

1.客户端发送HTTP POST请求。
2.后端创建任务并提交到数据库。
3.客户端失去网络连接。
4.后端试图发送一个成功的响应,但由于客户端失去网络连接,所以无法这样做。
客户机没有得到成功的响应,因此请求失败。于是客户端创建一个重复的请求,这样就浪费了网络资源。

优化方法:

客户端在HTTP头加一个任意字符串作为key,随机生成一个不重复的key对应每个需求。

如果来自同一用户的另一个请求在24小时内使用相同的key则认为是同一请求。

时间: 2024-11-04 05:36:34

一个POST请求的小优化的相关文章

【转】两天快速开发一个自己的微信小程序 悬笔e绝 www.xuanbiyijue.com

文章出处:https://www.cnblogs.com/xuanbiyijue/p/7980010.html 作者: 悬笔e绝 www.xuanbiyijue.com 两天快速开发一个自己的微信小程序 一.写在前面 1.为什么要学小程序开发? 对于前端开发而言,微信小程序因为其简单快速.开发成本低.用户流量巨大等特点,也就成了前端开发工程师必会的一个技能. 2.先放上我做的小程序 可以在微信小程序搜索“悬笔e绝”,或者用微信扫描下面的二维码哦 (1)欢迎页:这个logo是当年念大学给社团做的l

缓存 Array.length 是老生常谈的小优化

问题 缓存 Array.length 是老生常谈的小优化. // 不缓存 for (var i = 0; i < arr.length; i++) { ... } // 缓存 var len = arr.length; for (var i = 0; i < len; i++) { ... } // 或者 for (var i = 0, len = arr.length; i < len; i++) { ... } 但以前写过 Java 的笔者一直对这种破碎的写法感到不适,也对这种写法的

Lichee (六) 配置内核时的一点小优化

我们在分析<Lichee(二) 在sun4i_crane平台下的编译 >的时候,居然没有一个步骤是在配置内核 make ARCH=arm menuconfig 仔细的读过的代码的会发现,在build_kernel有这么一段话 if [ ! -e .config ]; then echo -e "\n\t\tUsing default config... ...!\n" cp arch/arm/configs/sun4i_crane_defconfig .config fi

现学现卖的一个“快递查询“的小程序开发

最近微信小程序是炒的如火如荼,各种热门, 正好赶上这个热潮,这几天先把小程序技术文档看了个遍,结合教程手写了一个案例.今天写了一个快递查询的小demo,大致分为三步 产品需求,准备api,代码编写. 第一步:产品需求,我们需要实现如下图的一个功能,在文本框输入快递单号,点击查询,下面出来我们需要的快递信息 第二步:准备 我们先找一个快递的api接口,通过http://apistore.baidu.com/我们可以看到很多的api,我们找一个快递查询的 我们可以看到有接口地址,和一些参数.做好这个

Popush前端小优化-邹豪风

[实现篇] 实现功能 实现Popush用户注册后自动登录功能. 实现思路 阅读Popush代码的前端部分,主要观察了Views中关于注册和登录两个部分向后台传递数据的方式.发现该项目前后端交互的机理是:客户端利用socket.emit发送数据到服务器端,服务器端利用socket.on进行事件响应并处理相关数据. 客户端发送数据: 1 app.socket.emit('register', { 2 name: name, 3 password: pass, 4 }); 服务器端响应: 1 sock

只是一个关于表白的小程序而已,如果你不知道怎么拒绝我,那就来掐死我吧。

只是一个关于表白的小程序而已,如果你不知道怎么拒绝我,那就来掐死我吧. 背景: 小M同学喜欢小X同学,并且小M同学跟你们一样是枚程序猿.小M同学决定向小X同学表白.但是小M同学他是个程序猿啊,所以他害羞腼腆,不好意思直接说,于是他决定写了小程序向小X同学表白.于是发生了如下的事情. 时间:某年某月20日    人物:小M和小X    地点:说多是泪 (通话中) 小M:小X吗?我是小M. 小X:是啊,怎么了? 小M:是这样的,我最近写了个小程序,不知道你有没有时间帮我测一下啊? 小X:时间倒是有的

从一个页面请求开始(一)

在本地浏览器上输入www.hello.com时,简单的实现流程是:在客户端上,检查本地的hosts文件中是否有主机名和ip对应,有对应ip,则用HTTP协议封装数据请求,添加应用层首部,添加tcp首部,添加ip首部,添加mac地址后从本地出去,到对应的WEB服务器上,没有对应的ip,则查找resolv.conf文件上DNS的位置,DNS不在同一网络内,则请求需要通过网关做转发,通过路由器来寻找到对应DNS的位置,此处可能经过多个DNS解析,直到DNS找到后,将FQDN解析为一个互联网上的ip,再

scrapy框架的日志等级和请求传参, 优化效率

目录 scrapy框架的日志等级和请求传参, 优化效率 Scrapy的日志等级 请求传参 如何提高scripy的爬取效率 scrapy框架的日志等级和请求传参, 优化效率 Scrapy的日志等级 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy的日志信息. 日志信息的种类: ERROR : 一般错误 WARNING : 警告 INFO : 一般的信息 DEBUG : 调试信息 设置日志信息指定输出: 在settings.py配置文件中,加

基于 request cache 请求缓存技术优化批量商品数据查询接口_一点课堂(多岸学院)

基于 request cache 请求缓存技术优化批量商品数据查询接口 Hystrix command 执行时 8 大步骤第三步,就是检查 Request cache 是否有缓存. 首先,有一个概念,叫做 Request Context 请求上下文,一般来说,在一个 web 应用中,如果我们用到了 Hystrix,我们会在一个 filter 里面,对每一个请求都施加一个请求上下文.就是说,每一次请求,就是一次请求上下文.然后在这次请求上下文中,我们会去执行 N 多代码,调用 N 多依赖服务,有的