NodeJs生成sitemap站點地圖
阿新 • • 發佈:2020-11-26
如果部落格是使用Hexo管理的,sitemap可以使用外掛來生成。但對於一個內容管理網站,後端可能是express、koa之類的框架,這時sitemap就需要自己來生成了
什麼是sitemap
Sitemap可方便網站管理員通知搜尋引擎他們網站上有哪些可供抓取的網頁。最簡單的Sitemap形式,就是XML檔案,在其中列出網站中的網址以及關於每個網址的其他元資料(上次更新的時間、更改的頻率以及相對於網站上其他網址的重要程度為何等),以便搜尋引擎可以更加智慧地抓取網站。
sitemap結構
<url>
<loc>http://www.jouypub.com/</loc>
<lastmod>2019-05-01</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
loc:文章連結地址
lastmod:最後更新時間
changefreq:更新頻率,daily/monthly
priority:權重
生成sitemap,基於express專案
開源包:sitemap,地址:https://github.com/ekalinin/
npm install --save sitemap
程式碼中使用
const express = require('express')
const sm = require('sitemap');
router.get('/sitemap.xml', function (req, res) {
let pageRequest = Object.create({});
pageRequest.pageSize = -1;
pageRequest.pageNum = 1;
api.post('/article/list', pageRequest, function (result) {
let urls = [];
for (let article in result) {
urls.push({
url: article.url,
changefreq: 'daily',
lastmodrealtime: true,
priority: 1,
lastmod: article.updateTime
});
}
let sitemap = sm.createSitemap({
hostname: 'http://invest.jouypub.com',
cacheTime: 600000, // 600sec, cache purge period
urls: urls
});
sitemap.toXML(function (err, xml) {
if (err) {
console.log(err);
return res.status(500).end();
}
res.header('Content-Type', 'application/xml');
res.send(xml);
});
});
});
廣州VI設計公司https://www.houdianzi.com
sitemap優化
上面那種方法在文章數少時還能使用,如果有幾千甚至幾萬篇文章,一次拉取的方式就不適合了,就需要把返回結果寫入到檔案中,一天更新一次。只需要只需要把
sitemap.toXML()
改成
fs.writeFileSync("app/assets/sitemap.xml", sitemap.toString());
即可。每次請求sitemap時讀檔案即可