Core Idea
This app models user navigation as a Markov chain. The transition matrix estimates where a user is likely to go next. Power iteration finds the long-run steady-state distribution. By default, the simulation caches the top endpoints from that steady-state vector, matching the paper method.
What Is Real
- Live mode sends real browser GET requests to the backend probe endpoint.
- The backend keeps an automatic in-memory cache for warmed responses.
- Repeated requests for the same endpoint return the same stable payload.
- The visible latency difference generally comes from upstream delay versus server memory-cache reads.
- The default cache policy is fixed for the whole run after convergence.
What Is Simulated
- The backend payloads are synthetic benchmark resources, not a real production database.
- Upstream latency is controlled by the test server, with small timing jitter.
- User navigation is sampled from the matrix, not collected from real visitors.
- Cloudflare Pages Functions may keep in-memory cache per isolate, so cache persistence is not globally guaranteed.
- The dynamic next-step cache policy is an optional extension, not the paper's steady-state cache method.
Warnings
Do not present this as an exact production benchmark. It is a controlled educational benchmark for comparing request paths under the same payload model.
- Real systems need eviction policy, invalidation, auth-aware cache keys, rate limits, and stale-data handling.
- Network timing depends on browser, hosting region, cold starts, local machine load, and CDN behavior.
- Custom backend URLs should be used only by people who own that endpoint or have permission to send repeated test requests.
- Higher cache budget usually improves hit rate but increases memory use and stale-data risk.
- Prefetching helps only when predictions are good enough to offset extra backend work.