Plan du site : `lastmod` pour les plans de site incorrect

Dans le sitemap principal, la date lastmod des sitemaps sous-jacents est incorrecte :

Par exemple, voir https://meta.discourse.org/sitemap.xml
Les dates pour sitemap_2.xml à sitemap_5.xml sont toutes les mêmes : ‘2024-03-14T14:02:32Z’ - ce qui correspond exactement à ‘il y a 3 jours’.

<sitemapindex>
    <sitemap>
        <loc>https://meta.discourse.org/sitemap_recent.xml</loc>
        <lastmod>2024-03-17T14:02:29Z</lastmod>
    </sitemap>
    <sitemap>
        <loc>https://meta.discourse.org/sitemap_1.xml</loc>
        <lastmod>2024-03-17T14:02:29Z</lastmod>
    </sitemap>
    <sitemap>
        <loc>https://meta.discourse.org/sitemap_2.xml</loc>
        <lastmod>2024-03-14T14:02:32Z</lastmod>
    </sitemap>
    <sitemap>
        <loc>https://meta.discourse.org/sitemap_3.xml</loc>
        <lastmod>2024-03-14T14:02:32Z</lastmod>
    </sitemap>
    <sitemap>
        <loc>https://meta.discourse.org/sitemap_4.xml</loc>
        <lastmod>2024-03-14T14:02:32Z</lastmod>
    </sitemap>
    <sitemap>
        <loc>https://meta.discourse.org/sitemap_5.xml</loc>
        <lastmod>2024-03-14T14:02:32Z</lastmod>
    </sitemap>
</sitemapindex>

Problème technique :

D’une manière ou d’une autre, 3.days.ago est utilisé pour sitemap_[2-5].xml car sitemap.last_posted_topic pourrait ne pas retourner une valeur valide.

Autre point : Dans last_posted_topic, utilisez également bumped_at

Comparez avec lastmod dans les sitemaps de sujets sitemap_[1-5].xml eux-mêmes :

Pseudo-code non testé :

    def last_posted_topic
      [sitemap_topics.maximum(:bumped_at), sitemap_topics.maximum(:updated_at)].max
    end

Je crains qu’une optimisation ici ne complique énormément les choses pour très peu de bénéfices.

Réfléchissez bien…

Disons qu’il y a 6 blocs sur meta. Si un sujet du dernier bloc est abordé… le bloc entier devient invalide, vous devez retirer le sujet de là et le placer dans le bloc avant.

Optimiser ici est un peu inutile pour un site qui connaît une quelconque activité et les dates à l’intérieur du bloc sur les sujets réels sont correctes.

1 « J'aime »

Il ne s’agit pas de déplacer des sujets dans différents fragments de sitemap. Les sujets peuvent rester dans le même fragment de sitemap où ils se trouvent déjà.
(Le mappage sujet-fragment de sitemap est de toute façon arbitraire car l’instruction select de la base de données avec limit n’a pas d’order défini.)

Le rapport de bug concerne le fait que la date lastmod de chaque fragment de sitemap doit représenter la date lastmod du sujet le plus récent que le fragment de sitemap contient.

La manière pour Google devrait être :

  1. Charger sitemap.xml
    → Vérifier lastmod des fragments de sitemap et mettre en file d’attente les fragments de sitemap qui nécessitent une mise à jour
    (date lastmod plus récente que la dernière fois téléchargée)

  2. Charger les fragments de sitemap mis en file d’attente sitemap_[1-5].xml
    → Vérifier lastmod des URLs de sujets et mettre en file d’attente les URLs de sujets qui nécessitent une mise à jour
    (date lastmod plus récente que la dernière fois téléchargée)

  3. Charger les URLs de sujets mis en file d’attente.

Si dans sitemap.xml le lastmod des fragments de sitemap est incorrect :
→ Google ne met pas en file d’attente les fragments de sitemap modifiés (étape 1)
→ Google ne met pas à jour les fragments de sitemap modifiés en temps opportun (étape 2)
→ Google ne met pas à jour les sujets modifiés en temps opportun (étape 3)

