Given that the number of segments is bounded, I don't think it is an issue to cache per segment. And it would also probably help save memory since you wouldn't need to store the reader ids anymore?