您好,登錄后才能下訂單哦!
如果博客是使用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>
生成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時讀文件即可
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。