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实现黑名单中间件设计
Jun 17 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
用nodeJS搭建本地文件服务器的几种方法小结
Mar 16 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 NodeJs
nodejs通过钉钉群机器人推送消息的实现代码
May 05 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 05 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 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
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
浅析php工厂模式
2014/11/25 PHP
PHP解析RSS的方法
2015/03/05 PHP
php正则表达式学习笔记
2015/11/13 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
js读取配置文件自写
2014/02/11 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
Python Deque 模块使用详解
2014/07/04 Python
基于Python的身份证号码自动生成程序
2014/08/15 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
2015/04/17 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
python的变量与赋值详细分析
2017/11/08 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
Python类成员继承重写的实现
2020/09/16 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
哈理工毕业生的求职信
2013/12/22 职场文书
环保倡议书50字
2014/05/15 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang
HTML基本元素标签介绍
2022/02/28 HTML / CSS