That would be a bigger change...

All generic functions
```c
lib/cache_disk.c:833:    dcache->tile_key = _mapcache_cache_disk_tilecache_tile_key;
lib/cache_disk.c:835:    dcache->tile_key = _mapcache_cache_disk_arcgis_tile_key;
lib/cache_disk.c:837:    dcache->tile_key = _mapcache_cache_disk_template_tile_key;
```
have to get this parameter, although they maybe never will use it.

As well as the interface in mapcache.h has to be changed:
```c
struct mapcache_cache_disk {
  ...
  void (*tile_key)(mapcache_context *ctx, mapcache_tile *tile, char **path);
};

```

As an alternative we could implement a function to change the extension of a filename and use the current version of *_mapcache_cache_disk_tilecache_tile_key*
But this could be as dirty as the internal API change...