Note that a client implementation MAY cache ClientKey&ServerKey (or just SaltedPassword) for later reauthentication to the same service, as it is likely that the server is going to advertise the same salt value upon reauthentication.
Authen::Scram should cache the salt, iteration count and salted password and reuse the salted password if the salt and iteration count are unchanged.
RFC-5802 says:
Authen::Scram should cache the salt, iteration count and salted password and reuse the salted password if the salt and iteration count are unchanged.