touch cache only if changed