Optimiser le Javascript ?

Résolu/Fermé
Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 17 août 2012 à 11:23
Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 21 août 2012 à 18:44
Bonjour à tous,

Toutes les pages de contenu du site que je suis en train de faire ont la même structure. Du coup au lieu de faire un chargement classique des pages quand on navigue, je charge la page normalement pour la 1ere, et ensuite quand on navigue dans les pages je fais des transitions avec jquery pour modifier les éléments qui ne sont pas identiques. Vous me suivez ? ^^

Mon problème c'est qu'il y a pas mal de js, alors au début c'est super fluide, mais au bout de 5 ou 6 pages ça commence à saccader.
Donc mon but est que les transitions restent fluides, quel que soit le nombre de pages qu'on charge.
Alors déjà j'ai utilisé le plus possible les fragments au lieu de la fonction jquery html(), c'est un peu mieux mais c'est pas encore ça. Je précise que tout n'est pas modifié avec les fragments, le contenu étant assez différent ça me parait trop lourd à gérer, du coup je le charge avec html().

Quels moyens existe-t-il pour optimiser le js ?
Y'a t il une solution pour voir quand ça commence à saccader, auquel cas appliquer des transition moins lourdes ?

Merci d'avance.

4 réponses

mimigenie Messages postés 1180 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 4 août 2018 312
17 août 2012 à 21:08
Il y a un moyen très simple de se passer du javascript mais dans ce cas il n'y aura plus de transition jquery.

Utilise si tu peux, le php. Ca te permettra d'afficher sur dans chaqu'une de tes pages le contenu qui ne change pas ( le menu et la bannière par exemple ) très simplement et c'est ultra rapide.
0
Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
20 août 2012 à 15:07
Justement le but est de faire des transitions sympas en jquery !
J'utilise déjà le php, notamment pour faire de l'AJAX, c'est très bien pour récupérer le contenu, mais sans js je peux pas faire un truc de ce genre (par exemple) : https://0.s3.envato.com/files/29142239/demo5.html
0
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 2 362
20 août 2012 à 17:06
déjà vu ça quelque part ...
externalises les js
compresses-les
vois du côté de la fonction 'defer' pour le JavaScript ...
0
Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
20 août 2012 à 17:47
Tout mon js est déjà externalisé.
Pour la compression j'utilise le mod_deflate d'Apache (compression GZip).

Par contre la fonction defer je connaissais pas. D'après ce que j'ai compris c'est pour attendre que tout soit chargé avant d'appeler certaines fonctions. J'ai trouvé ça : http://prototypejs.org/api/function/defer mais je suis pas sûr que ça m'aide.

De mon côté j'étais parti sur un problème de memory leak, mais je patauge.
0
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 2 362
20 août 2012 à 18:32
faut tester ... :)
0
Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
21 août 2012 à 18:44
Voilà j'ai résolu mon problème !

J'ai refais toutes les fonctions javascript qui modifiaient le DOM de façon à avoir un résultat similaire mais sans rien modifier, parce que ça peut venir de là les memory leaks.
Pour le contenu en lui-même, qui peut contenir de l'HTML très différent d'une page à l'autre, j'ai utilisé une iframe dont je me contente de changer la source.

Je n'ai plus aucun ralentissement.

Pour la fonction defer je regarderai quand j'aurais plus de temps !

Merci pour vos réponses.
0