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 win7下安装方法
May 24 NodeJs
用nodejs实现PHP的print_r函数代码
Mar 14 NodeJs
nodejs分页类代码分享
Jun 17 NodeJs
Nodejs sublime text 3安装与配置
Jun 19 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
详解nodejs中exports和module.exports的区别
Feb 17 NodeJs
NodeJS使用七牛云存储上传文件的方法
Jul 24 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
NVM安装nodejs的方法实用步骤
Jan 16 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
Nodejs在局域网配置https访问的实现方法
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
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
jQuery 使用手册(二)
2009/09/23 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
Python实现的RSS阅读器实例
2015/07/25 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
python调用外部程序的实操步骤
2019/03/04 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
在PyCharm中安装PaddlePaddle的方法
2021/02/05 Python
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
关于安全的演讲稿
2014/05/09 职场文书
个人政治思想总结
2015/03/05 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书
《火烧云》教学反思
2016/02/23 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android