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打包工具整合到鼠标右键的方法
May 11 NodeJs
nodejs读取memcache示例分享
Jan 02 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
nodejs实现黑名单中间件设计
Jun 17 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
NodeJs中的VM模块详解
May 06 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 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中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
CI框架附属类用法分析
2018/12/26 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
Vue开发中整合axios的文件整理
2017/04/29 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
Python实现的中国剩余定理算法示例
2017/08/05 Python
python监控文件并且发送告警邮件
2018/06/21 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
成人大专生实习期的自我评价
2013/10/02 职场文书
网站开发实习生的自我评价
2013/12/11 职场文书
开办饭店创业计划书
2013/12/28 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
2016年教师学习教师法心得体会
2016/01/20 职场文书
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android