Intercepting when a page is requested
Your event subscriber is also picking up AJAX requests (e.g. /admin/coffee/get-data is an endpoint the Coffee module uses when it's needed in the client browser) which explains why you're seeing multiple events for a page request.
You can filter out those events with the logic best fits your needs (e.g. a $request-&gt;isXmlHttpRequest() call to check for AJAX requests, or a route whitelist as you mentioned).