幂等性
- 如果 1 个事务,不管是执行 1 次还是多次,得到的结果都相同(具有同样的副作用),这个事务就是幂等的。
- 可以认为 GET、HEAD、PUT、DELETE、TRACE、OPTIONS 方法是幂等的(基于 GET 构建动态表单,要确保这些表单是幂等的)。
- 客户端不应该以管道化方式发送非幂等请求(比如 POST )。
(管道化是指 1 个 TCP 连接中,有多个并行的 HTTP 事务。) - 否则,传输连接的过早终止就会造成一些不确定的后果。
- 要发送 1 条非幂等请求,就需要等待来自前 1 条请求的响应状态。
- 比如,大多数浏览器都会在重载 1 个缓存的 POST 响应时,提供 1 个对话框,询问用户是否希望再次发起事务处理。
参考文献:
- 《HTTP 权威指南》 - 4.7.3 连接关闭容限、重试以及幂等性 - P107,P108;
- 幂等 Idempotence。