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学习小结(一)
Jul 06 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 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开发负载均衡指南
2010/07/17 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
PHP微信API接口类
2016/08/22 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
浅谈js闭包理解
2019/04/01 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
学习党课思想汇报
2013/12/29 职场文书
运动会获奖感言
2014/02/11 职场文书
军训自我鉴定100字
2014/02/13 职场文书
《老山界》教学反思
2014/04/08 职场文书
小学生评语大全
2014/04/18 职场文书
物业管理专业求职信
2014/06/11 职场文书
门面房租房协议书
2014/08/20 职场文书
邀请书模板
2015/02/02 职场文书
辞职信如何写
2015/02/27 职场文书
挂职个人工作总结
2015/03/05 职场文书
求职信如何撰写?
2019/05/22 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL
Minikube搭建Kubernetes集群
2022/03/31 Servers
Python获取字典中某个key的value
2022/04/13 Python