【问题标题】:Is Stripe Checkout leaking memory?Stripe Checkout 是否泄漏内存?
【发布时间】:2018-01-16 18:29:56
【问题描述】:

我看到的问题是,当您使用他们的规范“自定义”指南将Stripe Checkout 加载到页面中,对其进行配置,然后打开和关闭它几次时,浏览器内存使用量会不断跳跃。有时,有点被释放了,但残留物总是在增长。在长期存在的页面/SPA 上,最终会出现爬网现象。

  1. 使用 --enable-precise-memory-info 标志启动 Google Chrome(有或没有此标志都会出现问题)
  2. 复制他们网站上的“自定义”示例:https://stripe.com/docs/checkout#integration-custom(或使用您自己的设置,结果相同)。
  3. 点击“购买”按钮(或触发您的stripeInstance.open(cfg)),摆弄弹出窗口,关闭。
  4. 重复第 3 步,逐渐观察记忆 ????

您可以使用 memory-stats.js 或仅在 (Chrome) 控制台中运行来查看内存:

performance.memory.usedJSHeapSize

我确信这必须是“我”而不是 Stripe。他们不可能在open 和close 事件上泄漏这么严重,对吧?


编辑:这是一个 JS fiddle,它从字面上复制了他们的演示代码:https://jsfiddle.net/p1Lfuewt/

还有一个 5 秒间隔的内存屏幕截图,基本上只是通过单击“购买”来打开和关闭它们的小部件(不知道承诺错误是什么,就是它们):

【问题讨论】:

  • 你能在这个问题上加入一个 jsfiddle 吗?这样调试会更容易。
  • @kichik 这是小提琴jsfiddle.net/p1Lfuewt

标签: javascript google-chrome memory-leaks stripe-payments


【解决方案1】:

无法确定,但他们可能会保留一些从未释放的数据,或者可能是 chrome 的 java 脚本引擎试图为将来缓存所有内容。您应该尝试让该页面保持一段时间,看看缓存是否下降。

【讨论】:

  • 是的,这是一种内存泄漏的定义。感谢您的建议(我们的测试表明,即使经过一段时间,内存也不会下降太多)。随意测试自己jsfiddle.net/p1Lfuewt
  • 我想说,也许不仅仅是条纹故障。
【解决方案2】:

简短的回答,是的。

更长的答案是,它确实看起来喜欢它。所附的JSFiddle example 复制了Stripe canonical docs,并且在打开和关闭 Stripe 小部件的简单操作中复制内存爆炸的问题是微不足道的。

handler.open({
  name: 'Stripe.com',
  description: '2 widgets',
  zipCode: true,
  amount: 2000
})
// Repeat for ?

我们实施的一个(可怕的)解决方法是跟踪打开+关闭事件的数量,并在 X 事件后强制重新加载以使边缘情况达到这些水平。

【讨论】:

  • 您是否已经将其报告为错误?如果是,请链接问题,如果不是,请做。
  • @Bergi 知道在哪里做吗? github.com/stripe Checkout 没有任何内容(未在他们的开源网站上列出),并且 Checkout 网站没有我可以找到的反馈机制。
  • 好吧,这是一个糟糕的支持。我只能找到support.stripe.com,其中提到了开发人员的 IRC 频道
猜你喜欢
  • 2012-09-13
  • 2020-07-22
  • 2010-10-13
  • 2019-01-28
  • 2015-02-07
  • 2011-01-29
  • 2011-05-08
  • 1970-01-01
  • 2011-06-26
相关资源
最近更新 更多