Mapa del sitio: `lastmod` para mapas del sitio incorrecto

En el sitemap principal, la fecha lastmod de los sitemaps subyacentes es incorrecta:

Por ejemplo, mira https://meta.discourse.org/sitemap.xml
Las fechas de sitemap_2.xml a sitemap_5.xml son todas las mismas ‘2024-03-14T14:02:32Z’, que es exactamente ‘hace 3 días’.

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

Problema técnico:

De alguna manera se usa 3.days.ago para sitemap_[2-5].xml ya que sitemap.last_posted_topic podría no devolver un valor válido.

Otro punto: En last_posted_topic también usa bumped_at

Compara con lastmod en los sitemaps de temas sitemap_[1-5].xml en sí:

Pseudo-código sin probar:

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

Me preocupa que una optimización aquí complique enormemente las cosas para muy poco beneficio.

Piénsalo…

Digamos que hay 6 fragmentos en meta. Si se toca un tema del último fragmento… todo el fragmento se vuelve inválido, tienes que quitar el tema de allí y ponerlo en el fragmento frontal.

Optimizar aquí es un poco inútil para un sitio que ve algún tipo de actividad y las fechas dentro del fragmento en los temas reales están bien.

1 me gusta

No se trata de mover temas a diferentes fragmentos de sitemap. Los temas pueden permanecer en el mismo fragmento de sitemap en el que ya se encuentran.
(El mapeo tema-a-fragmento-de-sitemap es arbitrario de todos modos, ya que la declaración select de la base de datos con limit no tiene order definido.)

El informe de error trata sobre que la fecha lastmod de cada fragmento de sitemap debe representar la fecha lastmod del tema más reciente que contiene el fragmento de sitemap.

El camino para Google debería ser:

  1. Cargar sitemap.xml
    → Comprobar lastmod de los fragmentos de sitemap y poner en cola los fragmentos de sitemap que necesitan una actualización
    (la fecha lastmod es más reciente que la última vez que se descargó)

  2. Cargar los fragmentos de sitemap en cola sitemap_[1-5].xml
    → Comprobar lastmod de las URLs de los temas y poner en cola las URLs de los temas que necesitan una actualización
    (la fecha lastmod es más reciente que la última vez que se descargó)

  3. Cargar las URLs de los temas en cola.

Si en sitemap.xml el lastmod de los fragmentos de sitemap es incorrecto:
→ Google no pone en cola los fragmentos de sitemap modificados (paso 1)
→ Google no actualiza los fragmentos de sitemap modificados de manera oportuna (paso 2)
→ Google no actualiza los temas modificados de manera oportuna (paso 3)

Actualmente https://meta.discourse.org/sitemap.xml se ve así:

  • https://meta.discourse.org/sitemap_1.xml
    lastmod: 2024-03-19T12:50:09Z
    ¿Todos los temas dentro tienen una fecha más antigua o igual? :github_check:

    • Tema más reciente: 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
    ¿Todos los temas dentro tienen una fecha más antigua o igual? :x:

    • Tema más reciente: 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
    ¿Todos los temas dentro tienen una fecha más antigua o igual? :x:

    • Tema más reciente: 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
    ¿Todos los temas dentro tienen una fecha más antigua o igual? :x:

    • Tema más reciente: 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
    ¿Todos los temas dentro tienen una fecha más antigua o igual? :x:

    • Tema más reciente: 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
    ¿Todos los temas dentro tienen una fecha más antigua o igual? :github_check:

    • Tema más reciente: https://meta.discourse.org/t/daily-summary-1pm-utc/291852
      lastmod: 2024-03-19T13:02:07Z

Nuevamente, esto no es estrictamente cierto… last_mod está destinado a ser la última fecha en que se modificó el sitemap, no la fecha máxima de los temas.

Si un tema salió de la sección del sitemap hoy y la última modificación en el fragmento fue hace una semana… el fragmento cambió hoy. Un tema salió de él hoy.

Esto es totalmente cierto.

Entonces, la misma lógica resulta en:
Si un tema en la sección del mapa del sitio cambió hoy y la última modificación en el fragmento es hoy… el fragmento cambió hoy [nota: no hace 3 días]. Un tema en él cambió hoy.

Para tu y mi ejemplo anterior, la implementación actual dice:
fragmentos del mapa del sitio sitemap_[2-5].xml cambiaron hace 3 días. Esto es incorrecto. Debería decir ‘cambió hoy’.

Aquí está el panorama general detrás de todo esto:

sitemap_recent.xml:

  • Solo incluye todos los temas cambiados de los últimos 3 días
  • Se renueva cada 1 hora (tiempo de caché interno de Rails de 1 hora)
  • Tiene la fecha lastmod correcta en sitemap.xml

sitemap_[1-5].xml:

  • Realmente incluye todos y cada uno de los temas, y también incluye todos los temas cambiados de los últimos 3 días
  • Se renueva cada 24 horas (tiempo de caché interno de Rails de 24 horas)
  • sitemap_[2-5].xml tienen la fecha lastmod incorrecta de 3.days.ago en sitemap.xml

La fecha lastmod incorrecta para sitemap_[2-5].xml no importa, ya que Google obtendrá todos los cambios recientes de temas a través de sitemap_recent.xml de manera oportuna.