Recently to httpd was added commit 4864a68 "httpd: Support caching via ETag header". It works simple: in response to GET request we add ETag header built from file's mtime and size. Client caches the file and on next GET request adds it into If-None-Match header. Server checks that current file's ETag the same as If-None-Match and responds with 304 Not Modified without payload.
The patch adds similar logic to validate If-Modified-Since against Last-Modified. This will be useful for 'wget -N' command which sends If-Modified-Since for existing file. Also the fix can be easily and safely ported to old BB versions. Here is an example of usage: WWW_DIR=$(mktemp -d) echo "<script>document.write(new Date(document.lastModified).toISOString())</script>" > "$WWW_DIR/last-mod.html" touch -d '2021-01-01 00:00:00 +0000' "$WWW_DIR/last-mod.html" httpd -vvv -p 8080 -h "$WWW_DIR" echo 'curl will return 304 Not Modified with ETag: "5fee6600-4f":' curl -s -I 'http://localhost:8080/last-mod.html' \ --header 'If-None-Match: "5fee6600-4f"' \ --header 'If-Modified-Since: Fri, 01 Jan 2021 00:00:00 GMT' The two last commits are not related but will be nice to apply. Sergey Ponomarev (6): httpd: Last-Modified optimization httpd: Match If-Modified-Since and Last-Modified to return 304 httpd: Match If-Modified-Since only when If-None-Match is not present httpd: Add Last-Modified only if resource returned with 200 Fix Content-type header name to Content-Type httpd_post_upload.cgi: use mktemp to avoid $RANDOM networking/httpd.c | 121 +++++++++++++++++++++---------- networking/httpd_post_upload.cgi | 2 +- 2 files changed, 85 insertions(+), 38 deletions(-) -- 2.27.0 _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
