For the record: The problem with caching signals is not that I would have to invalidate too often, but rather that it's just not possible to cache at all. The way it works currently is that once I complete an update, I set up some hidden lamps with circuit conditions, such that I can tell if the highest signal changed since last time just by checking if the lamps are enabled or not. I can't see a way to do something similar that would be able to ignore certain signals... At least not without using way too many lamps.
Important to note here is that the main thing I'm trying to avoid is reading signals from the network - api calls are incredibly slow and so simply checking if two lamps are enabled is far better than getting all the signals from two networks and doing the logic in lua. At least that was the case last time I checked, which was admittedly quite a long time ago.