Nieuwe tile code op productie II

18 september 2010 door Stefan de Konink

Na de vorige aankondiging kwam erg waardevolle feedback van een aantal reegulahrs op ons onvolprezen IRC kanaal. We zijn weer een beetje aan het sleutelen geweest en kwamen tot de volgende setup:

tile.openstreetmap.nl

  1. Controleert of een tile niet bestaat
  2. Controleert of een tile expired is
  3. Serveert iedere tile die we al op disk hebben

In het eerste geval hebben we dus geen tile om op terug te vallen. We zullen dus zo snel mogelijk moeten beginnen met renderen om de gebruiker te laten zien wat er gebeurt. Het berichtje naar renderd is een zogenaamde renderPrio, met een timeout van 10 seconden, waarna er een 404 zal optreden als het renderen niet is gelukt.

In het tweede geval hebben we wel een tile om op terug te vallen, en die zullen we in deze virtuele server ook direct gebruiken. Echter nu wordt er een berichtje naar renderd gestuurd waar we niet gaan wachten tot het renderen klaar is. Het renderen zal geen prioriteit hebben en wordt een keer meegenomen als het rustig is. De tile die naar de gebruiker wordt toegestuurd heeft een expire tijd van twee minuten, dus de volgende keer dat de browser nog een keer om het bestand vraagt, staat er waarschijnlijk al een nieuwe tile klaar.

In het derde geval is er niets mis met de tile, en gaat hij gewoon naar de eindgebruiker met een expire tijd van twee dagen.

live.openstreetmap.nl

  1. Controleert of een tile niet bestaat of een tile expired is
  2. Serveert iedere tile die we al op disk hebben

Op deze virtuele server gaan we altijd een poging doen om een tile die veranderd is of niet bestaat in z’n nieuwe vorm bij de eind gebruiker af te leveren. De timeout voor het renderen is hier 5 seconden, anders sturen we toch de oude tile mee. De expire tijd voor de tiles die niet bestaan is ook twee minuten, en de expire tijd voor alle andere tiles is een uur.

Bij live kun je er dus vanuit gaan dat je browser altijd even checkt of de tiles toch niet zijn veranderd. We hebben de optie must-revalidate namelijk ook aangezet.

Comments are closed.