api: remove status cache validators

This commit is contained in:
2026-06-07 19:33:37 -06:00
parent e7965f4b99
commit 4474b6d11a
3 changed files with 1 additions and 75 deletions
@@ -1134,30 +1134,9 @@ int findStatusFieldIndex(const String& field) {
return -1;
}
uint32_t fnv1a32(const String& value) {
uint32_t hash = 2166136261UL;
for (unsigned int i = 0; i < value.length(); i++) {
hash ^= static_cast<uint8_t>(value[i]);
hash *= 16777619UL;
}
return hash;
}
String statusEtagForPayload(const String& payload) {
return String("\"") + String(fnv1a32(payload), HEX) + "-" + String(payload.length(), HEX) + "\"";
}
String lastStatusValidatorEtag = "";
String lastStatusModified = "Thu, 01 Jan 1970 00:00:00 GMT";
String formatHttpDateFromUptime(unsigned long seconds) {
char buffer[32];
snprintf(buffer, sizeof(buffer), "Thu, 01 Jan 1970 %02lu:%02lu:%02lu GMT",
(seconds / 3600UL) % 24UL,
(seconds / 60UL) % 60UL,
seconds % 60UL);
return String(buffer);
}
void buildStatusDocument(JsonDocument& doc) {
doc["type"] = MSG_STATUS_RESPONSE;
@@ -2737,34 +2716,6 @@ void handleStatus() {
String output;
serializeJson(doc, output);
DynamicJsonDocument validatorDoc(4096);
deserializeJson(validatorDoc, output);
validatorDoc["timestamp"] = 0;
if (validatorDoc["system"].is<JsonObject>()) {
validatorDoc["system"]["uptime_seconds"] = 0;
}
String validatorPayload;
serializeJson(validatorDoc, validatorPayload);
String etag = statusEtagForPayload(validatorPayload);
if (etag != lastStatusValidatorEtag) {
lastStatusValidatorEtag = etag;
lastStatusModified = formatHttpDateFromUptime(millis() / 1000);
}
server.sendHeader("ETag", etag);
server.sendHeader("Last-Modified", lastStatusModified);
server.sendHeader("Cache-Control", "no-cache");
String ifNoneMatch = server.header("If-None-Match");
String ifModifiedSince = server.header("If-Modified-Since");
if (ifNoneMatch == etag || ifModifiedSince == lastStatusModified) {
server.send(304);
return;
}
server.send(200, "application/json", output);
}
@@ -2869,9 +2820,6 @@ void setup() {
server.on("/bms/select", HTTP_POST, handleSelectBms);
const char* statusCacheHeaders[] = {"If-None-Match", "If-Modified-Since"};
server.collectHeaders(statusCacheHeaders, 2);
server.begin();
Serial.println("Web Server Started");