خريطة الموقع: `lastmod` في خرائط الموقع غير صحيح

في خريطة الموقع الرئيسية، يكون تاريخ lastmod لخرائط المواقع الفرعية غير صحيح:

على سبيل المثال، انظر https://meta.discourse.org/sitemap.xml
التواريخ لـ sitemap_2.xml إلى sitemap_5.xml كلها متطابقة ‘2024-03-14T14:02:32Z’ - وهو بالضبط ‘قبل 3 أيام’.

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

مشكلة تقنية:

بطريقة ما يتم استخدام 3.days.ago لـ sitemap_[2-5].xml حيث قد لا تُرجع sitemap.last_posted_topic قيمة صالحة.

نقطة أخرى: في last_posted_topic استخدم bumped_at أيضًا

قارن مع lastmod في خرائط المواقع للمواضيع sitemap_[1-5].xml نفسها:

رمز زائف غير مختبر:

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

أنا قلق من أن التحسين هنا يعقد الأمور بشكل كبير مقابل فائدة قليلة جدًا.

فكر في الأمر…

لنفترض أن هناك 6 أجزاء في البيانات الوصفية. إذا تم المساس بموضوع من الجزء الأخير… يصبح الجزء بأكمله غير صالح، وعليك إزالة الموضوع من هناك ووضعه في الجزء الأمامي.

التحسين هنا عديم الفائدة إلى حد ما لموقع يشهد أي نوع من النشاط والتواريخ داخل الجزء حول المواضيع الفعلية لا بأس بها.

إعجاب واحد (1)

لا يتعلق الأمر بنقل المواضيع إلى أجزاء مختلفة من خريطة الموقع. يمكن أن تبقى المواضيع في نفس جزء خريطة الموقع الموجودة فيه بالفعل.
(على أي حال، فإن تعيين الموضوع إلى جزء خريطة الموقع عشوائي لأن عبارة select في قاعدة البيانات مع limit لا تحتوي على order محدد.)

يتعلق تقرير الخطأ بأن تاريخ آخر تعديل لكل جزء من خريطة الموقع يجب أن يمثل تاريخ آخر تعديل لأحدث موضوع يحتوي عليه جزء خريطة الموقع.

الطريقة لجوجل يجب أن تكون:

  1. تحميل sitemap.xml
  • التحقق من lastmod لأجزاء خريطة الموقع وتجميع أجزاء خريطة الموقع التي تحتاج إلى تحديث
    (تاريخ آخر تعديل أحدث من آخر مرة تم تنزيله)
  1. تحميل أجزاء خريطة الموقع المجمعة sitemap_[1-5].xml
  • التحقق من lastmod لعناوين URL للمواضيع وتجميع عناوين URL للمواضيع التي تحتاج إلى تحديث
    (تاريخ آخر تعديل أحدث من آخر مرة تم تنزيله)
  1. تحميل عناوين URL للمواضيع المجمعة.

إذا كان تاريخ آخر تعديل لأجزاء خريطة الموقع في sitemap.xml خاطئًا:

  • لن تقوم جوجل بتجميع أجزاء خريطة الموقع المتغيرة (الخطوة 1)
  • لن تقوم جوجل بتحديث أجزاء خريطة الموقع المتغيرة في الوقت المناسب (الخطوة 2)
  • لن تقوم جوجل بتحديث المواضيع المتغيرة في الوقت المناسب (الخطوة 3)

حاليًا، يبدو https://meta.discourse.org/sitemap.xml كالتالي:

  • https://meta.discourse.org/sitemap_1.xml
    lastmod: 2024-03-19T12:50:09Z
    هل كل المواضيع بالداخل لها تاريخ أقدم أو مساوٍ؟ :github_check:

    • أحدث موضوع: 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
    هل كل المواضيع بالداخل لها تاريخ أقدم أو مساوٍ؟ :x:

    • أحدث موضوع: 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
    هل كل المواضيع بالداخل لها تاريخ أقدم أو مساوٍ؟ :x:

    • أحدث موضوع: 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
    هل كل المواضيع بالداخل لها تاريخ أقدم أو مساوٍ؟ :x:

    • أحدث موضوع: 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
    هل كل المواضيع بالداخل لها تاريخ أقدم أو مساوٍ؟ :x:

    • أحدث موضوع: 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
    هل كل المواضيع بالداخل لها تاريخ أقدم أو مساوٍ؟ :github_check:

    • أحدث موضوع: https://meta.discourse.org/t/daily-summary-1pm-utc/291852
      lastmod: 2024-03-19T13:02:07Z

هذا ليس صحيحًا تمامًا مرة أخرى… يُقصد بـ last_mod أن يكون آخر تاريخ تم فيه تعديل خريطة الموقع وليس أقصى تاريخ للمواضيع.

إذا خرج موضوع من قسم خريطة الموقع اليوم وكان آخر تعديل في الجزء قبل أسبوع… فقد تغير الجزء اليوم. خرج موضوع منه اليوم.

هذا صحيح تمامًا.

إذًا، نفس المنطق يؤدي إلى:
إذا تغير موضوع في قسم خريطة الموقع اليوم وتم تعديله آخر مرة في المقطع اليوم… فقد تغير المقطع اليوم [ملاحظة: ليس قبل 3 أيام]. تغير موضوع فيه اليوم.

بالنسبة لمثالك ومثالي أعلاه، التنفيذ الحالي يقول:
تغيرت sitemap_[2-5].xml قبل 3 أيام. هذا خطأ. يجب أن يقول “تغير اليوم”.

هذه هي الصورة الأكبر وراء كل هذا:

sitemap_recent.xml:

  • يتضمن فقط جميع المواضيع المتغيرة من الأيام الثلاثة الماضية
  • يتم تجديده كل ساعة (وقت التخزين المؤقت الداخلي لـ Rails لمدة ساعة)
  • يحتوي على تاريخ lastmod الصحيح في sitemap.xml

sitemap_[1-5].xml:

  • يتضمن بالفعل جميع المواضيع وكلها، ويتضمن أيضًا جميع المواضيع المتغيرة من الأيام الثلاثة الماضية
  • يتم تجديده كل 24 ساعة (وقت التخزين المؤقت الداخلي لـ Rails لمدة 24 ساعة)
  • يحتوي sitemap_[2-5].xml على تاريخ lastmod خاطئ وهو 3.days.ago في sitemap.xml

لا يهم تاريخ lastmod الخاطئ لـ sitemap_[2-5].xml، حيث ستحصل Google على جميع تغييرات المواضيع الأخيرة عبر sitemap_recent.xml في الوقت المناسب.