rrit
(Ayke)
2024 年 3 月 17 日午後 2:21
1
メインサイトマップのサブサイトマップの 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>
技術的な問題:
sitemap.last_posted_topic が有効な値を返さない可能性があるため、sitemap_[2-5].xml に 3.days.ago が使用されているようです。
もう一点: last_posted_topic でも bumped_at を使用してください。
トピックサイトマップ sitemap_[1-5].xml の lastmod と比較してください。
テストされていない疑似コード:
def last_posted_topic
[sitemap_topics.maximum(:bumped_at), sitemap_topics.maximum(:updated_at)].max
end
sam
(Sam Saffron)
2024 年 3 月 18 日午前 12:25
2
ほとんど利益がないのに、この最適化が非常に複雑になると心配しています。
よく考えてみてください…
メタに6つのチャンクがあるとします。最後のチャンクのトピックに触れると…チャンク全体が無効になり、トピックをそこから削除して最初のチャンクに入れる必要があります。
ある程度の活動があるサイトにとって、ここで最適化することはほとんど無意味であり、実際のトピックのチャンク内の日付は問題ありません。
「いいね!」 1
rrit
(Ayke)
2024 年 3 月 19 日午後 1:33
3
トピックを異なるサイトマップチャンクに移動することではありません。トピックは、すでに存在しているのと同じサイトマップチャンク内に留まることができます。
(トピックとサイトマップチャンクのマッピングは、limit を持つ db の select ステートメントに order が定義されていないため、いずれにしても任意です。)
バグレポートは、各サイトマップチャンクの lastmod 日付が、サイトマップチャンクに含まれる最新トピックの lastmod 日付を表すべきであるということです。
Google の手順は次のようになります。
sitemap.xml を読み込みます。
→ サイトマップチャンクの lastmod を確認し、更新が必要なサイトマップチャンクをキューに入れます。
(lastmod 日付が前回ダウンロード時より新しい場合)
キューに入れられたサイトマップチャンク sitemap_[1-5].xml を読み込みます。
→ トピック URL の lastmod を確認し、更新が必要なトピック URL をキューに入れます。
(lastmod 日付が前回ダウンロード時より新しい場合)
キューに入れられたトピック URL を読み込みます。
sitemap.xml のサイトマップチャンクの lastmod が間違っている場合:
→ Google は変更されたサイトマップチャンクをキューに入れません(ステップ 1)。
→ Google は変更されたサイトマップチャンクを適時に更新しません(ステップ 2)。
→ Google は変更されたトピックを適時に更新しません(ステップ 3)。
現在、https://meta.discourse.org/sitemap.xml は次のようになっています。
https://meta.discourse.org/sitemap_1.xml
lastmod: 2024-03-19T12 :50:09Z
内部のすべてのトピックは古いか同じ日付ですか?
最新トピック: 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-16 T12:59:17Z
内部のすべてのトピックは古いか同じ日付ですか?
最新トピック: https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-125/299538
lastmod: 2024-03-19 T09:17:46Z
https://meta.discourse.org/sitemap_3.xml
lastmod: 2024-03-16 T12:59:17Z
内部のすべてのトピックは古いか同じ日付ですか?
最新トピック: https://meta.discourse.org/t/configure-direct-delivery-incoming-email-for-self-hosted-sites/49487
lastmod: 2024-03-18 T18:16:26Z
https://meta.discourse.org/sitemap_4.xml
lastmod: 2024-03-16 T12:59:17Z
内部のすべてのトピックは古いか同じ日付ですか?
最新トピック: https://meta.discourse.org/t/video-thumbnails-issue/263595
lastmod: 2024-03-19 T00:00:20Z
https://meta.discourse.org/sitemap_5.xml
lastmod: 2024-03-16 T12:59:17Z
内部のすべてのトピックは古いか同じ日付ですか?
最新トピック: https://meta.discourse.org/t/daily-summary-9pm-utc/291850
lastmod: 2024-03-18 T21:14:49Z
https://meta.discourse.org/sitemap_recent.xml
2024-03-19T13:03 :41Z
内部のすべてのトピックは古いか同じ日付ですか?
最新トピック: https://meta.discourse.org/t/daily-summary-1pm-utc/291852
lastmod: 2024-03-19T13:02 :07Z
sam
(Sam Saffron)
2024 年 3 月 20 日午前 1:18
4
これも厳密には正しくありません… last_mod は、トピックの最大日付ではなく、サイトマップが最後に変更された日付を意味します。
トピックが今日サイトマップセクションから除外され、チャンクの最終変更日が1週間前である場合…チャンクは今日変更されました。トピックが今日除外されました。
rrit
(Ayke)
2024 年 3 月 20 日午後 12:59
5
これは完全に正しいです。
したがって、全く同じロジックが以下のような結果になります。
もしトピックがサイトマップセクション内で今日変更され、チャンクの最終更新が今日だった場合…チャンクは今日変更されました [注意: 3日前ではない] 。トピックが今日変更されました。
上記あなたの例と私の例では、現在の実装は次のように述べています。
sitemap-chunks sitemap_[2-5].xml は3日前に変更されました。これは間違いです。「今日変更されました」と言うべきです。
rrit
(Ayke)
2024 年 3 月 20 日午後 2:12
6
これらすべてを支える大きな構図は以下の通りです。
sitemap_recent.xml:
過去3日間の変更されたトピックのみを含みます
1時間ごとに更新されます(内部Railsキャッシュ時間1時間)
sitemap.xml に正しい lastmod 日付が含まれます
sitemap_[1-5].xml:
すべてのトピックを実際に含み、過去3日間の変更されたトピックもすべて含みます
24時間ごとに更新されます(内部Railsキャッシュ時間24時間)
sitemap_[2-5].xml は sitemap.xml に 3.days.ago の間違った lastmod 日付が含まれています
sitemap_[2-5].xml の間違った lastmod 日付は問題ありません。Google は sitemap_recent.xml を通じて、すべての最近のトピックの変更を適時に取得するためです。