Sitemap: `lastmod` für Sitemaps falsch

Im Haupt-Sitemap ist das lastmod-Datum für zugrunde liegende Sitemaps falsch:

Beispiel: siehe https://meta.discourse.org/sitemap.xml
Die Daten für sitemap_2.xml bis sitemap_5.xml sind alle gleich ‘2024-03-14T14:02:32Z’ – was genau ‘3 Tage her’ ist.

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

Technisches Problem:

Irgendwie wird 3.days.ago für sitemap_[2-5].xml verwendet, da sitemap.last_posted_topic möglicherweise keinen gültigen Wert zurückgibt.

Ein weiterer Punkt: In last_posted_topic auch bumped_at verwenden

Vergleichen Sie mit lastmod in den Topic-Sitemaps sitemap_[1-5].xml selbst:

Ungetesteter Pseudocode:

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

Ich befürchte, dass eine Optimierung hier die Sache enorm verkompliziert, aber nur sehr wenig nützt.

Denken Sie darüber nach…

Angenommen, es gibt 6 Chunks auf Meta. Wenn ein Thema aus dem letzten Chunk berührt wird… wird der gesamte Chunk ungültig, Sie müssen das Thema dort entfernen und in den vorderen Chunk verschieben.

Eine Optimierung hier ist für eine Website, die irgendeine Art von Aktivität aufweist, ein wenig sinnlos, und die Daten innerhalb des Chunks zu den eigentlichen Themen sind in Ordnung.

1 „Gefällt mir“

Es geht nicht darum, Themen in verschiedene Sitemap-Chunks zu verschieben. Die Themen können im selben Sitemap-Chunk bleiben, in dem sie sich bereits befinden.
(Die Zuordnung von Thema zu Sitemap-Chunk ist ohnehin willkürlich, da die select-Anweisung der Datenbank mit limit keine order definiert hat.)

Der Bug-Report bezieht sich darauf, dass das lastmod-Datum jedes Sitemap-Chunks das lastmod-Datum des neuesten Themas darstellen sollte, das der Sitemap-Chunk enthält.

Der Weg für Google sollte sein:

  1. sitemap.xml laden
    lastmod der Sitemap-Chunks prüfen und Sitemap-Chunks, die ein Update benötigen, in die Warteschlange stellen
    (Datum von lastmod ist neuer als beim letzten Download)

  2. Warteschlangen-Sitemap-Chunks sitemap_[1-5].xml laden
    lastmod der Themen-URLs prüfen und Themen-URLs, die ein Update benötigen, in die Warteschlange stellen
    (Datum von lastmod ist neuer als beim letzten Download)

  3. Warteschlangen-Themen-URLs laden.

Wenn in sitemap.xml das lastmod der Sitemap-Chunks falsch ist:
→ Google stellt keine geänderten Sitemap-Chunks in die Warteschlange (Schritt 1)
→ Google aktualisiert keine geänderten Sitemap-Chunks rechtzeitig (Schritt 2)
→ Google aktualisiert keine geänderten Themen rechtzeitig (Schritt 3)

Aktuell sieht https://meta.discourse.org/sitemap.xml so aus:

  • https://meta.discourse.org/sitemap_1.xml
    lastmod: 2024-03-19T12:50:09Z
    Alle Themen darin haben ein älteres oder gleiches Datum? :github_check:

    • Neuestes Thema: 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
    Alle Themen darin haben ein älteres oder gleiches Datum? :x:

    • Neuestes Thema: 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
    Alle Themen darin haben ein älteres oder gleiches Datum? :x:

    • Neuestes Thema: 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
    Alle Themen darin haben ein älteres oder gleiches Datum? :x:

    • Neuestes Thema: 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
    Alle Themen darin haben ein älteres oder gleiches Datum? :x:

    • Neuestes Thema: 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
    Alle Themen darin haben ein älteres oder gleiches Datum? :github_check:

    • Neuestes Thema: https://meta.discourse.org/t/daily-summary-1pm-utc/291852
      lastmod: 2024-03-19T13:02:07Z

Das ist wieder nicht ganz richtig… last_mod soll das letzte Datum sein, an dem die Sitemap geändert wurde, nicht das maximale Datum der Themen.

Wenn ein Thema heute aus dem Sitemap-Bereich herausfiel und die letzte Änderung im Chunk vor einer Woche war… hat sich der Chunk heute geändert. Ein Thema ist heute herausgefallen.

Das ist absolut richtig.

Die exakt gleiche Logik führt also zu:
Wenn sich ein Thema im Sitemap-Bereich heute geändert hat und die letzte Änderung im Chunk heute war… hat sich der Chunk heute geändert [Hinweis: nicht vor 3 Tagen]. Ein Thema darin hat sich heute geändert.

Für Ihr und mein obiges Beispiel besagt die aktuelle Implementierung:
sitemap-chunks sitemap_[2-5].xml hat sich vor 3 Tagen geändert. Das ist falsch. Es sollte heißen „heute geändert“.

Hier ist das Gesamtbild hinter all dem:

sitemap_recent.xml:

  • Enthält nur alle geänderten Themen der letzten 3 Tage
  • Wird alle 1 Stunde erneuert (interne Rails-Cache-Zeit von 1 Stunde)
  • Hat das korrekte lastmod-Datum in sitemap.xml

sitemap_[1-5].xml:

  • Enthält wirklich alle Themen und auch alle geänderten Themen der letzten 3 Tage
  • Wird alle 24 Stunden erneuert (interne Rails-Cache-Zeit von 24 Stunden)
  • sitemap_[2-5].xml hat das falsche lastmod-Datum von 3.days.ago in sitemap.xml

Das falsche lastmod-Datum für sitemap_[2-5].xml spielt keine Rolle, da Google alle aktuellen Themenänderungen rechtzeitig über sitemap_recent.xml erhält.