Cache should be per `rsync` invocation, no?  Do you really want to share it for the lifetime of this module, and all subsequent invocations?  That seems wrong, but maybe I'm misunderstanding.