Tu as deux moyens d'améliorations :
1) Parallélisme de tes requêtes
2) Asynchronisme
Pour le 1), voici le problème
RequeteA |---------------------|
RequeteB |--------------------------------|
---------------------------------------------------------------------
t(s) 0 1 2 3 4 5
Tu attends que la requeteA soit établie pour effectuer la requêteB.
Avec le parallélisme, tu peux avoir ça :
RequeteA |----------------------|
RequeteB |--------------------------------|
---------------------------------------------------------------------
t(s) 0 1 2 3 4 5
Résultat, tu peux afficher ton contenu au bout de 3s au lieu de 5s.
Pour le 2), voici comment le résoudre. Regarde comment fait Facebook, ils proposent un layout avec de fausses données (des images grises, ...) le temps que les requêtes s'exécutent.
L'idée s'est d'avoir une page index() sans aucune requête pour qu'elle s'affiche rapidement. Et tu fais tes appels à l'API en AJAX.