Na flink wat gepruts en C code gaan we weer eens wat innovatie naar productie brengen. We gaan tiles niet meer wissen als ze te oud zijn, maar alleen markeren dat ze opnieuw gerenderd moeten worden. Dat heeft als voordeel dat je in principe niet meer hoeft te wachten als we een oude tile beschikbaar hebben, en het renderen wat langzaam gaat.
Wat is er nog meer veranderd?
Allereerst gaan we naar de meest recente versie van Cherokee, hier hebben we een extra module aan toegevoegd met de veel zeggende naam rule_filetime. Deze module kan uitlezen hoe oud of hoe nieuw een bestand is en wanneer deze voor het laatst is gewijzigd. Voorheen stuurde we je vanuit handler_tile na een render request terug naar waar je vandaan kwam. Je kreeg of een redirect of een foutmelding bij een probleem. Nu wordt echter altijd door de webserver geprobeerd een tile bij je te krijgen. Immers: misschien hebben we nog wel een oude tile in de aanbieding!
In de nieuwe vorm kunnen we ook niet meer ‘serveren’ als we een bestand hebben, en renderen als het bestand toch aan een reguliere expressie voldoet. We controleren nu eerst of het bestand aan de reguliere expressie voldoet en het bestand mogelijk ‘te oud is’ of het bestand niet bestaat. In die twee gevallen wordt de aanvraag doorgestuurd naar renderd. In alle andere gevallen zal het bestand ‘gewoon’ richting de ‘standaard’ regel vallen die niets meer doet dan een bestandje serveren (of een 404 sturen natuurlijk!)
Wanneer gaan we echt over?
Binnen de webserver draaien meer domeinen, en we hebben wat listigs aan gepast in Cherokee om het voor elkaar te krijgen dat we zonder busy waiting toch kunnen wachten op een mogelijk vertraagde render request. Deze aanpassing laten we eerst even controleren door Alvaro, de hoofd-ontwikkelaar van Cherokee.
En nu verder?
Omdat we nu tiles bewaren zal onze gesponsorde productie VM misschien wat voller worden. Maar aan de andere kant zouden we ook op de stille momenten wat tiles kunnen gaan renderen in de achtergrond. Of dat nuttig weten weinig mensen, want we updaten onze database nogsteeds 1x per minuut.
De sneakpreview?
Omdat we momenteel nog tiles wissen is het niet echt vergelijkingsmateriaal maar je kunt de test omgeving bekijken op: http://tile.openstreetmap.nl:8000/
Update: sinds vannacht zijn we over 🙂