From 042975ea8e2e081c0d44190c8b41104131f8c6d4 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <edolstra@gmail.com> Date: Tue, 14 Mar 2017 15:55:02 +0100 Subject: [PATCH] Compress NAR listings using the "text-compression" method So if "text-compression=br", the .ls file in S3 will get a Content-Encoding of "br". Brotli appears to compress better than xz for this kind of file and is natively supported by browsers. --- src/libstore/binary-cache-store.cc | 2 +- src/libstore/s3-binary-cache-store.cc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libstore/binary-cache-store.cc b/src/libstore/binary-cache-store.cc index d8e68fd58..25ad0d75b 100644 --- a/src/libstore/binary-cache-store.cc +++ b/src/libstore/binary-cache-store.cc @@ -224,7 +224,7 @@ void BinaryCacheStore::addToStore(const ValidPathInfo & info, const ref<std::str } } - upsertFile(storePathToHash(info.path) + ".ls.xz", *compress("xz", jsonOut.str()), "application/x-nix-nar-listing"); + upsertFile(storePathToHash(info.path) + ".ls", jsonOut.str(), "application/json"); } else { diff --git a/src/libstore/s3-binary-cache-store.cc b/src/libstore/s3-binary-cache-store.cc index 5ecf3996d..3804e0b0f 100644 --- a/src/libstore/s3-binary-cache-store.cc +++ b/src/libstore/s3-binary-cache-store.cc @@ -267,9 +267,9 @@ struct S3BinaryCacheStoreImpl : public S3BinaryCacheStore void upsertFile(const std::string & path, const std::string & data, const std::string & mimeType) override { - if (path.find(".narinfo") != std::string::npos) + if (textCompression != "" && (hasSuffix(path, ".narinfo") || hasSuffix(path, ".ls"))) uploadFile(path, *compress(textCompression, data), mimeType, textCompression); - else if (path.find("/log") != std::string::npos) + else if (logCompression != "" && hasPrefix(path, "log/")) uploadFile(path, *compress(logCompression, data), mimeType, logCompression); else uploadFile(path, data, mimeType, ""); -- GitLab