Performance de ma structure permalien?
3 réponses
- votes
-
- 2010-10-29
Vouspouvez vérifieren regardant lataille de l'option rewrite_rules dans labase de données.S'ilestpetit (ce queje pense qu'il devrait avec cette structure),vousn'utilisezpas de règles verbeuses.En revanche,si vous voyezplusieurs lignesparpage statique,vous utilisez des règles verbeuseset cen'estpasbon.
You can check by looking at the size of the rewrite_rules option in the database. If it's small (which I believe it should with this structure), you're not using verbose rules. By contrast, if you see several lines per static page, you're using verbose rules and it's not good.
-
malheureusement ...il y aplusieurs lignesparpage statique GRIN.Donc cen'estprobablementpas unebonne structure depermalien ... hmmmm ... celaexplique unmessage d'erreur quej'ai reçuil y a quelquetemps "Erreur debase de données WordPress Vous avez unpaquetplusgros que 'max_allowed_packet",j'ai dû augmenter ceparamètre dans MySql.unfortunately... there are several lines per static page GRIN. So this is probably not a good permalink structure...hmmmm... this does explain an error message I got a while ago "WordPress database error Got a packet bigger than 'max_allowed_packet", I had to increase this setting in MySql.
- 0
- 2010-10-29
- edelwater
-
alorsencore ... si vous continuez à ajouter despagespendant des années,vous obtiendrez automatiquementmax_allowed_packet quoi qu'il arrive ... àmoins que vousne reveniez à despermaliensnonjolis ... (jepense) donc ...pour être évolutifpour les 30prochaines années:) Je devraiprobablement revenir à despermaliensnonjolis.Jepense.then again... if you keep adding pages during years you will automatically get max_allowed_packet no matter what... unless you revert to non pretty permalinks... (i think) so... to be scalable for the next 30 years :) I will probably have to revert to non pretty permalinks. I think.
- 0
- 2010-10-29
- edelwater
-
Tant que vous utilisez des règlesnon verbeuses,les règles detype depage,depiècejointeet depublicationpersonnalisée sontgénériques.Lesjolis liens sont donc assez sûrsen pratique,tant qu'ils utilisent une structurenon verbeuse.As long as you're using non verbose rules your page, attachment and custom post type rules are generic. So pretty links are quite safe in practice, so long as they're using a non verbose structure.
- 1
- 2010-11-11
- Denis de Bernardy
-
- 2010-11-12
Jemetsmon veto à la réponse acceptée.La complexité des règles de réécriturene constitueen aucun cas unemesure desperformances de recherche d'articles.
Enparticulier,il semble que démarrer vospermaliens avec desnoms depublicationestmauvais;voir http://codex.wordpress.org/Using_Permalinks#Structure_Tags
Sans avoirexaminé le code Wordpress,je peuximaginer qu'ilsindexenten quelque sorte les articles demanière hiérarchique.Par conséquent,les variables utilisées dans lespermaliens doivent être classées degauche à droite de la variable laplusgénérale à laplus spécifique à lapublication utilisée.Cette heuristiquefavorisefortement les standards année/mois/nom ou catégorie/nom.
I veto the accepted answer. The complexity of the rewrite rules is in no way a measure for the performance of article lookup.
In particular, it seems that starting your permalinks with post names is bad; see http://codex.wordpress.org/Using_Permalinks#Structure_Tags
Without having looked into Wordpress code, I can imagine that they somehow index posts hierarchically. Therefore, the variables used in permalinks should be ordered from left to right from the most general to the most post specific variable used. This heuristic strongly favors the standards year/month/name or category/name.
-
`category/name`esten fait connuet confirmé comme causant desproblèmes deperformances si ungrandnombre depagesestprésent.Cen'estpas autant lié à la vitesse de recherche qu'à la déduction de l'objet correct à serviret la complexité des règles de réécriture **est **tout àfaitpertinente.`category/name` is actually known and confirmed as causing performance issues if large amount of pages is present. It is not as much related to speed of lookup as to deducing correct object to serve and complexity of rewrite rules **is** completely relevant.
- 1
- 2010-11-12
- Rarst
-
Pouvez-vous donner une référence doc/code s'il vousplaît?Je viens deparcourir le code `(wp-include/rewrite.php`et` wp-include/query.php`);bien que cela ait l'air vraiment horribleet inutilement compliqué,il semble que lesparties soient collectéeset identifiées,puis directementinsérées dans les requêtes SQL.Jene voistoujourspaspourquoi cela devraitprendreplus detempspour différentes commandes.Mais lorsque la db-queryestexécutée,plusieursjointures doivent êtreeffectuéeset l'ordre _ici_ compte vraiment.Il semble queje me souvienne que MySQLestparticulièrementmauvaispour optimiser l'ordre dejointure.Can you give a doc/code reference please? I just skimmed the code `(wp-include/rewrite.php` and `wp-include/query.php`); while is looks really awful and unnecessarily complicated, it appears that basically the parts are collected and identified and then directly inserted into SQL queries. I still cannot see why this should take longer for different orders. But when the db-query is executed, several joins have to be performed and _here_ order really matters. I seem to remember that MySQL is particularly bad at optimising join order.
- 0
- 2010-11-12
- Raphael
-
Jene suispastrop dans lathéorie DB,mais vous devezgarder lesproduitspetits.Danstous les cas,celapourrait être unbogue dans le sens oùiln'estpasprogrammé aussiefficacement qu'ilpourrait l'être.I am not too deep into DB theory, but you have to keep products small. In any case, this might be a bug in the sense that it is programmed not as efficiently as it could be.
- 0
- 2010-11-12
- Raphael
-
Ehbien ...j'ai lu que commencerpar lesnoms deposte étaitmauvais ET l'autre réponsemontreen effetplusieurs lignesparentrée (maispourmonblog de 10.000 articles queje dirige sur wordpress depuis des années,iln'y aprobablementpasgrand chose queje change sansperdrebeaucoup de références).Jen'aipas complètement compris votre réponseiciet le "veto" cependant,que dois-jefaire lorsque vous opposez votre veto à une réponse????Well... i read that starting with post names was bad AND the other answer shows indeed multiple lines per entry (but for my 10.000 posts blog which i run on wordpress for years there is probably not much I change without losing a lot of references). I did not completely understand your answer here and the "veto" though, what do i need to do when you veto an answer????
- 0
- 2010-11-14
- edelwater
-
J'ai seulement écrit "veto",iln'y apas detellefonctionici.Monpointest que l'exécutionplus élevéeest causéeparplus de codeen cours d'exécution oupar le SGBD.Puisqueje n'aitrouvé aucune raison suggérant que l'ordre différent des composants d'URL devrait augmenter la quantité de codeexécuté,je prétends que la raison réside dans les requêtes debase de données.Mais avec autant demessages,peut-être quetoute commandeest lente _parce que vous aveztellement demessages_.Utilisez-vous lamiseen cache?I only wrote "veto", there is no such function here. My point is that higher runtime is caused by more code being executed or the DBMS. Since I could not find any reason that would suggest that different order of URL components should increase the amount of code run, I claim the reason lies with the database queries. But with that many posts, maybe any order is slow _because you have so many posts_. Do you use caching?
- 0
- 2010-11-14
- Raphael
-
Euh,pas d'offense,mais opposer son veto à une réponse sans avoir étudiéen profondeur le code WPn'apasbeaucoup de sens.FWIW,j'ai créé,corrigéet optimisé suffisamment de code WPen général,et du code depermaliens WPen particulier,pour savoir quelles échelleset ce quine fonctionnepas.;-) Les règles verbeusespeuvent conduire à unparamètre énorme dans latable des options,qui doitensuite êtreextrait de labase de données (oumemcached)et désérialisé à chaque chargement depage.J'ai vu ce dernier cas d'utilisation amener un serveurbi-xeonmodérément chargé à une analyseen 2006.Err, no offense, but vetoing an answer without having thoroughly studied the WP code doesn't make much sense. FWIW, I authored, fixed and optimized enough WP code in general, and WP permalinks code in particular, to know what scales and what doesn't. ;-) Verbose rules can lead to a huge setting in the options table, that then needs to be pulled from the database (or memcached) and unserialized on every page load. I've seen the latter use-case bring a moderately loaded bi-xeon server to a crawl in 2006.
- 0
- 2010-11-14
- Denis de Bernardy
-
Ehbien,alors vous devriez êtreen mesure de donnerplus de détails que "ne soyezpasbavard".Qu'est-ce que la verbositéici?L'ordre des variablesest-ilimportant?(puisque Codex le ditet ce que vous ditesne l'expliquepas dutout!) Deplus,si ceparamètre doit êtreextrait unefoispar chargement depage,pourquoi l'effet augmente-t-ilplusil y a depublications?La désérialisationne devrait-ellepas être _fast_?Mais,oui,certainement,je pense auniveau de ce qui a du sens,pas de ce quiest dans le code.Tout le coden'apas de sens.Well, then you should be able to give more specifics than "don't be verbose". What is verbosity here? Does the order of variables matter? (since Codex says it does and what you say does not explain this at all!) Furthermore, if this setting has to be pulled once per page load, why does the effect increase the more posts there are? Should deserializing not be _fast_? But, yes, certainly, I am thinking on the level of what makes sense, not what is in the code. Not all code makes sense.
- 0
- 2010-11-14
- Raphael
-
le Codex donne "Quelques CONSEILS" (voir Codex)et neprécisepas l'algorithme complet.Ilpointe cependant vers http://ottopress.com/2010/category-in-permalinks-consemed-harmful/et http://comox.textdrive.com/pipermail/wp-testers/2009-January/011097.html alldans l'ensemble,ilexiste une sorte defrictionentre lesmeilleurespratiques depiratage d'url dans le domaine de l'interaction homme-machineet lesperformances du domaine de l'amélioration desperformances.the Codex give "A few HINTS" (see Codex) and does not specificy the complete algorithm. It does however point to http://ottopress.com/2010/category-in-permalinks-considered-harmful/ and http://comox.textdrive.com/pipermail/wp-testers/2009-January/011097.html all in all there is a sort of friction between best practices of url hacking in the field of human computer interaction and performance from the field of performance improvement.
- 2
- 2010-11-14
- edelwater
-
Mercipour lepointeur ottopress.Cela appaers que changer les conventions detelle sorte que chaque URL depage commencepar `/page/`et chaque URL depublicationpar `/post/`,supprimant ainsi la clarté.Vous devriezpouvoir lefaire vous-même,en ajoutant letextefixe à votre structure depermalien.Ce seraitprobablement unebonne décision,detoutefaçon;que sepasse-t-il sij'ai unmessage BAR dans la catégorie FOOet unepage BAR quiest une sous-page de FOO?Les deux seraient adresséspar `/foo/bar/`en supposant le schéma% category%/%postname%.Ou les limaces sont-elles uniques aumonde?Thanks for the pointer ottopress. It appaers that changing conventions such that every page url would start with `/page/` and every post url with `/post/`, removing the unambiguity. You should be able to do this yourself, adding the fixed text to your permalink structure. This would probably be a good decision, anyways; what happens if I have a post BAR in category FOO and a page BAR that is subpage of FOO? Both would be addressed by `/foo/bar/` assuming the %category%/%postname% scheme. Or are slugs globally unique?
- 1
- 2010-11-14
- Raphael
-
Oh,et sije comprendsbien,lefait dene pas avoirbeaucoup demessagesbrise ce systèmemais d'avoir denombreusespages,non?Puisque Wordpress a commencé comme système deblogging,cela avait du sens.Ensuite.Oh, and as I understand it not having many posts breaks this system but having many pages, right? Since Wordpress started out as blogging system, this made sense. Then.
- 0
- 2010-11-14
- Raphael
-
Ouais,avoirbeaucoup depageset depiècesjointesestmauvais avec des règles verbeuses,maispasbeaucoup demessages.La raisonen est que wp suppose que c'est unmessage,sauf si une règle spécifie le contraire.Des règles verbeuses ont étéintroduites lorsque wp aintroduit lespages,en 2005,afin d'éviter les collisions depermalien avec lespublications.Ilexisteencoreplusieurstickets (certains avec des correctifs,d'autres sans) quitentent d'améliorer les choses sur cefront.Yeah, having many pages and attachment is bad with verbose rules, but not having many posts. The reason is, wp assumes it's a post unless a rule specifies otherwise. Verbose rules were introduced when wp introduced pages, way back in 2005, in order to avoid permalink collisions with posts. There are still several tickets (some with patches, some without) that try to improve things on this front.
- 0
- 2010-11-14
- Denis de Bernardy
-
Oh,et,au cas où onne saitpas quelles sont les règles détaillées,l'essentielest que chaquepage,piècejointeet type depublicationpersonnalisé,au lieu d'utiliser uneexpression régulièregénériquepouridentifiertoutes les données de cetype,setermineparplusieurs règleset doncregex -encore unefois,parpage,piècejointe outype depublicationpersonnalisé.Cela seul suffit à ralentir considérablement les choses,mais le vraigoulot debouteilleesten fait lié au retraitet à la désérialisation des règlesen premier lieu.Oh, and, in case it's unclear what verbose rules are, the gist of it is, each page, attachment, and custom post type, instead of using a generic regex to identify all data of that type, ends up with several rules and thus regex -- again, per page, attachment, or custom post type. This alone is enough to slow things down significantly, but the real bottle neck is actually related to pulling and unserializing the rules in the first place.
- 0
- 2010-11-14
- Denis de Bernardy
-
Donc,ce quipourrait être résolupar une simple correspondance de regexpestgonflé à un désordre horrible simplementparce que certaines hypothèses du débutne s'appliquentplus.Y a-t-il une raisonparticulièrepour laquelle le comportementn'apas étémodifié?Peurparce que les anciens liens sebriseraient?Enparticulier,la distinctionentrepageset articles semble artificielle denosjours,mais c'est un autre sujet.So what could be solved by simple regexp matching is bloated to a horrible mess just because some assumptions from the beginning do no longer apply. Is there a particular reason why the behaviour has not been changed? Fear because old links would break? In particular, the distinction between pages and posts seems artificial nowadays, but that is another topic.
- 0
- 2010-11-14
- Raphael
-
"raisonpour laquellepas changé" -> http://core.trac.wordpress.org/search?q=permalinks"reason why not changed" --> http://core.trac.wordpress.org/search?q=permalinks
- 0
- 2010-11-15
- edelwater
-
618bugs sont une raison de lefaireentièrementnouveau,pas de legarder.618 bugs are a reason to do it whole new, not to keep it.
- 0
- 2010-11-15
- Raphael
-
@Raphael: Je suppose quetout lemondeici sera d'accord là-dessus.Mais comme chacun denous qui contribue réellement aux correctifs aunoyau WP le sait,et comme un certainnombre de ces 618 résultats de recherche le révéleront (cene sontpastous desbogues,btw:notez également les correctifset lesensembles demodifications),les développeursprincipaux de WPne lefontpas.commettezfacilement des corrections debogueset des améliorations.Enparticulier lorsqu'il s'agit d'améliorationsnontriviales.@Raphael: I suspect everyone here will agree on that. But as each of us who actually contribute patches to WP core know, and as quite a few of those 618 search results will reveal (they're not all bugs, btw: notice the patches and changesets too), the WP core devs do not readily commit contributed bug fixes and enhancements. In particular when they're non-trivial enhancements.
- 0
- 2010-11-15
- Denis de Bernardy
-
Bien sûr.Vousne voulezpas être responsable d'unepause que vousn'avezmêmepas codée vous-même.Maisnous obtenonstout letemps denouvellesfonctionnalités;peut-être qu'ungel desfonctionnalitésjusqu'à ce que certainsproblèmes (je suppose qu'il y aplus deproblèmes dans WP) soienttraitésest-ilen ordre?Of course. You do not want to be responsible for a break you did not even code yourself. But we get new features all the time; maybe a feature freeze until some issues (I suspect there are more rough edges in WP) are handled is in order?
- 0
- 2010-11-16
- Raphael
-
J'ai lu la discussion sur lesperformances des différentspermaliens sur lamailinglist wp hackers,sur CEforumet autour de Google.
Jene pourrais cependantpas vraiment déduire si la structure depermalien quej'utilise depuis des annéesestbonne oupas:
Cette combinaisonplace lenom deposte directement après le/et la combinaison année,mois,jour le rendplus unique car denombreuxnoms deposteportent lemêmenom. L'ajout htmlest quelque chose quej'utilise depuis 10 ans surmonblog (même avant wordpress),c'est donc un héritage.
Jene saispas si c'estbonpour lapermance oumauvaispour lesperformances,commentpuis-je vérifier cela?
(Je dirige leblog depuis +10 anset il y aenviron 10 000 articles avec denombreux liens)
liens:
http://codex.wordpress.org/Using_Permalinks
http://www.google.com/search?q=wordpress+ catégorie + lienpermanent +performances
http://ottopress.com/2010/category-in-permalinks-consemed -nocif/
http://lists.automattic.com/pipermail/wp- hackers/2010-octobre/035458.html