What is cacheTime in the sitemap node.js module?
Asked Answered
D

1

7

The documentation of the sitemap node.js module does not explain what cacheTime is. Why is it needed to generate a sitemap? What is its purpose?

Dearden answered 23/2, 2014 at 16:13 Comment(0)
D
5

The cacheTime is how long the sitemap.js module will wait before regenerating the sitemap.xml file from the list of urls given to it.

ie. on the first request, a sitemap.xml file is generated and placed in the cache. Subsequent requests read the sitemap from the cache, until it expires and is regenerated.

I agree it could be clearer, but the source code makes it pretty clear.

According to the source code at sitemap.js, line 136:

// sitemap cache
  this.cacheEnable = false;
  this.cache = '';
  if (cacheTime > 0) {
    this.cacheEnable = true;
    this.cacheCleanerId = setInterval(function (self) {
      self.clearCache();
    }, cacheTime, this);
  }

and line 187:

Sitemap.prototype.toString = function () {
  var self = this
    , xml = [ '<?xml version="1.0" encoding="UTF-8"?>',
              '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'];

  if (this.cacheEnable && this.cache) {
    return this.cache;
  }

  // TODO: if size > limit: create sitemapindex

  this.urls.forEach( function (elem, index) {
    // SitemapItem
    var smi = elem;

Specifically:

if (this.cacheEnable && this.cache) {
    return this.cache;
}

And the clear cache operation has a setInterval on it equal to the cacheTime parameter given.

Note the implication that your sitemap could become out of date if your urls change and your cacheTime has not triggered a clearing of the sitemap cache.

Disembarrass answered 23/2, 2014 at 16:32 Comment(1)
So basically, it is a feature to handle modifications to the set of URLs provided at creation time, correct? If so, then how can one modify this list of URLs dynamically?Hypoblast

© 2022 - 2024 — McMap. All rights reserved.