optimization: compress JSON responses with gzip