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 整合kindEditor实现图片上传
Feb 03 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 NodeJs
详解nodejs express下使用redis管理session
Apr 24 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
nodejs 使用 js 模块的方法实例详解
Dec 04 NodeJs
Nodejs让异步变成同步的方法
Mar 02 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 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 file_get_contents函数轻松采集html数据
2010/04/22 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
禁止刷新,回退的JS
2006/11/25 Javascript
js模拟弹出效果代码修正版
2008/08/07 Javascript
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
ant design 日期格式化的实现
2020/10/27 Javascript
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
基于matplotlib xticks用法详解
2020/04/16 Python
Python 如何创建一个线程池
2020/07/28 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
企业门卫岗位职责
2013/12/12 职场文书
元旦晚会开场白
2015/05/29 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
Axios代理配置及封装响应拦截处理方式
2022/04/07 Vue.js