mirror of
https://github.com/wled/WLED.git
synced 2025-07-25 19:56:32 +00:00
Use uint16_t eTagSuffix instead of String
This commit is contained in:
parent
fd6ce57003
commit
59a725c52c
@ -15,9 +15,9 @@
|
|||||||
* Integrated HTTP web server page declarations
|
* Integrated HTTP web server page declarations
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool handleIfNoneMatchCacheHeader(AsyncWebServerRequest* request, int code, const String &eTagSuffix = "");
|
bool handleIfNoneMatchCacheHeader(AsyncWebServerRequest* request, int code, uint16_t eTagSuffix = 0);
|
||||||
void setStaticContentCacheHeaders(AsyncWebServerResponse *response, int code, const String &eTagSuffix = "");
|
void setStaticContentCacheHeaders(AsyncWebServerResponse *response, int code, uint16_t eTagSuffix = 0);
|
||||||
void handleStaticContent(AsyncWebServerRequest *request, const String &path, int code, const String &contentType, const uint8_t *content, size_t len, bool gzip = true, const String &eTagSuffix = "");
|
void handleStaticContent(AsyncWebServerRequest *request, const String &path, int code, const String &contentType, const uint8_t *content, size_t len, bool gzip = true, uint16_t eTagSuffix = 0);
|
||||||
|
|
||||||
// define flash strings once (saves flash memory)
|
// define flash strings once (saves flash memory)
|
||||||
static const char s_redirecting[] PROGMEM = "Redirecting...";
|
static const char s_redirecting[] PROGMEM = "Redirecting...";
|
||||||
@ -361,18 +361,16 @@ void initServer()
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void generateEtag(char *etag, const String &eTagSuffix) {
|
void generateEtag(char *etag, uint16_t eTagSuffix) {
|
||||||
char eTagSuffixBuf[eTagSuffix.length() + 1];
|
sprintf_P(etag, PSTR("%7d-%02x-%04x"), VERSION, cacheInvalidate, eTagSuffix);
|
||||||
eTagSuffix.toCharArray(eTagSuffixBuf, eTagSuffix.length() + 1);
|
|
||||||
sprintf_P(etag, PSTR("%7d-%02x-%s"), VERSION, cacheInvalidate, eTagSuffixBuf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool handleIfNoneMatchCacheHeader(AsyncWebServerRequest *request, int code, const String &eTagSuffix) {
|
bool handleIfNoneMatchCacheHeader(AsyncWebServerRequest *request, int code, uint16_t eTagSuffix) {
|
||||||
// Only send 304 (Not Modified) if response code is 200 (OK)
|
// Only send 304 (Not Modified) if response code is 200 (OK)
|
||||||
if (code != 200) return false;
|
if (code != 200) return false;
|
||||||
|
|
||||||
AsyncWebHeader *header = request->getHeader("If-None-Match");
|
AsyncWebHeader *header = request->getHeader("If-None-Match");
|
||||||
char etag[12 + eTagSuffix.length()];
|
char etag[14];
|
||||||
generateEtag(etag, eTagSuffix);
|
generateEtag(etag, eTagSuffix);
|
||||||
if (header && header->value() == etag) {
|
if (header && header->value() == etag) {
|
||||||
AsyncWebServerResponse *response = request->beginResponse(304);
|
AsyncWebServerResponse *response = request->beginResponse(304);
|
||||||
@ -383,7 +381,7 @@ bool handleIfNoneMatchCacheHeader(AsyncWebServerRequest *request, int code, cons
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setStaticContentCacheHeaders(AsyncWebServerResponse *response, int code, const String &eTagSuffix) {
|
void setStaticContentCacheHeaders(AsyncWebServerResponse *response, int code, uint16_t eTagSuffix) {
|
||||||
// Only send ETag for 200 (OK) responses
|
// Only send ETag for 200 (OK) responses
|
||||||
if (code != 200) return;
|
if (code != 200) return;
|
||||||
|
|
||||||
@ -395,7 +393,7 @@ void setStaticContentCacheHeaders(AsyncWebServerResponse *response, int code, co
|
|||||||
#else
|
#else
|
||||||
response->addHeader(F("Cache-Control"), "no-store,max-age=0"); // prevent caching if debug build
|
response->addHeader(F("Cache-Control"), "no-store,max-age=0"); // prevent caching if debug build
|
||||||
#endif
|
#endif
|
||||||
char etag[12 + eTagSuffix.length()];
|
char etag[14];
|
||||||
generateEtag(etag, eTagSuffix);
|
generateEtag(etag, eTagSuffix);
|
||||||
response->addHeader(F("ETag"), etag);
|
response->addHeader(F("ETag"), etag);
|
||||||
}
|
}
|
||||||
@ -413,9 +411,9 @@ void setStaticContentCacheHeaders(AsyncWebServerResponse *response, int code, co
|
|||||||
* @param content Content of the web page
|
* @param content Content of the web page
|
||||||
* @param len Length of the content
|
* @param len Length of the content
|
||||||
* @param gzip Optional. Defaults to true. If false, the gzip header will not be added.
|
* @param gzip Optional. Defaults to true. If false, the gzip header will not be added.
|
||||||
* @param eTagSuffix Optional. Defaults to "". A suffix that will be added to the ETag header. This can be used to invalidate the cache for a specific page.
|
* @param eTagSuffix Optional. Defaults to 0. A suffix that will be added to the ETag header. This can be used to invalidate the cache for a specific page.
|
||||||
*/
|
*/
|
||||||
void handleStaticContent(AsyncWebServerRequest *request, const String &path, int code, const String &contentType, const uint8_t *content, size_t len, bool gzip, const String &eTagSuffix) {
|
void handleStaticContent(AsyncWebServerRequest *request, const String &path, int code, const String &contentType, const uint8_t *content, size_t len, bool gzip, uint16_t eTagSuffix) {
|
||||||
if (path != "" && handleFileRead(request, path)) return;
|
if (path != "" && handleFileRead(request, path)) return;
|
||||||
if (handleIfNoneMatchCacheHeader(request, code, eTagSuffix)) return;
|
if (handleIfNoneMatchCacheHeader(request, code, eTagSuffix)) return;
|
||||||
AsyncWebServerResponse *response = request->beginResponse_P(code, contentType, content, len);
|
AsyncWebServerResponse *response = request->beginResponse_P(code, contentType, content, len);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user