UI loading pattern

Im working on a dashboard with extensive amounts of information.
Currently, the loading time for the entire dashboard stands on ~6 sec, which is suboptimal and hence requires some sort of mitigation.
I have several questions:

  1. Is there a best practice for progress bars implementations? Are spinners/loading bars better?

  2. Should i present all panels together when loading is completed or should i gradually expose whichever panels that are completed?

  3. Should panel's placeholders (AKA skeleton screens) be used or should the screen be left empty until loading is completed?