reactor-core/src/main/java/reactor/core/publisher/Mono.java
public final Mono<T> cache(Duration ttl, Scheduler timer) {
		return onAssembly(new MonoCacheTime<>(this, ttl, timer));
	}
public final Mono<T> cache(Duration ttl, Scheduler timer) {
		return onAssembly(new MonoCacheTime<>(this, ttl, timer));
	}
Turn this {@link Mono} into a hot source and cache last emitted signals for further
{@link Subscriber}, with an expiry timeout.
<p>
Completion and Error will also be replayed until {@code ttl} triggers in which case
the next {@link Subscriber} will start over a new subscription.
<p>
<img class="marble" src="doc-files/marbles/cacheWithTtlForMono.svg" alt="">

@param ttl Time-to-live for each cached item and post termination.
@param timer the {@link Scheduler} on which to measure the duration.

@return a replaying {@link Mono}