Nodejs KeystoneJS 在 Raspberry Pi 上登录太慢的问题
Nodejs KeystoneJS 在 Raspberry Pi 上登录太慢的问题
关于 KeystoneJS,请参见 JsNoder.com
最近我成功地把一个 KeystoneJS 应用装在了一个 Raspberry Pi Model B 上,系统是用的 Raspbian Wheezy 2014-09-09. 速度其实还不错 (超频到 900mhz),如果用户较少的话普通用用没有问题。但就是 login 的时候特慢,要 20~30 秒左右。 试过用本地的 MongoDB 和远程 MongLab 都这样,忒慢。 后来发现是 JavaScript 的 bcrypt 性能问题。换成 c/c++ 的就可以了,登录验证只要 2~3 秒完成,完全可以接受。发现 Node.js 好像至少有两个纯 js 的 bcrypt 包,一个是 bcryptjs, 貌似 Ghost 就是用的这个包,参见这个 博客 和 Ghost Issue #1207。所以如果要在 Raspberry Pi 上使用 Ghost 也得更换 bcrypt 包。另外一个就是 KeystoneJS 使用的 bcrypt-nodejs 。
如何更换:
- 先转到 Keystone 的目录
cd /your/keystoneapp/path - 安装 c/c++ 版的 bcrypt 包 npm install bcrypt
- 更换 Keystone 的密码包。打开 sudo nano node_modules/keystone/lib/fieldTypes/password.js
- 然后在编辑器里,大概第7行, bcrypt = require(‘bcrypt-nodejs’), 更改为 bcrypt = require(‘bcrypt’), 搞定。这样就可以在 Raspberry Pi 上比较流畅的使用 Keystone 应用了。
Nodejs KeystoneJS 在 Raspberry Pi 上登录太慢的问题
最近我成功地将一个 KeystoneJS 应用部署到了一个 Raspberry Pi Model B 上,使用的系统是 Raspbian Wheezy 2014-09-09。速度其实还不错(超频到 900mhz),如果用户较少的话,普通使用没有问题。但问题是登录速度非常慢,需要 20 到 30 秒左右。
尝试过使用本地的 MongoDB 和远程的 MongLab 都存在这个问题,速度异常缓慢。
后来我发现,这是由于 JavaScript 的 bcrypt
性能问题。将其替换为 C/C++ 版本的 bcrypt
后,登录验证只需要 2 到 3 秒即可完成,这已经是可以接受的速度了。
如何更换:
-
进入 KeystoneJS 应用目录
打开终端并导航到你的 KeystoneJS 应用目录:cd /your/keystoneapp/path
-
安装 C/C++ 版本的 bcrypt 包
运行以下命令来安装 C/C++ 版本的bcrypt
包:npm install bcrypt
-
更换 KeystoneJS 的密码处理包
编辑 KeystoneJS 中的密码处理文件:sudo nano node_modules/keystone/lib/fieldTypes/password.js
-
修改密码处理文件
找到文件中大约第7行的以下代码:bcrypt = require('bcrypt-nodejs'),
修改为:
bcrypt = require('bcrypt'),
完成上述步骤后,KeystoneJS 应用在 Raspberry Pi 上的登录速度将会显著提升。
希望这些步骤能够帮助你解决登录慢的问题!如果还有其他问题,请随时联系我。
关于 KeystoneJS 的更多信息,请访问 JsNoder.com。
通过以上步骤,你可以显著提高 KeystoneJS 在 Raspberry Pi 上的性能,特别是登录速度。如果你有更多问题或需要进一步的帮助,请随时提问!
有道理。bcrypt还真对CPU是个考量。
不过也有人说 bcrypt 慢是防 brute force 破解的
在 Raspberry Pi 上运行 KeystoneJS 时遇到登录慢的问题,通常是由 bcrypt 的性能问题引起的。bcrypt 是一个用于密码哈希的库,而纯 JavaScript 实现的 bcrypt 在低性能设备上(如 Raspberry Pi)运行效率较低。以下是解决这个问题的步骤:
-
切换到 C/C++ 实现的 bcrypt 包:
- 首先,进入你的 KeystoneJS 应用目录:
cd /path/to/your/keystoneapp
- 安装 C/C++ 实现的 bcrypt 包:
npm uninstall bcrypt-nodejs npm install bcrypt
- 首先,进入你的 KeystoneJS 应用目录:
-
修改 KeystoneJS 的配置以使用新的 bcrypt 包:
- 打开 KeystoneJS 中
password.js
文件,通常位于/node_modules/keystone/lib/fieldTypes/
目录下:sudo nano node_modules/keystone/lib/fieldTypes/password.js
- 找到大约第 7 行的以下代码:
bcrypt = require('bcrypt-nodejs'),
- 修改为:
bcrypt = require('bcrypt'),
- 打开 KeystoneJS 中
完成上述步骤后,KeystoneJS 应该会使用更快的 C/C++ 实现的 bcrypt 包来处理密码哈希,从而显著提高登录速度。
示例代码
// 修改前
bcrypt = require('bcrypt-nodejs'),
// 修改后
bcrypt = require('bcrypt'),
通过以上操作,可以显著提升 KeystoneJS 在 Raspberry Pi 上的登录速度。