NodeJs生成sitemap站點(diǎn)地圖的方法示例
如果博客是使用Hexo管理的,sitemap可以使用插件來生成。但對(duì)于一個(gè)內(nèi)容管理網(wǎng)站,后端可能是express、koa之類的框架,這時(shí)sitemap就需要自己來生成了
什么是sitemap
Sitemap可方便網(wǎng)站管理員通知搜索引擎他們網(wǎng)站上有哪些可供抓取的網(wǎng)頁。最簡(jiǎn)單的Sitemap形式,就是XML文件,在其中列出網(wǎng)站中的網(wǎng)址以及關(guān)于每個(gè)網(wǎng)址的其他元數(shù)據(jù)(上次更新的時(shí)間、更改的頻率以及相對(duì)于網(wǎng)站上其他網(wǎng)址的重要程度為何等),以便搜索引擎可以更加智能地抓取網(wǎng)站。
sitemap結(jié)構(gòu)
<url> <loc>http://www.jouypub.com/</loc> <lastmod>2019-05-01</lastmod> <changefreq>daily</changefreq> <priority>0.5</priority> </url>
- loc:文章鏈接地址
- lastmod:最后更新時(shí)間
- changefreq:更新頻率,daily/monthly
- priority:權(quán)重
生成sitemap,基于express項(xiàng)目
開源包: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優(yōu)化
上面那種方法在文章數(shù)少時(shí)還能使用,如果有幾千甚至幾萬篇文章,一次拉取的方式就不適合了,就需要把返回結(jié)果寫入到文件中,一天更新一次。只需要只需要把
sitemap.toXML()
改成
fs.writeFileSync("app/assets/sitemap.xml", sitemap.toString());
即可。每次請(qǐng)求sitemap時(shí)讀文件即可
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
NodeJS http模塊用法示例【創(chuàng)建web服務(wù)器/客戶端】
這篇文章主要介紹了NodeJS http模塊用法,結(jié)合實(shí)例形式分析了node.js創(chuàng)建web服務(wù)器與客戶端,進(jìn)行HTTP通信的相關(guān)操作技巧,需要的朋友可以參考下2019-11-11nodejs連接ftp上傳下載實(shí)現(xiàn)方法詳解【附:踩坑記錄】
這篇文章主要介紹了nodejs連接ftp上傳下載實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了node.js使用ftp模塊實(shí)現(xiàn)針對(duì)ftp上傳、下載相關(guān)操作的方法,并附帶記錄了傳輸速度慢的解決方法,需要的朋友可以參考下2023-04-04nodejs+axios爬取html出現(xiàn)中文亂碼并解決示例
這篇文章主要為大家介紹了nodejs+axios爬取html出現(xiàn)中文亂碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06node.js中的fs.appendFileSync方法使用說明
這篇文章主要介紹了node.js中的fs.appendFileSync方法使用說明,本文介紹了fs.appendFileSync方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12