Bonsoir à tous

J'ai un site qui est entièrement écrit en php. A chaque appel de page on génère le code html, ce qui prend des ressources sur le serveur et se traduit par un temps de chargement des pages assez long.
Comme ces pages changent peu souvent, et que c'est toujours suite à une action du webmaster, je pense qu'il serait plus efficace de faire générer des pages statiques, qui pourraient être plus rapidement chargées..

Y a-t-il un moyen simple de réaliser cette fonction sans devoir tout réécrire?

Il ne suffit pas de remplacer les ordre "echo" par des "write" dans un fichier, car une bonne partie du html est généré par des include de html dans le php. Il semble me souvenir qu'il y a un moyen de "détourner" la sortie vers un fichier, mais je ne suis pas arrivé à retrouver comment faire.

Quelqu'un aurait il une idée à ce sujet avant que je me plonge dans la refonte du site?
Salut

PapyJP a écrit :
J'ai un site qui est entièrement écrit en php. A chaque appel de page on génère le code html, ce qui prend des ressources sur le serveur et se traduit par un temps de chargement des pages assez long.
Comme ces pages changent peu souvent, et que c'est toujours suite à une action du webmaster, je pense qu'il serait plus efficace de faire générer des pages statiques, qui pourraient être plus rapidement chargées..

Hors trafic immense sur le site, php ne devrait pas impacter plus que ça le changement des pages. Tu as regardé, avec firebug par exemple (onglet réseau), si il n y avait pas autre chose qui ralentissais le site. Tu peux aussi tester côté serveur en faisant un script qui calcule le temps d’exécution entre 2 lignes données du code pour voir ou ça coincerai.

PapyJP a écrit :
Y a-t-il un moyen simple de réaliser cette fonction sans devoir tout réécrire?

Il faut chercher comment réaliser un cache en php.
bzh a écrit :

Hors trafic immense sur le site, php ne devrait pas impacter plus que ça le changement des pages. Tu as regardé, avec firebug par exemple (onglet réseau), si il n y avait pas autre chose qui ralentissais le site. Tu peux aussi tester côté serveur en faisant un script qui calcule le temps d’exécution entre 2 lignes données du code pour voir ou ça coincerai.

Il faut chercher comment réaliser un cache en php.

Tout d'abord merci pour avoir répondu si vite.

Ouais, c'est aussi ce que je pensais mais je constate que dans le site http://www.bonieux.com, si je clique sur "Paravents", il faut au moins 10 secondes pour charger la page, et encore sur mon ordinateur les images et fichiers inclus, genre js ou css, sont en cache depuis belle lurette.

Avant que je reprenne tout à la base, as tu quelques idées pour les raisons de ce comportement?
Modifié par PapyJP (25 Sep 2013 - 01:05)
Hello,

De mon côté, en cliquant sur "Paravents" depuis la page d'accueil, j'ai moins d'une seconde de temps de chargement Smiley smile

As-tu testé depuis d'autres environnements (machine, connexion, navigateur) que le tien ?
Je n'ai pas non plus de problème de chargement avec ton site. Moins d'un seconde en faisant un rechargement sans le cache du navigateur.
bzh a écrit :
Je n'ai pas non plus de problème de chargement avec ton site. Moins d'un seconde en faisant un rechargement sans le cache du navigateur.

Merci à tous deux pour votre support!
C'est hallucinant!
La propriétaire du site, Mme Bonieux, se plaint de la lenteur d'affichage. Elle craint que ses contacts potentiels rechignent à se connecter à son site.
Je suis très perplexe...
Quasiment 10 secondes aussi, mais l'impression que j'ai eu c'est que le javascript qui anime les vignettes fait traîner ^^ En fait, durant tout le temps d'attente, j'ai eu le temps de voir grandir et rétrécir trois vignettes (que je n'avais fait que frôler pour rejoindre ma barre d'adresse et revenir sur cette page-ci)

Et une fois le chargement fait, le js a de nouveau joué à l'animation de vignette...

