Pages: 1
Bonjour à tous,
Pour la correction un peu complexe de [Bugtracker] ticket 937, j'ai dû ajouter des requêtes SQL et malheureusement ce sont des requêtes SQL très coûteuses car elles utilisent un "order by rand()" qui peut faire mal sur des grosses galeries. Pour contrer cette augmentation de charge SQL, j'ai implémenté un système qui met en cache la miniature à afficher pour tel album pour tel utilisateur. Comme je trouvais le système très efficace, je l'ai généralisé hors du cas particulier "cette miniature n'est pas autorisée à tel utilisateur".
Concrêtement, on y gagne en performances SQL (et de manière vraiment significative car on vire toutes les requêtes qui consomment beaucoup) mais on y perd en "aléatoirité". Je vais donner un exemple pour qu'on me comprenne.
Imaginons l'arborescence suivante:
* évènements
-- * anniversaire Paul
-- * mariage Benjamin
---- * église
---- * soirée
* nature
-- * flore
-- * faune
---- * felins
---- * oiseaux
En 2.1: la miniature représentant "nature" est choisie parmi les miniatures représentant {flore, felins, oiseaux}, le résultat peut changer à chaque rafraichissement de la page
En 2.2 : au premier passage du visiteur, la miniature représentant "nature" est choisie parmi les miniatures représentant {flore, felins, oiseaux}, par exemple "oiseaux", cette miniature est mise en cache. Dès le second passage, on réutilise la miniature en cache, donc ce sera toujours "oiseaux".
Le cache est réinitialisé par certaines actions d'administration comme l'ajout de photo ou des modifications sur les permissions donc le cache a une durée de vie limitée, mais on peut considérer que pour une visite donnée, chaque album aura une seule et unique miniature représentante.
rvelices a tout de suite remarqué ce changement et s'est demandé si je n'avais pas introduit un bug. J'ai expliqué que c'était une conséquence de l'amélioration de performances.
Est-ce que, à l'utilisation de la 2.2.0RC1, vous avez constaté ce changement et pose-t-il un problème à votre avis ?
Hors ligne
plg a écrit:
(...)
En 2.2 : au premier passage du visiteur, la miniature représentant "nature" est choisie parmi les miniatures représentant {flore, felins, oiseaux}, par exemple "oiseaux", cette miniature est mise en cache. Dès le second passage, on réutilise la miniature en cache, donc ce sera toujours "oiseaux".
Le cache est réinitialisé par certaines actions d'administration comme l'ajout de photo ou des modifications sur les permissions donc le cache a une durée de vie limitée, mais on peut considérer que pour une visite donnée, chaque album aura une seule et unique miniature représentante.
Donc si je comprends bien, un utilisateur qui regarde un certain album dans lequel il peut voir l'existence de sous-albums, s'il rafraîchit l'affichage de sa page, les miniatures représentantes des sous-albums ne changeront pas ?
plg a écrit:
Est-ce que, à l'utilisation de la 2.2.0RC1, vous avez constaté ce changement et pose-t-il un problème à votre avis ?
Je n'ai hélas pas encore eu l'occasion de tester la 2.2.0RC1, mais personnellement ce que tu exposes ne pose à mon avis pas de gros problème. Je trouve un peu dommage de perdre de cette "aléatoirité", mais bon.
Hors ligne
LucMorizur a écrit:
Donc si je comprends bien, un utilisateur qui regarde un certain album dans lequel il peut voir l'existence de sous-albums, s'il rafraîchit l'affichage de sa page, les miniatures représentantes des sous-albums ne changeront pas ?
Tu comprends bien.
C'est également vrai pour ceux qui ont $conf['allow_random_representative'] = true : la miniature est trouvée aléatoirement la première fois puis c'est mis en cache.
Hors ligne
plg a écrit:
C'est également vrai pour ceux qui ont $conf['allow_random_representative'] = true : la miniature est trouvée aléatoirement la première fois puis c'est mis en cache.
Oui voilà c'est ça qui est dommage :-( Disons que cette option du coup va disparaître. Ca ne pose pas un "gros" problème bien que j'aimai bien trouver une miniature différente à chaque rafraichissement. Ca anime une galerie, ça égaille la curiosité du visiteur etc
Je n'ai pas encore testé la RC1 sur une copie de ma galerie.
Hors ligne
Non, l'option ne disparaît pas. Elle reste vraie dans la mesure où la miniature est choisie aléatoirement (mais uniquement la première fois). 2 utilisateurs ne verront pas la même miniature pour un album donné.
Hors ligne
Oui entre deux utilisateurs différents. Moi je parle d'un seul visiteur qui reste suffisement longtemps pour voir que la galerie regorge de photos différentes. Donc le système de la RC1 est arbitraire.
Maintenant, pour trouver un compris je ne sais pas :-/
Hors ligne
Pages: 1