NodeJs生成sitemap站點地圖

若是博客是使用Hexo管理的,sitemap能夠使用插件來生成。但對於一個內容管理網站,後端多是express、koa之類的框架,這時sitemap就須要本身來生成了git

什麼是sitemap

  Sitemap可方便網站管理員通知搜索引擎他們網站上有哪些可供抓取的網頁。最簡單的Sitemap形式,就是XML文件,在其中列出網站中的網址以及關於每一個網址的其餘元數據(上次更新的時間、更改的頻率以及相對於網站上其餘網址的重要程度爲什麼等),以便搜索引擎能夠更加智能地抓取網站。github

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:權重shell

生成sitemap,基於express項目

開源包:sitemap,地址: https://github.com/ekalinin/s...express

> npm install --save sitemap

代碼中使用npm

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);
        });
    });
});

sitemap優化

上面那種方法在文章數少時還能使用,若是有幾千甚至幾萬篇文章,一次拉取的方式就不適合了,就須要把返回結果寫入到文件中,一天更新一次。只須要只須要把
sitemap.toXML()
改爲
fs.writeFileSync("app/assets/sitemap.xml", sitemap.toString());便可。每次請求sitemap時讀文件便可segmentfault



歡迎訂閱「K叔區塊鏈」 - 專一於區塊鏈技術學習

博客地址: http://www.jouypub.com
簡書主頁: https://www.jianshu.com/u/756c9c8ae984
segmentfault主頁: https://segmentfault.com/blog/jouypub
騰訊雲主頁: https://cloud.tencent.com/developer/column/72548
相關文章
相關標籤/搜索