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 npm package.json中文文档
Sep 04 NodeJs
Nodejs如何搭建Web服务器
Mar 28 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
nodejs个人博客开发第三步 载入页面
Apr 12 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 NodeJs
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
Feb 06 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 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自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
jQuery参数列表集合
2011/04/06 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
web网页按比例显示图片实现原理及js代码
2013/08/09 Javascript
iframe实用操作锦集
2014/04/22 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
python私有属性和方法实例分析
2015/01/15 Python
Python在线运行代码助手
2016/07/15 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
python 处理string到hex脚本的方法
2018/10/26 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
Python如何实现爬取B站视频
2020/05/20 Python
python 实现批量图片识别并翻译
2020/11/02 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
会计实习自我鉴定
2013/12/04 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
运动会入场口号
2014/06/07 职场文书
学习心得体会
2019/06/20 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
python如何获取网络数据
2021/04/11 Python
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript