HTTP responses should be cached locally according to their cache-control headers. Especially once Rhapsode starts supporting hyperlinks.
This could be developed as an independant project and integrated in!
CacheControl
, legacy Pragma: no-cache
Expires
, may also be set via CacheControl
or Last-Modified
Etag
- echo back in If-None-Match
Last-Modified
- echo back in If-Modified-Since
Vary
- indicates which headers to compare for equality before using a cache.Use cached data for 304 responses.
I'd store an index file, with cached bodies stored seperately.
There'd be four parts to implementing the cache:
GNOME's implementation: https://github.com/GNOME/libsoup/blob/mainline/libsoup/soup-cache.c