0

我一直在努力理解 Yii2在这一行Rate-Limit-Reset中计算的 X-header值背后的逻辑。

文档指出:

X-Rate-Limit-Reset,为了获得最大允许请求数而等待的秒数

所以,如果速率限制是 100 并且时间段/窗口是 3600 秒,那么我知道它应该像这样工作:

  • 请求 #1 在 10:00 返回带有标头X-Rate-Limit-Reset 3599
  • 请求 #2 在 10:30 返回并带有标头X-Rate-Limit-Reset 1800
  • 请求 #3 在 10:59 返回带有标题X-Rate-Limit-Reset 59

我是不是误会了什么?或者这是一个错误?

4

1 回答 1

1

实际上它应该是这样的

  • 请求 #1 在 10:00 返回带有标头X-Rate-Limit-Reset 36
  • 请求 #2 在 10:30 返回并带有标头X-Rate-Limit-Reset 36
  • 请求 #3 在 10:59 返回带有标题X-Rate-Limit-Reset 36

这是因为在速率限制100 / 3600和稳定的请求数速率下,填充给定窗口 (3600) 需要 36 秒的间隔,因此在第一个请求后 36 秒后,您将再次收到 100 个可以使用的请求。

不幸的是,Yii 2 中有这个特性的错误(它每次都返回 0),但是由于你的问题,我能够找到它并提出一个应该在 2.0.14 中发布的修复程序。

于 2017-12-30T11:53:50.897 回答