2017-01-17 3 views
1

Я использую bcryptjs для хеширования и сравнения паролей на моем сервере узла. Вот моя функция:Bcryptjs Async не работает

this.testPassword = function(pass1, pass2, callback) { 
    bcrypt.compare(pass1, pass2, function(err, res) { 
     callback(err, res); 
    }.bind(this)); 
}; 

И вызов функции:

context.runQuery("...", function(resp, err) { 
    if (!err) { 
     testPassword("test11", "test12", function(err2, resp2) { 

     }); 
    }   
}); 

Несмотря на то, что это должно быть асинхронным, это замедляет работу сервера для 200мса. Это проблема с модулем bcrypt-js или с моей реализацией.

+0

кода кажется нормально для меня. Не совсем уверен, почему вы подразумеваете под «замедлением» ... но только потому, что что-то асинхронно в JS/node не означает, что это не повлияет на производительность ... Если эта операция очень интенсивная, она будет замедляться (потому что это не физически одновременно). Вы можете использовать что-то вроде работников, чтобы получить лучшие результаты, я думаю. –

+0

Итак, в чем смысл использования async? –

+0

Чтобы не блокировать выполнение, но это не значит, что производительность лучше, потому что он не использует физические параллельные возможности. Итак ... он должен замедляться, но он не должен блокироваться. –

ответ

0

Уменьшите количество SaltRounds, используемых для шифрования. Сокращение даже на 1 может продемонстрировать резкое повышение производительности.

Вот выдержка из Bcrypt documentation сравнить производительность в зависимости от количества SaltRounds:

  • раундов = 8: ~ 40 хешей/сек
  • раундов = 9: ~ 20 хешей/сек
  • раундов = 10: 10 ~ хешей/сек
  • раундов = 11: 5 ~ хешей/сек
  • раундов = 12: 2-3 хешей/сек
  • раундов = 13: ~ 1 сек/хэш
  • раундов = 14: ~ 1,5 сек/хэш
  • раундов = 15: ~ 3 сек/хэш
  • раундов = 25: ~ 1 час/хэш
  • раунды = 31: 2-3 дня/хэш

Надеется, что это помогает

+0

Это будет иметь значение, потому что 'callback' не будет вызываться, если функция сравнения не будет завершена. См. Ссылку на документацию. Кроме того, я рекомендую вам проверить его, чтобы увидеть разницу. –

+0

Ive уже уменьшил его до 8. Он все еще лагает. Я решил, что асинк исправит это –

Смежные вопросы