Delta Compression

Feedz uses delta compression when transferring packages to reduce bandwidth. Only the difference between the new package and the previous version is sent, rather than the full file.

Delta compression only applies when using the Feedz CLI, the Octopus CLI, or the Feedz .NET library. Standard NuGet clients (dotnet CLI, nuget.exe, Visual Studio) always transfer the full package.

When it applies

Delta compression is used when transferring packages between Feedz and the Feedz CLI, the Octopus CLI, or the Feedz .NET library. The saving is most noticeable on packages that contain a large number of unchanged files between versions — for example, packages with many supporting DLLs or website assets.

How it works

When uploading a new package version, the following process runs automatically:

  1. Feedz builds a signature file from the latest existing version of the same package ID at the destination. If no previous version exists, the full package is transferred.
  2. The signature file is sent to the source, which uses it to compute a differential file — only the bytes that changed.
  3. If the differential file is more than 95% of the size of the original package, the full package is transferred instead (no benefit from delta in this case).
  4. The differential file is sent to Feedz and used to reconstruct the full package.
  5. The reconstructed package is hashed and compared against the source hash to verify integrity.
  6. If reconstruction fails for any reason, the full package is transferred as a fallback.

Delta compression is implemented using Octodiff, an algorithm based on rsync.