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 28 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
详解nodejs中的process进程
Mar 19 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 NodeJs
Nodejs核心模块之net和http的使用详解
Apr 02 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 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
JAVA/JSP学习系列之六
2006/10/09 PHP
PHPlet在Windows下的安装
2006/10/09 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
php限制ip地址范围的方法
2015/03/31 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
js闭包学习心得总结
2018/04/17 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
python如何随机生成高强度密码
2020/08/19 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
学前教育求职自荐信范文
2013/12/25 职场文书
简短大学毕业感言
2014/01/18 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
结婚喜宴主持词
2014/03/14 职场文书
党员批评与自我批评
2014/10/15 职场文书
行政处罚听证告知书
2015/07/01 职场文书
Python入门之基础语法详解
2021/05/11 Python
vue实现同时设置多个倒计时
2021/05/20 Vue.js