mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-20 05:27:37 +01:00
feat: closes #13968, add sitemap cache duration
This commit is contained in:
@@ -142,6 +142,7 @@
|
||||
"feeds:disableSitemap": 0,
|
||||
"feeds:disableRSS": 0,
|
||||
"sitemapTopics": 500,
|
||||
"sitemapCacheDurationHours": 24,
|
||||
"maintenanceMode": 0,
|
||||
"maintenanceModeStatus": 503,
|
||||
"upvoteVisibility": "all",
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -30,6 +30,11 @@
|
||||
<input id="sitemapTopics" class="form-control" type="text" data-field="sitemapTopics" />
|
||||
</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>
|
||||
<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>
|
||||
|
||||
Reference in New Issue
Block a user