Open nkolev92 opened 3 years ago
cc @donnie-msft @jebriede @aortiz-msft
Triage: This change is blocked on a server feature. @JonDouglas to make sure it's on the unified backlog.
Prototype in https://github.com/NuGet/Home/issues/11483.
Already on the backlog, so need to keep it assigned to Jon.
FYI, a simpler solution may be to reconsider the registration API's paging strategy. Currently, the registration API splits package's information into groups of 64 package versions. This page size appears to be much too low. Making registration pages include more package versions would reduce the number network requests the client needs to do without needing to update the protocol or clients.
See: https://github.com/NuGet/Home/issues/8058#issuecomment-626465454
I made a tool to help estimate response sizes if we removed paging from the registration API altogether. The resulting registration indexes had the following size on disk after gzip compression:
- Average size: 1.15 KB
- 90th percentile size: 1.82 KB
- 99th percentile size: 8.60 KB
- 99.9th percentile size: 25.1 KB
- 99.99th percentile: 60.76 KB
- Max size size: 223 KB
In other words, it appears that paging is unnecessary for 99.99% of packages on nuget.org. An alternative solution to this problem could be to shove more package versions in each registration page.
Blocked on https://github.com/NuGet/NuGetGallery/issues/7297.
A lot of the feedback centered around the PM UI has to do with how sluggish and heavy the UI looks. Some of the problems are technical decisions in the PM UI, some are UX driven, others are a little bit of both.
Say you create a new project and you open the PM UI. 0 remote calls happen because NuGet will default to the installed tab. Switch to the browse tab. You get 1 search call + N registration calls, where N is the number of loaded packages. The logic behind this registration call is fetching vulnerability and deprecation information.
Registration pages can be just as large and as heavy to parse as the search ones.
This "trick" is there due to https://github.com/NuGet/NuGetGallery/issues/7297.
Given the repeated feedback about the clunkiness of the PM UI, I think we should ask the server team to prioritize this ask, and we should follow up on the equivalent client side.
Alternatively, we can hack it and only fetch metadata whne nuget.org is the source. This idea is bad. Current perf is worse.