通过RPXNow加速20秒的OpenID登录

Pet*_*ron 6 openid asp.net-mvc performance rpxnow dotnetopenauth

我已经为多个应用程序实现了RPXNow,作为OpenID和OAuth的一个很好的抽象,以支持Google和Facebook登录.我唯一的抱怨是登录时间过长.点击谷歌的"登录"按钮后,整个过程需要8-10秒才能完成,这来自我的本地机器!我只查询https://rpxnow.com/api/v2/auth_info一次来自my的响应字符串AccountController,其中包括登录结果和用户配置文件.

所以我选择实施DotNetOpenAuth.使用Google作为我的提供商,完成登录仍需要7-9秒!它不能是我的存储库层,因为Forms登录是即时的.因此,我必须将等待时间归因于我的系统,RPXNow和身份验证提供程序之间的延迟.同样的延迟发生在我的基本和高级RPXNow账户上.

StackOverflow上的Google OpenID登录似乎是即时的.如何加快我的OpenID登录速度?如果我可以将登录时间缩短到1-3秒,我愿意放弃RPXNow.


编辑:好的,所以我去了我的RPXNow请求实际需要多长时间,并且它不到两秒钟(从冷启动开始的1984ms和2100ms),但整个过程需要7-8*秒.也许这是重定向或谷歌的登录框.我将不得不再运行一些诊断程序.

  • 热烈的开始.缓存了RPXNow脚本,图像和DNS.

更多测试:我正在使用384kbps的ADSL连接进行测试,这也是SA的大多数人仍然拥有的.以下是使用Google登录的时间细分:

冷启动故障:

  1. 加载RPXNow小部件: 3.1s
  2. 加载弹出窗口: 5.9s
  3. 点击Google提供商:忽略
  4. 加载Google登录框: 4.1s
  5. 提交Google详细信息:忽略
  6. 等待RPX重定向: 7.7s(包括1.9s auth时间)

总登录时间,不包括在内.数据输入:

20.8秒.

太长.

热启动细分:

  1. 加载RPXNow小部件: 2.2s
  2. 通过Google登录: 6.5s(包括1.8s auth时间)

总登录时间,不包括在内.数据输入:

8.7秒

几乎可以接受.

who*_*itz 0

老实说,我们需要查看您的代码。一些一般的性能想法:

尽可能进行缓存,无论是在用户特定的会话中还是在 HttpCache 中(如果它是您不断重新计算的应用程序级别变量)。避免将文件写入磁盘。说实话,听起来你正在面对任何一个

  1. 网络延迟严重不酷
  2. 忙等待条件,其中某些东西正在等待获取锁定的资源
  3. 一个非常糟糕的算法做了一些坏事
  4. 大量向磁盘写入内容

我最好的建议是您单步执行代码并尝试在本地测试它。考虑在 System.Diagnostic 中使用 Stopwatch 并记录下您怀疑有问题代码所在的加载时间。隔离问题。在我看来,听起来您的主要性能问题与 OAuth 或 RPX 没有什么关系。

要增加页面加载时间,请考虑通过 Google PageSpeed Insights 运行页面,并确保尽可能缩小 JS 和 CSS。