Actuellement, https://meta.discourse.org/sitemap.xml ressemble à ceci :

  • https://meta.discourse.org/sitemap_1.xml
    lastmod : 2024-03-19T12:50:09Z
    Tous les sujets à l’intérieur ont une date plus ancienne ou identique ? :github_check:

    • Sujet le plus récent : https://meta.discourse.org/t/creating-a-stickypost-for-forum-threads/299967
      lastmod : 2024-03-19T11:03:38Z
  • https://meta.discourse.org/sitemap_2.xml
    lastmod : 2024-03-16T12:59:17Z
    Tous les sujets à l’intérieur ont une date plus ancienne ou identique ? :x:

    • Sujet le plus récent : https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-125/299538
      lastmod : 2024-03-19T09:17:46Z
  • https://meta.discourse.org/sitemap_3.xml
    lastmod : 2024-03-16T12:59:17Z
    Tous les sujets à l’intérieur ont une date plus ancienne ou identique ? :x:

    • Sujet le plus récent : https://meta.discourse.org/t/configure-direct-delivery-incoming-email-for-self-hosted-sites/49487
      lastmod : 2024-03-18T18:16:26Z
  • https://meta.discourse.org/sitemap_4.xml
    lastmod : 2024-03-16T12:59:17Z
    Tous les sujets à l’intérieur ont une date plus ancienne ou identique ? :x:

    • Sujet le plus récent : https://meta.discourse.org/t/video-thumbnails-issue/263595
      lastmod : 2024-03-19T00:00:20Z
  • https://meta.discourse.org/sitemap_5.xml
    lastmod : 2024-03-16T12:59:17Z
    Tous les sujets à l’intérieur ont une date plus ancienne ou identique ? :x:

    • Sujet le plus récent : https://meta.discourse.org/t/daily-summary-9pm-utc/291850
      lastmod : 2024-03-18T21:14:49Z
  • https://meta.discourse.org/sitemap_recent.xml
    2024-03-19T13:03:41Z
    Tous les sujets à l’intérieur ont une date plus ancienne ou identique ? :github_check:

    • Sujet le plus récent : https://meta.discourse.org/t/daily-summary-1pm-utc/291852
      lastmod : 2024-03-19T13:02:07Z

Encore une fois, ce n’est pas strictement vrai… last_mod est censé être la dernière date de modification du sitemap, pas la date maximale des sujets.

Si un sujet a été retiré de la section du sitemap aujourd’hui et que la dernière modification dans le bloc remonte à une semaine… le bloc a changé aujourd’hui. Un sujet en a été retiré aujourd’hui.

C’est tout à fait vrai.

Donc, la même logique aboutit à :
Si un sujet dans la section sitemap a changé aujourd’hui et que la dernière modification dans le bloc remonte à aujourd’hui… le bloc a changé aujourd’hui [note : pas il y a 3 jours]. Un sujet a changé aujourd’hui.

Pour votre exemple et le mien ci-dessus, l’implémentation actuelle dit :
Les blocs sitemap sitemap_[2-5].xml ont changé il y a 3 jours. C’est faux. Il devrait être indiqué ‘changé aujourd’hui’.

Voici la situation dans son ensemble :

sitemap_recent.xml :

  • Inclut uniquement tous les sujets modifiés au cours des 3 derniers jours
  • Est renouvelé toutes les 1 heure (temps de cache interne de Rails de 1 heure)
  • A la bonne date lastmod dans sitemap.xml

sitemap_[1-5].xml :

  • Inclut réellement tous les sujets, ainsi que tous les sujets modifiés au cours des 3 derniers jours
  • Est renouvelé toutes les 24 heures (temps de cache interne de Rails de 24 heures)
  • sitemap_[2-5].xml ont une date lastmod incorrecte de 3.days.ago dans sitemap.xml

La date lastmod incorrecte pour sitemap_[2-5].xml n’a pas d’importance, car Google obtiendra toutes les modifications récentes de sujets via sitemap_recent.xml en temps voulu.