#1 2011-01-31 00:55:43

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12673

[2.2] la miniature représentant un album est "moins" aléatoire

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 ?


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#2 2011-01-31 08:44:01

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: [2.2] la miniature représentant un album est "moins" aléatoire

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

#3 2011-01-31 09:53:43

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12673

Re: [2.2] la miniature représentant un album est "moins" aléatoire

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.


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#4 2011-01-31 10:44:06

Gotcha
Ex Equipe Piwigo
Pierrelatte (26)
2007-03-14
13331

Re: [2.2] la miniature représentant un album est "moins" aléatoire

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.


Ayez comme premier réflexe de consulter le wiki.
Ensuite, veuillez effectuer une recherche sur le forum avant de poser votre question.

LE FAIRE EST LE REVELATEUR DE L'ETRE

Hors ligne

#5 2011-01-31 10:46:05

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12673

Re: [2.2] la miniature représentant un album est "moins" aléatoire

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é.


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#6 2011-01-31 10:51:41

Gotcha
Ex Equipe Piwigo
Pierrelatte (26)
2007-03-14
13331

Re: [2.2] la miniature représentant un album est "moins" aléatoire

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 :-/


Ayez comme premier réflexe de consulter le wiki.
Ensuite, veuillez effectuer une recherche sur le forum avant de poser votre question.

LE FAIRE EST LE REVELATEUR DE L'ETRE

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact