From 024041e591400f6d4230d1dcfe35da3476336407 Mon Sep 17 00:00:00 2001 From: Matchu Date: Wed, 25 Oct 2023 15:44:01 -0700 Subject: [PATCH] Configure nginx to send pre-gzipped files to the client Rails already creates little pre-gzipped `.gz` copies of all our assets in the `public/assets` directory when we build. This configures nginx to send those when available! We weren't doing *any* gzip stuff before, so this helps a lot with those bigger JS files, like the `wardrobe-2020` stuff. It's now at ~.5MB with compression, which is still a bit big, but nowhere near as offensive as the 4.5MB pre-anything, or 1.5MB post-minification, lol. --- deploy/files/sites-available/impress.conf | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/deploy/files/sites-available/impress.conf b/deploy/files/sites-available/impress.conf index df3d1ff7..cbb3ae4f 100644 --- a/deploy/files/sites-available/impress.conf +++ b/deploy/files/sites-available/impress.conf @@ -17,6 +17,18 @@ server { root /srv/impress/current/public; + # Serve assets using their precompressed *.gz versions. + # The filenames contain content hashes, so they should be safe to + # cache forever. + # https://stackoverflow.com/a/6952804/107415 + location ~ ^/assets/ { + gzip_static on; + expires max; + add_header Cache-Control public; + add_header Last-Modified ""; + add_header ETag ""; + } + # Try serving static files first. If not found, fall back to the app. try_files $uri/index.html $uri @app;