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 文本操作模块-fs模块(三)
Dec 22 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
深入理解nodejs中Express的中间件
May 19 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
详解Nodejs内存治理
May 13 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
Nov 18 NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 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读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
动态添加js事件实现代码
2009/03/12 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
javascript:void(0)使用探讨
2013/08/27 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Python 如何对文件目录操作
2020/07/10 Python
python 下载文件的几种方法汇总
2021/01/06 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
介绍一下linux的文件权限
2014/07/20 面试题
《大作家的小老师》教学反思
2014/04/16 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
殡葬服务心得体会
2014/09/11 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
重阳节慰问信
2015/02/15 职场文书
您对思维方式了解多少?
2019/12/09 职场文书