diff --git a/http/http_connection.hpp b/http/http_connection.hpp
index d1266f3..187a8a4 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
@@ -387,6 +387,12 @@
             asyncResp->res.setCompleteRequestHandler(nullptr);
             return;
         }
+        std::string_view expected =
+            req->getHeaderValue(boost::beast::http::field::if_none_match);
+        if (!expected.empty())
+        {
+            res.setExpectedHash(expected);
+        }
         handler->handle(thisReq, asyncResp);
     }
 
@@ -451,6 +457,9 @@
             res.setCompleteRequestHandler(nullptr);
             return;
         }
+
+        res.setHashAndHandleNotModified();
+
         if (res.body().empty() && !res.jsonValue.empty())
         {
             using http_helpers::ContentType;
diff --git a/http/http_response.hpp b/http/http_response.hpp
index ddc808c..213117d 100644
--- a/http/http_response.hpp
+++ b/http/http_response.hpp
@@ -153,6 +153,7 @@
         stringResponse.emplace(response_type{});
         jsonValue.clear();
         completed = false;
+        expectedHash = std::nullopt;
     }
 
     void write(std::string_view bodyPart)
@@ -224,7 +225,30 @@
         return ret;
     }
 
+    void setHashAndHandleNotModified()
+    {
+        // Can only hash if we have content that's valid
+        if (jsonValue.empty() || result() != boost::beast::http::status::ok)
+        {
+            return;
+        }
+        size_t hashval = std::hash<nlohmann::json>{}(jsonValue);
+        std::string hexVal = "\"" + intToHexString(hashval, 8) + "\"";
+        addHeader(boost::beast::http::field::etag, hexVal);
+        if (expectedHash && hexVal == *expectedHash)
+        {
+            jsonValue.clear();
+            result(boost::beast::http::status::not_modified);
+        }
+    }
+
+    void setExpectedHash(std::string_view hash)
+    {
+        expectedHash = hash;
+    }
+
   private:
+    std::optional<std::string> expectedHash;
     bool completed = false;
     std::function<void(Response&)> completeRequestHandler;
     std::function<bool()> isAliveHelper;
