![]() The 'HEAD' call that is done to resolve package revisions from unpinned versions is already quite cheap, but it would still be better to avoid overloading Github with such calls; especially for users of a language-server that would compile on-the-fly very often. Upstream packages don't change often so there's no need to constantly check the etag. So we now keep a local version of etags that we fetched, as well as a timestamp from the last time we fetched them so that we only re-fetch them if more than an hour has elapsed. This should be fairly resilient while still massively improving the UX for people showing up after a day and trying to use latest 'main' features. This means that we now effectively have two caching levels: - In the manifest, we store previously fetched etags. - In the filesystem, we have a cache of already downloaded zip archives. The first cache is basically invalidated every hour, while the second cache is only invalidated when a etag changes. For pinned versions, nothing is invalidated as they are considered immutable. |
||
---|---|---|
.. | ||
src | ||
templates | ||
Cargo.toml | ||
README.md |
README.md
Project
This crate encapsulates the code used to manage Aiken projects. See crates/cli for usage.