While it is always possible that they just massively suck at infrastructure, I suspect that cheating is the issue preventing more caching.
By keeping everything on their servers, the types of cheating you have to police are massively reduced.
And people who play Pokemon will do ANYTHING to catch 'em all.
There's a good chance players will click on the same pokestops again and again, so caching even just the last 50 one would be helpful.
Another user has already mentioned they don't attempt to cache image or textual information about Pokestops. Pokestops for most people are pretty recurring. This probably consume less information than the models but is also likely to be pretty static information.
Could you provide a source for this? I did some Googling but could not find any information supporting this.
I definitely agree on the Pokestop data, but I find it hard to believe that models and animations are not assets included in the app file.
If you were Niantic, and expecting Pokemon Go to be roughly as popular as Ingress, would you bother going to the effort of adding a caching layer when you could not, and expend your efforts on the front end and content, and get the release out sooner?
Because Ingress wasn't reliable either, and this way Pokémon Go has an opinion of being playable mostly when everyone else is asleep. It's only this week that I can actually run it somewhat reliably after work...
Speaking of Ingress portals - there were not much more dynamic than Pokéstops are (given that you can drop "Pokéstop modules" on them, which affect all players). This was my complaint against Ingress too - while portal state should be redownloaded continuously, the visual/information data changes infrequently to never. The name, the photo. The stuff you actually need to have to display portal details. Similarly Pokéstops. That kind of data should absolutely be cached. It cannot be used for cheating, and caching it is like elementary engineering.
They have access to this vast swath of cloud technology and a few Moores law iterations to boot yet they seem to perform worse than even WoW did on launch, with a game that is extremely forgiving to latency.
I'd love to see actual postmortems from them but I doubt we will since they've said nothing at all so far. But the authentication could easily be a problem that they're using both their own service and google for providing authentication. Since they go down each time a new region is released it would make sense that they're getting hit with lots of account creation and google API hits, the things that are likely to be the worst for scaling, since google will rate limit most clients (though I'd think they could get something worked out since it's all real traffic). Along with that, their own authentication server has gone down near release (pokemon trainer accounts) while the google one was working, so they probably have had to throw servers at that and weren't expecting to.
I'd also expect a lot of the load to be related to doing lots of geospatial queries, but I doubt they planned that badly since they had experience with ingress. I think it'd be related to the nearby pokemon feature that they've had broken since shortly after launch.
There's definitely questions (e.g. why did nearby pokemon break the way it has?) about the particular bugs that people see that make me wonder how they've handled things but i suspect we'll never know since the answers are going to whatever secret sauce they've done to handle this kind of game.