zoukankan      html  css  js  c++  java
  • NodeJs生成sitemap站点地图

    如果博客是使用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时读文件即可

  • 相关阅读:
    Knowing how all your components work together: distributed tracing with Zipkin
    Java Annotation Processors
    深度剖析JDK动态代理机制
    Java 代理模式(二) Java中的动态代理
    Java 代理模式(一) 静态代理
    CGLib动态代理原理及实现
    Understanding sun.misc.Unsafe
    Finding Memory Leaks with SAP Memory Analyzer
    ubuntu18.04 安装mysql server
    Sqoop+mysql+Hive+ Ozzie数据仓库案例
  • 原文地址:https://www.cnblogs.com/qianxiaox/p/14041715.html
Copyright © 2011-2022 走看看