NodeJsがsitemapサイト地図を生成する方法の例


ブログがHexoで管理されている場合、sitemapはプラグインを使って生成することができます。しかし、1つのコンテンツ管理サイトについては、バックエンドはexpress、koaなどの枠組みかもしれません。この時、sitemapは自分で生成する必要があります。
何がsitemapですか
Sitemapは、ウェブサイトの管理者に、検索エンジンのウェブサイト上に、キャプチャできるウェブページがあるかを通知することができます。最も簡単なSitemap形式は、XMLファイルです。ここにはウェブサイトのURLとウェブサイトごとの他のメタデータ(前回更新された時間、変更された頻度、及びウェブサイト上の他のウェブサイトに対する重要度など)が並べられており、検索エンジンがよりインテリジェントにウェブサイトをキャプチャすることができます。
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/montly
  • プリオリティ:重み
  • 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を要求するたびにファイルを読めばいいです。
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。