Cache control assets with ETag based on commit

Maybe add comments about why these are in the order they are ("gzip first, so inner handlers can react to the Vary header", etc)