When this page is being accessed, we do a check for updates before we load it. This causes the same problem we have solved with cron running before pages load in #1214. The more projects you have installed, the more perceivable the slowness is ...especially over slow connections.

I think that it is a good thing that once this page loads there is a "Last checked: 0 sec ago", so loading the page with "stale" update status and doing the check in the background will not help much, because the user will see the "Last checked: 3 days ago" and push the button to check for updates (while we are already checking in the background). Can we do some AJAXy "magic" here so that there is no perception of unresponsiveness. Here's how I imagine this to work ideally:

  • When this page is being accessed, we load whatever update data we have from the last time we checked.
  • We keep indicating the last time the check was done, but we hide the "Check manually" button (or we "disable" it).
  • We show a progress bar at the top, above the div.update.checked (where the "last check" status and the "Check manually" button are) saying "Checking for updates".
  • When the progress bar finishes, we update the "Last checked: ..." indicator. (btw, can we also change the "0 seconds ago" to "just now"?)
  • We diff old vs new update data. If things are different, we either automatically refresh the page, or we display a message for the user to refresh themselves.

Alternatively, if we want to keep things simple, we could just be loading an "intermediate" page with a progress bar, then when the check finishes, we load the "Available updates" page with the fresh update data.

GitHub Issue #: 
3337