This should really check if self._old_value is equal to self.value - if they're different, we probably want to set the cache anyway.