To determine which banner a user should see, CentralNotice needs the following inputs: project, language, country, logged-in status, device, other user-specific information saved in the browser, and random numbers. It follows a two-step process: (1) filter on inputs available server-side and send the client a list of campaigns that may be available to this user, and (2) make the final selection on the client based on the remaining inputs. (More details here.)
This process could be a lot more efficient if we could process more inputs on the server. Many less users would receive a list of possible banners and the code needed to process the list, only to have that code determine that they aren't targeted by any of banners. Client-side processing could be simplified and the code there could be shrunk (though not eliminated).
The list of possible banners is sent to the client via a special RL module. To allow more server-side filtering, we should provide additional inputs in ResourceLoaderContext and fragment the cache on those paraemters for calls to load.php.
Even providing just one more input on the server would improve CentralNotice performance a lot.
Also: it seems there may be other use cases for providing access to this data server-side.