Octopus is very inefficient when refreshing file-based nuget feeds. Instead of scanning an entire feed directory each time, a FileSystemWatcher could be used to receive events on feed directories, then only rescan files that have been modified.
As feeds grow with more and more packages, Octopus becomes unusable due to the slowness of refreshing feeds.
Thanks for the suggestion. I agree, the performance is less than stellar. The speed is mostly constrained by the NuGet libraries, though I think Octopus does a “refresh” each time in case it has changed so that might not be helping. I’ll investigate and try and include a fix soon.
Just a quick update. We tried switching to Nuget.Server but found the performance to be about as bad as using a file base feed. I discovered that Nuget.Server doesn’t really cache much, and the cache is lost whenever the app is recycled. When you have a few hundred packages and they’re 10mb or larger, it becomes unusable.
So I’ve been working on integrating Lucene.Net into Nuget.Server, and I’ve got a proof of concept that is tremendously faster. I’m hoping to release my changes in a week or two.
Alright, if anyone else is finding that the Create Release screen is too slow because of NuGet being slow, I’ve released my changes to NuGet.Server on github.
You can get a zip of the binaries here:
Hopefully I can get my changes merged into the main repository.