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 相关文章推荐
nodejs实现黑名单中间件设计
Jun 17 NodeJs
Nodejs如何搭建Web服务器
Mar 28 NodeJs
nodejs微信公众号支付开发
Sep 19 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
Oct 17 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
基于mysql的论坛(3)
2006/10/09 PHP
PHP定时自动生成静态HTML的实现代码
2010/06/20 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
javascript 面向对象编程 function也是类
2009/09/17 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
javascript event 事件解析
2011/01/31 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
Python csv模块使用方法代码实例
2019/08/29 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
店长岗位职责
2013/11/21 职场文书
教学器材管理制度
2014/01/26 职场文书
六年级数学教学反思
2014/02/03 职场文书
黄河象教学反思
2014/02/10 职场文书
报告会主持词
2014/04/02 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
金陵十三钗观后感
2015/06/04 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python