Charger des données une fois pour toute

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Charger des données une fois pour toute

par Slagt » 10 juil. 2006, 18:41

Merci beaucoup pour vos réponses.

L'idée de la frame j'y ai pensé, mais je ne l'aime pas trop.
Par contre l'idée de généré une page HTML, ça me plait ... A voir.

Merci beaucoup :)

par Henri » 10 juil. 2006, 12:06

Si tes textes changent peu, pourquoi ne pas générer le code HTML final ?
je m'explique : tu as actuellement quelque chose comme ça dans tes pages publiques (en probablement un peu plus compliqué)
<?php
$sql = "select titre, resume from texte where id=$d";
?>
...
puis ton affichage
<h1><?php echo $titre; ?><h1>
<?php echo $resume; ?>
Ce que tu peux faire, c'est dans l'administration des textes, lorsque tu fais un insert ou un update d'un texte, tu génères le code html correspondant à l'affichage :
 $fh = fopen ("page".$id.".html", "w");
 fwrite ($fh, "<h1>.$titre.</h1>\n");
 fwrite ($fh, $resume."\n");
 fclose($fh);
et ensuite dans ta page d'affichage, tu n'as plus qu'à faire un
  include ("page".$id.".html");
Il n'y a plus de requête, il n'y a plus d'affichage de variables dynamiques, ... : juste la lecture d'un fichier et donc son affichage.

Maintenant, si tu charges de très nombreux textes que tu n'affiches pas, ce qui ralentit le site, ce n'est pas tellement la requête SQL, c'est leur transmission sur la ligne.
J'ai eu un cas similaire avec un affichage de listes déroulantes chaînées (du style, je choisis la marque dans une première liste, la deuxième liste affiche les modèles de la marque, puis ensuite tu choisis les motorisations des modèles, ...). Ce sont des javascript qui marchent très bien, mais qui ont besoin d'avoir dans chaque page où on les utilisent toutes les marques, tous les modèles, toutes les motorisations, toutes les références, ... bref : de très très longues secondes pour charger ces pages quand il y a des centaines de marques et des dizaines de milliers de modèles et références.
Nous avons inclus le script dans un frameset : une frame avec le site proprement dit, et une frame de 1 pixel de large.
Lorsque l'utilisateur arrive sur le site, cette frame "presque cachée" contient du php qui va générer les variables javascript de tous les éléments dont on a besoin pour le site. Cela prend un peu de temps, mais c'est une fois uniquement. Et comme ce sont des données qui changent rarement, le fichier est généré à chaque insert/update/delete de données, comme expliquer plus haut.

Lorsque l'utilisateur se promène sur le site, cette frame "cachée" n'est pas rechargée et contient toujours ces variables. Il suffit que les scripts du site qui ont besoin des marques, modèles, ...fassent référence aux variables de la frame.

Voila deux idées : à toi de jouer ...

par marvllt » 10 juil. 2006, 07:54

tu n'es pas obligé de les charger a chaque fois meme si il servent pas et pouquoi tu les mets pas ds un array c'est plus rapide

Charger des données une fois pour toute

par Slagt » 10 juil. 2006, 00:11

Bonjour,

Voilà j'ai fait un site, terminé. Mais j'ai un gros problème de lenteur. En effet, beaucoup des textes présents sur le site sont chargés depuis une base MySQL, et je suis obligé de tous les charger (même lorsqu'ils n'apparaissent pas).

Le truc débile, c'est que ces textes ne changent que très rarement. Mais lorsqu'il y a un changement, il faut qu'il soit très vite repéré. Donc je voudrais savoir s'il était possible de charger tous les textes une fois pour toutes, jusqu'à ce que le visiteur quitte son navigateur ? A la manière d'une session (mais je doute qu'on puisse mettre autant de texte dans une session...)