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 npm package.json中文文档
Sep 04 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
NodeJS配置HTTPS服务实例分享
Feb 19 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
详解NODEJS的http实现
Jan 04 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
Nodejs让异步变成同步的方法
Mar 02 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
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
django中forms组件的使用与注意
2019/07/08 Python
python3中编码获取网页的实例方法
2020/11/16 Python
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
介绍一下Java中标识符的命名规则
2014/02/03 面试题
项目副经理岗位职责
2013/12/30 职场文书
员工拾金不昧表扬信
2014/01/09 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
工商干部先进事迹
2014/05/14 职场文书
销售类求职信
2014/06/13 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
环境卫生整治简报
2015/07/20 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书