Sponsored Content
For global engineering organizations, the distance between where artifacts are stored and where they are consumed is both a line item and a performance bottleneck. A typical setup is a handful of large registries, often Artifactory SaaS, in US, EMEA and APAC cloud regions, serving developers and CI runners in every time zone. Every pip install, npm ci, and docker pull travels across regions to reach them, and when the registry lives in someone else’s cloud, every gigabyte that leaves it is metered. Distance costs you twice: in latency on every request, and in egress on every gigabyte.
Three trends are compounding the problem, multiplying both request volume and artifact size. Container images and ML models now move far more gigabytes per pull than the libraries of a few years ago. Builds are more ephemeral, so runners start with an empty cache and every job re-downloads its full dependency tree. And machines pull more than people: GitHub saw 1 billion commits in all of 2025 but 275 million a week by early 2026, while Actions usage doubled to 2.1 billion minutes a week, driven largely by AI agents and automation. The result is egress bills growing faster than headcount, with build times stretching alongside them.
Developer and Pipeline Wait Time Is the Hidden Cost
While egress fees show up on invoices, wait time doesn’t, and it often costs more. According to the US Bureau of Labor Statistics, the median software developer earns $135,980, or about $88 an hour once you add 35% for benefits and overhead. If each engineer loses just 10 minutes a day to slow dependency resolution, that’s about $3,400 per engineer over 230 working days, and $6.8 million a year across 2,000 engineers. Slow pulls also cause timeouts, and teams far from the registry become second-class engineering locations.
Why Not Just Use JFrog Edge Nodes?
The instinctive fix is to put a copy of the registry closer to the people and pipelines that use it. Registry-native edge nodes do that by replicating a heavyweight platform. JFrog’s Artifactory Edge, for example, is an edition of Artifactory customized for distributing software to runtimes. In practice:
- It is a full Artifactory install, with the same database, filestore and upgrade cycle, once per region.
- It requires the top tier. Edge needs an Enterprise+ license, JFrog’s custom-priced plan.
- It is built for push distribution. It receives signed Release Bundles and cannot proxy Docker Hub or PyPI directly.
- It expands operational overhead. Each node must be trusted by the source instance, registered in Mission Control, and given the signing keys.
That model suits shipping curated releases to runtime sites. If the goal is simply fast, cheap developer and CI pulls, it is more complex machinery than the job requires. JFrog also offers a CDN on Enterprise X and Enterprise+, built on Amazon CloudFront. It speeds up large downloads, but every request still starts at the central Artifactory instance, and it runs only in AWS.
This Is a Caching Problem
A cache stores copies of frequently requested content close to where it is used, so repeat requests are answered locally instead of traveling back to the source. Most artifact traffic is repeated reads of content that never changes, which is exactly the workload caches were built for. Versioned artifacts are effectively immutable. A pinned Python wheel, a NuGet package version, or an OCI layer addressed by its SHA-256 digest will never change, so a cached copy is as good as the original. Demand is also concentrated, with the same base images and core libraries pulled thousands of times a day. In production, cache hit ratios above 90% are common, cutting registry traffic by an order of magnitude. At those ratios, nearly every request stays in-region.
What a Good Artifact Caching Architecture Looks Like
In practice, the registry stays where it is, and the cache moves to where the work happens. The registries remain in their cloud regions as the source of truth. Alongside them, lightweight cache nodes run wherever artifacts are consumed, such as inside the CI cluster or next to a regional build farm. Developers and pipelines then point at their nearest node. For most package managers that means a one-line change to the registry URL, and if the registry uses a custom domain, it can be as simple as a DNS update. A new region needs only a new node, and if one fails, the cost is a cold cache rather than lost data. Nodes can also be layered, with regional caches feeding smaller local ones, so only a small fraction of requests ever needs to reach the origin.
Purpose-Built for the Job
Building this yourself using generic web proxies gets tricky fast because packaging formats handle authentication and index metadata in idiosyncratic ways. Varnish Virtual Registry is a caching proxy built specifically for artifact traffic, on top of the Varnish caching engine that has served high-traffic web and streaming platforms for two decades. It sits in front of the registries you already run, such as Artifactory, Nexus, and public registries, rather than replacing them. It deploys as a container, Helm chart or Linux package from a single YAML file, and the Artifactory offload pattern is documented step by step. Adding a region means starting another cache node instead of licensing another registry.
- Artifact-aware caching of layers, packages, binaries and model artifacts, with metadata kept fresh through revalidation, across Docker/OCI, Helm, npm, PyPI, Maven, NuGet, Go, Cargo, Conda, RPM, Debian, Terraform, Hugging Face, Git and Git LFS, and more
- Auth-preserving private cache: requests are validated against upstream access controls, and approved users share one cached copy
- Request coalescing and persistent cache: concurrent pulls are served from one upstream fetch, and hot artifacts survive restarts
- Failover and origin shielding: cached artifacts keep serving through upstream slowdowns and outages
- Native OpenTelemetry logs, metrics and traces for hit rate, latency and backend load
Central cloud registries plus global, machine-speed consumption means egress and latency costs will keep climbing. Replicating the registry into every region is the expensive way to close the distance. Caching artifacts where they are consumed, with a cache built for artifact traffic, is the efficient way.