edit : en fait 3 minutes plus tard, il anime toujours les vignettes (et c'est franchement fatiguant visuellement).

Opéra dernière version
Windows 7
connexion à 30Mo ^^
Modifié par Lothindil (25 Sep 2013 - 12:30)
Bonjour,
En fait j'ai l'impression que si l'on clique sur "Paravents" dans le menu du dessus (liens normaux), la page se charge assez rapidement. En revanche, lorsque l'on clique sur la vignette "paravents", là j'ai également les 10 secondes de chargement environ.

Effectivement, je pense comme Lothindil que cela vient du js de l'animation des vignettes.
En effet j'étais pas allé jusque là.

L'affichage de la galerie ralenti le site. Pour moi l'affichage de cette page à pris plus de 20 secondes dont 90% du temps à charger les images. Certaines d'entre elles font 3Mo ce qui est immense.

Il faut donc compresser et réduire ces images.
Modifié par bzh (25 Sep 2013 - 15:13)
Merci de vos messages
Un point intéressant de ce forum c'est qu'on a l'opportunité de discuter avec d'autres personnes ayant les compétences nécessaires.

A l'origine, quand je l'ai repris, ce site faisait appel au flash, ce qui présentait certains inconvénients, dont celui de ne pas tourner sur iPad pour des raisons que nous connaissons tous.
J'ai gardé à peu près la présentation initiale en remplaçant le caroussel en flash par un substitut en js.
Je suis bien d'accord que l'animation est agaçante, mais ça faisait partie des specs initiales. Je vais sans doute revenir à la charge en proposant de réduire cette animation. A ce sujet toute suggestion sera la bienvenue.
Les essais que vous avez faits mettent en évidence que le délai est dû au nombre d'images du caroussel: 7 dans la page d'accueil, 0 dans la page "Paravents" (accédée par le menu), une 50aine pour la galerie des paravents...

Je vais ruminer tout ça et essayer de trouver une solution moins coûteuse.

Merci encore de m'aider à y voir clair.
bzh a écrit :
En effet j'étais pas allé jusque là.

L'affichage de la galerie ralenti le site. Pour moi l'affichage de cette page à pris plus de 20 secondes dont 90% du temps à charger les images. Certaines d'entre elles font 3Mo ce qui est immense.

Il faut donc compresser et réduire ces images.

"Normalement" (c'est à dire "aux bugs près") les images sont sensées être chargée dynamiquement.
Chaque image a 3 tailles: thumbnail (~5 ko), normale (~30ko) et originale (~3Mo).
Les images thumbnail servent à faire fonctionner le carrousel en bas de la page, les images normales s'affichent dans la partie haute, et les images originales seulement si on clique sur une image normale pour la voir de plus près ou la télécharger.
http://www.bonieux.com/images/galleries/screens/thumbnails/paravent-parc-de-sceaux-gauche.jpg
http://www.bonieux.com/images/galleries/screens/paravent-parc-de-sceaux-gauche.jpg
http://www.bonieux.com/images/galleries/screens/originals/paravent-parc-de-sceaux-gauche.jpg

Dans la première version, mon code javascript créait des objets "images", donc forçant le téléchargement lors de la création de l'objet "gallery", mais j'ai modifié ce code (du moins je CROIS que je l'ai fait) pour ne plus avoir de tels objets, mais simplement générer les balises img src= à la volée.

Moyennant quoi, le code actuel est tel que les thumbnails sont tous chargés avant que l'animation démarre. 50 * 5 ko = 250 ko, normalement ça ne devrait pas prendre un temps trop long.

Je vais regarder ce bout de code avec plus d'attention.

Il faut aussi comprendre que le programme php utilise les images originales pour fabriquer la version thumbnail et la version normale, mais le code est fait de telle façon que ça ne se produit qu'une seule fois: si le programme ne trouve pas le thumbnail et / ou la version normale, il les fabrique. Encore une possibilité de bug: qu'il les recrée systématiquement, auquel cas le temps côté serveur risque de ne pas être négligeable. En regardant la date et l'heure de création des fichiers, j'ai cependant l'impression que ce n'est pas le cas.
Modifié par PapyJP (25 Sep 2013 - 16:01)
Si ça peut t'aider, opera me signale un timeout sur Galery.Animate().

A tel point que quand je cherche à recharger tous les scripts de la page (pour voir le timing des ressources), il ne parvient plus à dépasser le <head>.

Une boucle infinie sur un script javascript chargé avant le body peut-être ?
Lothindil a écrit :
Si ça peut t'aider, opera me signale un timeout sur Galery.Animate().

A tel point que quand je cherche à recharger tous les scripts de la page (pour voir le timing des ressources), il ne parvient plus à dépasser le &lt;head&gt;.

Une boucle infinie sur un script javascript chargé avant le body peut-être ?

Oui, je suis en train de mettre des trappes dans le code et j'ai dû faire un bug, ça tourne indéfiniment.
Je vais revoir ça.
Pour le moment c'est "under construction"...
Hmm! ça s'obscurcit de plus en plus:

J'ai créé en Javascript une table TRACELIST dans laquelle je mets l'heure à certains points de contrôle:

...
var TRACELIST = [new Date];
var Works = { .... };
TRACELIST[TRACELIST.length] = new Date();
$("workimage").style.height = WorkImageHeight + "px";
var Gallery = new Gallery( ..... );
TRACELIST[TRACELIST.length] = new Date();
Gallery.Draw();
TRACELIST[TRACELIST.length] = new Date();
Gallery.Animate();
TRACELIST[TRACELIST.length] = new Date();
...

C'est à dire:
avant la création de l'objet "Works" (table des œuvres indexée par l'ID de chaque oeuvre)
après la création de cet objet
après la création de l'objet "Gallery" (Carrousel)
après avoir lancé l'animation du carrousel

En suite je regarde dans FireBug le contenu deTRACELIST: ça me donne une liste de dates/heures égales à la seconde près.
Doit y'avoir un bugue!!!
Vous pouvez tester, j'ai laissé les traces dans le code.
_______________________________________________________
EDIT
Hé oui, il est là le bugue: var TRACELIST = [new Date()];
Mais ça ne change rien au résultat: toutes les traces sont dans la même seconde.
Modifié par PapyJP (25 Sep 2013 - 17:49)
PapyJP a écrit :

&quot;Normalement&quot; (c'est à dire &quot;aux bugs près&quot;) les images sont sensées être chargée dynamiquement.
Chaque image a 3 tailles: thumbnail (~5 ko), normale (~30ko) et originale (~3Mo).

Toutes les images sont belles est bien chargés pour l'instant. D'autre part ça n'a pas de sens d'avoir des images de 3Mo en 2 120px × 2 252px ; aucun écran ne peut afficher ça. D'autant que celle-ci sont ensuite réduites et affichées dans un carré minuscule. Une grande partie des images en taille originale semble avoir une taille plus raisonnable.

Je ne pense pas qu'il y est de défaut côté serveur, recréer autant de miniatures prendrait beaucoup plus de temps.

A mon avis, l'erreur que tu as fais est d'avoir laissé la taille originale pour les grandes images du coup quand tu upload une photo tirée d'un appareil numérique, tu te retrouves avec un fichier énorme qui n'a pas lieu d'être.
Modifié par bzh (25 Sep 2013 - 17:51)
bzh a écrit :

Toutes les images sont belles est bien chargés pour l'instant. D'autre part ça n'a pas de sens d'avoir des images de 3Mo en 2 120px × 2 252px ; aucun écran ne peut afficher ça. D'autant que celle-ci sont ensuite réduites et affichées dans un carré minuscule. Une grande partie des images en taille originale semble avoir une taille plus raisonnable.

Je ne pense pas qu'il y est de défaut côté serveur, recréer autant de miniatures prendrait beaucoup plus de temps.

A mon avis, l'erreur que tu as fais est d'avoir laissé la taille originale pour les grandes images du coup quand tu upload une photo tirée d'un appareil numérique, tu te retrouves avec un fichier énorme qui n'a pas lieu d'être.

Pas d'accord:
Ce que l'on voit défiler en bas, ce sont les thumbnails, ce que l'on voit défiler en haut ce sont les images de taille normale.
Les "grosses images" sont là pour que les gens puissent les télécharger, et ils doivent pour cela cliquer sur l'image de taille "normale". Sauf bug, comme je l'ai dit, ces grosses images ne sont chargées qu'à la demande. Si tu trouves que ces images se sont téléchargées sans demande spécifique, c'est donc qu'il y a un bug dans mon code, ce qui est plutôt rassurant car il est plus facile de corriger un bug que de revoir toute la logique d'une application.
Confirmes tu que les "grosses images" se sont chargées dans la page, c'est à dire celles dont le chemin d'accès est "www.bonieux.com/images/galleries/screens/originals/....jpg"?

Quand je regarde sous FireFox, je n'en vois aucune provenant de ce répertoire.
De même j'ai bien la liste des 50 images provenant de "www.bonieux.com/images/galleries/screens/thumbnails/....jpg" mais seulement quelques unes de taille "normale" ("www.bonieux.com/images/galleries/screens/....jpg")

Est-ce que cela pourrait dépendre du navigateur? Je vois mal Opera charger des images qu'on ne lui a pas (encore) demandé de charger...
Modifié par PapyJP (25 Sep 2013 - 18:12)
PapyJP a écrit :

Pas d'accord:

Regarde l'onglet réseau avec firebug et fais un rechargement complet de la page ( ctrl+shift+r ) pour voir ce qui se passe réellement. Toutes les images sont chargés dans leurs 3 formats.

upload/6600-loloload.png

Tu peux voir les pics en vert pour les images plus lourdes.
bzh a écrit :

Regarde l'onglet réseau avec firebug et fais un rechargement complet de la page ( ctrl+shift+r ) pour voir ce qui se passe réellement. Toutes les images sont chargés dans leurs 3 formats.

upload/6600-loloload.png

Tu peux voir les pics en vert pour les images plus lourdes.

Exact
Je vais regarder cela de près demain pour comprendre d'où ça peut venir.
C'est manifestement un bug dans le javascript.
Merci de ton aide.
OK
J'ai trouvé (et corrigé) le bug!!

Merci encore de votre aide!
Modifié par PapyJP (26 Sep 2013 - 10:45)