So in summary, what we built does this:
The server calculates the journey times and renders them to palette-based tiles.
It then sends these to the client encoded in Base64, and with the initial bits up to the palette and transparency chunks removed.
At the client end, we have a pre-prepared array of 255 ‘starts’ of PNGs that we combine with the later parts of the ’tiles’ from the tile server to make data URIs.
When you drag the slider it combines the appropriate ‘start’ of a PNG with the bulk of the tile that has been downloaded from the server, and assigns that to the src attribute of the tile.