mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-03 19:11:22 +01:00
feat: closes #13968, add sitemap cache duration
This commit is contained in:
@@ -142,6 +142,7 @@
|
|||||||
"feeds:disableSitemap": 0,
|
"feeds:disableSitemap": 0,
|
||||||
"feeds:disableRSS": 0,
|
"feeds:disableRSS": 0,
|
||||||
"sitemapTopics": 500,
|
"sitemapTopics": 500,
|
||||||
|
"sitemapCacheDurationHours": 24,
|
||||||
"maintenanceMode": 0,
|
"maintenanceMode": 0,
|
||||||
"maintenanceModeStatus": 503,
|
"maintenanceModeStatus": 503,
|
||||||
"upvoteVisibility": "all",
|
"upvoteVisibility": "all",
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
"disable-rss-feeds": "Disable RSS Feeds",
|
"disable-rss-feeds": "Disable RSS Feeds",
|
||||||
"disable-sitemap-xml": "Disable Sitemap.xml",
|
"disable-sitemap-xml": "Disable Sitemap.xml",
|
||||||
"sitemap-topics": "Number of Topics to display in the Sitemap",
|
"sitemap-topics": "Number of Topics to display in the Sitemap",
|
||||||
|
"sitemap-cache-duration-hours": "Sitemap Cache Duration (hours)",
|
||||||
"clear-sitemap-cache": "Clear Sitemap Cache",
|
"clear-sitemap-cache": "Clear Sitemap Cache",
|
||||||
"view-sitemap": "View Sitemap"
|
"view-sitemap": "View Sitemap"
|
||||||
}
|
}
|
||||||
@@ -60,6 +60,10 @@ async function getSitemapPages() {
|
|||||||
return data.urls;
|
return data.urls;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getCacheExpireTimestamp() {
|
||||||
|
return Date.now() + (1000 * 60 * 60 * (meta.config.sitemapCacheDurationHours || 24));
|
||||||
|
}
|
||||||
|
|
||||||
sitemap.getPages = async function () {
|
sitemap.getPages = async function () {
|
||||||
if (sitemap.maps.pages && Date.now() < sitemap.maps.pagesCacheExpireTimestamp) {
|
if (sitemap.maps.pages && Date.now() < sitemap.maps.pagesCacheExpireTimestamp) {
|
||||||
return sitemap.maps.pages;
|
return sitemap.maps.pages;
|
||||||
@@ -68,12 +72,12 @@ sitemap.getPages = async function () {
|
|||||||
const urls = await getSitemapPages();
|
const urls = await getSitemapPages();
|
||||||
if (!urls.length) {
|
if (!urls.length) {
|
||||||
sitemap.maps.pages = '';
|
sitemap.maps.pages = '';
|
||||||
sitemap.maps.pagesCacheExpireTimestamp = Date.now() + (1000 * 60 * 60 * 24);
|
sitemap.maps.pagesCacheExpireTimestamp = getCacheExpireTimestamp();
|
||||||
return sitemap.maps.pages;
|
return sitemap.maps.pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
sitemap.maps.pages = await urlsToSitemap(urls);
|
sitemap.maps.pages = await urlsToSitemap(urls);
|
||||||
sitemap.maps.pagesCacheExpireTimestamp = Date.now() + (1000 * 60 * 60 * 24);
|
sitemap.maps.pagesCacheExpireTimestamp = getCacheExpireTimestamp();
|
||||||
return sitemap.maps.pages;
|
return sitemap.maps.pages;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -105,12 +109,12 @@ sitemap.getCategories = async function () {
|
|||||||
|
|
||||||
if (!categoryUrls.length) {
|
if (!categoryUrls.length) {
|
||||||
sitemap.maps.categories = '';
|
sitemap.maps.categories = '';
|
||||||
sitemap.maps.categoriesCacheExpireTimestamp = Date.now() + (1000 * 60 * 60 * 24);
|
sitemap.maps.categoriesCacheExpireTimestamp = getCacheExpireTimestamp();
|
||||||
return sitemap.maps.categories;
|
return sitemap.maps.categories;
|
||||||
}
|
}
|
||||||
|
|
||||||
sitemap.maps.categories = await urlsToSitemap(categoryUrls);
|
sitemap.maps.categories = await urlsToSitemap(categoryUrls);
|
||||||
sitemap.maps.categoriesCacheExpireTimestamp = Date.now() + (1000 * 60 * 60 * 24);
|
sitemap.maps.categoriesCacheExpireTimestamp = getCacheExpireTimestamp();
|
||||||
return sitemap.maps.categories;
|
return sitemap.maps.categories;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -140,7 +144,7 @@ sitemap.getTopicPage = async function (page) {
|
|||||||
if (!data.topics.length) {
|
if (!data.topics.length) {
|
||||||
sitemap.maps.topics[page - 1] = {
|
sitemap.maps.topics[page - 1] = {
|
||||||
sm: '',
|
sm: '',
|
||||||
cacheExpireTimestamp: Date.now() + (1000 * 60 * 60 * 24),
|
cacheExpireTimestamp: getCacheExpireTimestamp(),
|
||||||
};
|
};
|
||||||
return sitemap.maps.topics[page - 1].sm;
|
return sitemap.maps.topics[page - 1].sm;
|
||||||
}
|
}
|
||||||
@@ -158,7 +162,7 @@ sitemap.getTopicPage = async function (page) {
|
|||||||
|
|
||||||
sitemap.maps.topics[page - 1] = {
|
sitemap.maps.topics[page - 1] = {
|
||||||
sm: await urlsToSitemap(topicUrls),
|
sm: await urlsToSitemap(topicUrls),
|
||||||
cacheExpireTimestamp: Date.now() + (1000 * 60 * 60 * 24),
|
cacheExpireTimestamp: getCacheExpireTimestamp(),
|
||||||
};
|
};
|
||||||
|
|
||||||
return sitemap.maps.topics[page - 1].sm;
|
return sitemap.maps.topics[page - 1].sm;
|
||||||
|
|||||||
@@ -30,6 +30,11 @@
|
|||||||
<input id="sitemapTopics" class="form-control" type="text" data-field="sitemapTopics" />
|
<input id="sitemapTopics" class="form-control" type="text" data-field="sitemapTopics" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" for="sitemapCacheDurationHours">[[admin/settings/web-crawler:sitemap-cache-duration-hours]]</label>
|
||||||
|
<input id="sitemapCacheDurationHours" class="form-control" type="text" data-field="sitemapCacheDurationHours" />
|
||||||
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<button id="clear-sitemap-cache" class="btn btn-sm btn-warning">[[admin/settings/web-crawler:clear-sitemap-cache]]</button>
|
<button id="clear-sitemap-cache" class="btn btn-sm btn-warning">[[admin/settings/web-crawler:clear-sitemap-cache]]</button>
|
||||||
<a href="{config.relative_path}/sitemap.xml" target="_blank" class="btn btn-sm btn-light">[[admin/settings/web-crawler:view-sitemap]]</a>
|
<a href="{config.relative_path}/sitemap.xml" target="_blank" class="btn btn-sm btn-light">[[admin/settings/web-crawler:view-sitemap]]</a>
|
||||||
|
|||||||
Reference in New Issue
Block a user