rrit
(Ayke)
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)
2
여기서 최적화를 하면 이득은 거의 없는데 상황이 엄청나게 복잡해질까 걱정됩니다.
한번 잘 생각해 보세요 …
예를 들어 메타에 6개의 청크가 있다고 가정해 보겠습니다. 마지막 청크의 주제가 수정되면 … 해당 청크 전체가 무효화되어, 그 주제를 해당 위치에서 제거하고 앞쪽 청크에 다시 배치해야 합니다.
어떤 형태의 활동이든 일어나는 사이트에서 여기서 최적화를 하는 것은 다소 무의미하며, 실제 주제 안의 날짜는 문제없습니다.
1개의 좋아요
rrit
(Ayke)
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-16T12:59:17Z
내부의 모든 토픽이 이 날짜보다 오래되었거나 같은 날짜인가? 
- 최신 토픽:
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
내부의 모든 토픽이 이 날짜보다 오래되었거나 같은 날짜인가? 
- 최신 토픽:
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
내부의 모든 토픽이 이 날짜보다 오래되었거나 같은 날짜인가? 
- 최신 토픽:
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
내부의 모든 토픽이 이 날짜보다 오래되었거나 같은 날짜인가? 
- 최신 토픽:
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
내부의 모든 토픽이 이 날짜보다 오래되었거나 같은 날짜인가? 
- 최신 토픽:
https://meta.discourse.org/t/daily-summary-1pm-utc/291852
lastmod: 2024-03-19T13:02:07Z
sam
(Sam Saffron)
4
다시 말하지만, 이것은 엄밀히 말해 사실이 아닙니다. last_mod은 사이트맵이 마지막으로 수정된 날짜를 의미하는 것이지, 토픽의 최대 날짜를 의미하는 것이 아닙니다.
오늘 사이트맵 섹션에서 토픽이 제외되었고, 해당 청크의 마지막 수정일이 일주일 전이라면… 그 청크는 오늘 변경된 것입니다. 토픽이 오늘 그 청크에서 제외되었기 때문입니다.
rrit
(Ayke)
5
이것은 완전히 사실입니다.
따라서 동일한 로직은 다음과 같은 결과를 낳습니다:
사이트맵 섹션의 주제가 오늘 변경되었고, 해당 청크의 마지막 수정일이 오늘이라면… 청크는 오늘 변경된 것입니다 [참고: 3일 전이 아님]. 그 안의 주제가 오늘 변경되었습니다.
위에서 언급한 제 예시와 당신의 예시에 대해, 현재 구현 방식은 다음과 같이 말합니다:
sitemap_[2-5].xml 사이트맵 청크가 3일 전에 변경되었습니다. 이것은 잘못되었습니다. '오늘 변경됨’이라고 표시해야 합니다.
rrit
(Ayke)
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을 통해 최근 주제 변경 사항을 제때 수신하기 때문입니다.