From fe35ad4f47fa752b68b8a938e0c18a5ab6ad6102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 10 Feb 2026 10:37:02 -0500 Subject: [PATCH] feat: closes #13968, add sitemap cache duration --- install/data/defaults.json | 1 + .../en-GB/admin/settings/web-crawler.json | 1 + src/sitemap.js | 16 ++++++++++------ src/views/admin/settings/web-crawler.tpl | 5 +++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/install/data/defaults.json b/install/data/defaults.json index 5b1f91eeb7..449234192c 100644 --- a/install/data/defaults.json +++ b/install/data/defaults.json @@ -142,6 +142,7 @@ "feeds:disableSitemap": 0, "feeds:disableRSS": 0, "sitemapTopics": 500, + "sitemapCacheDurationHours": 24, "maintenanceMode": 0, "maintenanceModeStatus": 503, "upvoteVisibility": "all", diff --git a/public/language/en-GB/admin/settings/web-crawler.json b/public/language/en-GB/admin/settings/web-crawler.json index 2e0d31d12b..b398d764ba 100644 --- a/public/language/en-GB/admin/settings/web-crawler.json +++ b/public/language/en-GB/admin/settings/web-crawler.json @@ -5,6 +5,7 @@ "disable-rss-feeds": "Disable RSS Feeds", "disable-sitemap-xml": "Disable Sitemap.xml", "sitemap-topics": "Number of Topics to display in the Sitemap", + "sitemap-cache-duration-hours": "Sitemap Cache Duration (hours)", "clear-sitemap-cache": "Clear Sitemap Cache", "view-sitemap": "View Sitemap" } \ No newline at end of file diff --git a/src/sitemap.js b/src/sitemap.js index 6e17514352..2260c9b466 100644 --- a/src/sitemap.js +++ b/src/sitemap.js @@ -60,6 +60,10 @@ async function getSitemapPages() { return data.urls; } +function getCacheExpireTimestamp() { + return Date.now() + (1000 * 60 * 60 * (meta.config.sitemapCacheDurationHours || 24)); +} + sitemap.getPages = async function () { if (sitemap.maps.pages && Date.now() < sitemap.maps.pagesCacheExpireTimestamp) { return sitemap.maps.pages; @@ -68,12 +72,12 @@ sitemap.getPages = async function () { const urls = await getSitemapPages(); if (!urls.length) { sitemap.maps.pages = ''; - sitemap.maps.pagesCacheExpireTimestamp = Date.now() + (1000 * 60 * 60 * 24); + sitemap.maps.pagesCacheExpireTimestamp = getCacheExpireTimestamp(); return sitemap.maps.pages; } sitemap.maps.pages = await urlsToSitemap(urls); - sitemap.maps.pagesCacheExpireTimestamp = Date.now() + (1000 * 60 * 60 * 24); + sitemap.maps.pagesCacheExpireTimestamp = getCacheExpireTimestamp(); return sitemap.maps.pages; }; @@ -105,12 +109,12 @@ sitemap.getCategories = async function () { if (!categoryUrls.length) { sitemap.maps.categories = ''; - sitemap.maps.categoriesCacheExpireTimestamp = Date.now() + (1000 * 60 * 60 * 24); + sitemap.maps.categoriesCacheExpireTimestamp = getCacheExpireTimestamp(); return sitemap.maps.categories; } sitemap.maps.categories = await urlsToSitemap(categoryUrls); - sitemap.maps.categoriesCacheExpireTimestamp = Date.now() + (1000 * 60 * 60 * 24); + sitemap.maps.categoriesCacheExpireTimestamp = getCacheExpireTimestamp(); return sitemap.maps.categories; }; @@ -140,7 +144,7 @@ sitemap.getTopicPage = async function (page) { if (!data.topics.length) { sitemap.maps.topics[page - 1] = { sm: '', - cacheExpireTimestamp: Date.now() + (1000 * 60 * 60 * 24), + cacheExpireTimestamp: getCacheExpireTimestamp(), }; return sitemap.maps.topics[page - 1].sm; } @@ -158,7 +162,7 @@ sitemap.getTopicPage = async function (page) { sitemap.maps.topics[page - 1] = { sm: await urlsToSitemap(topicUrls), - cacheExpireTimestamp: Date.now() + (1000 * 60 * 60 * 24), + cacheExpireTimestamp: getCacheExpireTimestamp(), }; return sitemap.maps.topics[page - 1].sm; diff --git a/src/views/admin/settings/web-crawler.tpl b/src/views/admin/settings/web-crawler.tpl index ebb51d728d..e2be849fec 100644 --- a/src/views/admin/settings/web-crawler.tpl +++ b/src/views/admin/settings/web-crawler.tpl @@ -30,6 +30,11 @@ +
+ + +
+

[[admin/settings/web-crawler:view-sitemap]]