awesome, thanks Jack!
it's very nice of you to keep this updated, working, & also committed
back to ATS.
btw, the README is great. I'm going to include some of it here:
Metalink
Try not to download the same file twice. Improve cache efficiency
and speed up downloads.
Take standard headers and knowledge about objects in the cache and
potentially rewrite those headers so that a client will use a URL
that's already cached instead of one that isn't. The headers are
specified in [RFC 6429] (Metalink/HTTP: Mirrors and Hashes) and
[RFC 3230] (Instance Digests in HTTP) and are sent by various
download redirectors or content distribution networks.
1. Who Cares?
More important than saving a little bit of bandwidth, this saves
users from frustration.
A lot of download sites distribute the same files from many
different mirrors and users don't know which mirrors are already
cached. These sites often present users with a simple download
button, but the button doesn't predictably access the same mirror,
or a mirror that's already cached. To users it seems like the
download works sometimes (takes seconds) and not others (takes
hours), which is frustrating.
An extreme example of this happens when users share a limited,
possibly unreliable internet connection, as is common in parts of
Africa for example.
[How to cache openSUSE repositories with Squid] is another,
different example of a use case where picking a URL that's already
cached is valuable.
2. What it Does
When it sees a response with a "Location: ..." header and a
"Digest: SHA-256=..." header, it checks if the URL in the Location
header is already cached. If it isn't, then it tries to find a URL
that is cached to use instead. It looks in the cache for some
object that matches the digest in the Digest header and if it
succeeds, then it rewites the Location header with the URL from
that object.
This way a client should get sent to a URL that's already cached
and won't download the file again.
> --
> You received this message because you are subscribed to the Google Groups
> "Metalink Discussion" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
metalink-discus...@googlegroups.com.
> To post to this group, send email to
metalink-...@googlegroups.com.
> Visit this group at
http://groups.google.com/group/metalink-discussion.
> For more options, visit
https://groups.google.com/groups/opt_out.
--
(( Anthony Bryan ... Metalink [
http://www.metalinker.org ]
)) Easier, More Reliable, Self Healing Downloads