NodeJs生成sitemap站点地图的方法示例


Posted in NodeJs onJune 11, 2019

如果博客是使用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/sitemap.js

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

sitemap优化

上面那种方法在文章数少时还能使用,如果有几千甚至几万篇文章,一次拉取的方式就不适合了,就需要把返回结果写入到文件中,一天更新一次。只需要只需要把

sitemap.toXML()

改成

fs.writeFileSync("app/assets/sitemap.xml", sitemap.toString());即可。每次请求sitemap时读文件即可

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
轻松创建nodejs服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
基于html5和nodejs相结合实现websocket即使通讯
Nov 19 NodeJs
nodejs操作mysql实现增删改查的实例
May 28 NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 NodeJs
Nodejs实现微信分账的示例代码
Jan 19 NodeJs
nodejs提示:cross-device link not permitted, rename错误的解决方法
Jun 10 #NodeJs
Nodejs异步流程框架async的方法
Jun 07 #NodeJs
nodejs log4js 使用详解
May 31 #NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 #NodeJs
nodejs中实现修改用户路由功能
May 24 #NodeJs
nodejs实现用户登录路由功能
May 22 #NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 #NodeJs
You might like
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
更改Python命令行交互提示符的方法
2015/01/14 Python
Hadoop中的Python框架的使用指南
2015/04/22 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
浅析python协程相关概念
2018/01/20 Python
python查看模块,对象的函数方法
2018/10/16 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
应聘自荐书
2013/10/08 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
贷款承诺书范文
2014/05/19 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
学校党员干部承诺书
2015/05/04 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP
入门学习Go的基本语法
2021/07/07 Golang