From c7a4d2fe0c67d33d53454dbbfcbf204c39b79799 Mon Sep 17 00:00:00 2001 From: Pizmovc Date: Fri, 8 Aug 2025 21:52:12 +0200 Subject: [PATCH] Use ETags instead of Last-Modified for caching --- flake.nix | 12 +++++++++++- nixos-configuration/my-static-site.nix | 7 ++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index d8c6552..d1b602f 100644 --- a/flake.nix +++ b/flake.nix @@ -30,12 +30,22 @@ pname = "my-static-site"; version = "1.0.0"; src = ./.; - buildInputs = [ eleventy ]; + buildInputs = with pkgs; [ + eleventy + fd + coreutils + ]; buildPhase = "eleventy"; installPhase = '' mkdir -p $out/ echo $out cp -r _site/* $out/ + + # Generate .etag files for cache validation + for file in $(fd --type f . "$out"); do + hash=$(md5sum "$file" | cut -d" " -f1) + echo "\"$hash\"" > "$file.etag" + done; ''; }; in diff --git a/nixos-configuration/my-static-site.nix b/nixos-configuration/my-static-site.nix index 82737c4..650898a 100644 --- a/nixos-configuration/my-static-site.nix +++ b/nixos-configuration/my-static-site.nix @@ -7,7 +7,12 @@ in enable = true; # Needs `http://` prefix so that it does not try to request TLS certificates and redirect to 443 virtualHosts."http://${site-url}".extraConfig = '' - file_server + header { + -Last-Modified + } + file_server { + etag_file_extensions .etag + } root * ${inputs.our-site.packages."${pkgs.system}".default} encode gzip '';