Compress file downloads if the client sends "Accept-Encoding: gzip" and we guess...
commit3573170dfacb2b201e31bc820176f6e2f223ea1b
authorepriestley <git@epriestley.com>
Wed, 15 Apr 2020 18:28:36 +0000 (15 11:28 -0700)
committerepriestley <git@epriestley.com>
Wed, 15 Apr 2020 18:53:35 +0000 (15 11:53 -0700)
tree1f254cacf7795804e32a323b70d56c7994548da3
parentd86506052cffe0bc428f39cce0d982c8f18d59f3
Compress file downloads if the client sends "Accept-Encoding: gzip" and we guess the file might compress alright

Summary:
Ref T13507. We currently compress normal responses, but do not compress file data responses because most files we serve are images and already compressed.

However, there are some cases where large files may be highly compressible (e.g., huge XML files stored in LFS) and we can benefit from compressing responses.

Make a reasonable guess about whether compression is beneficial and enable compression if we guess it is.

Test Plan:
  - Used `curl ...` to download an image with `Accept-Encoding: gzip`. Got raw image data in the response (as expected, because we don't expect images to be worthwhile to recompress).
  - Used `curl ...` to download a text file with `Accept-Encoding: gzip`. Got a compressed response. Decompressed the response into the original file.

Maniphest Tasks: T13507

Differential Revision: https://secure.phabricator.com/D21125
src/applications/files/controller/PhabricatorFileDataController.php