From 3a596791b89625afc94a57bf1d81571c96402cb9 Mon Sep 17 00:00:00 2001 From: hooke Date: Thu, 7 Apr 2016 15:33:46 +0300 Subject: [PATCH 1/2] Set and use TTL value when store page to cache --- lib/memjsCache.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/memjsCache.js b/lib/memjsCache.js index 3d0f9fa..fe1dd17 100644 --- a/lib/memjsCache.js +++ b/lib/memjsCache.js @@ -5,6 +5,8 @@ memjs = MemJS.create(); var cache_manager = require('cache-manager'); +var pageTTL = process.env.PAGE_TTL || 0; + console.log('using memjs cache'); module.exports = { @@ -29,7 +31,7 @@ module.exports = { }, afterPhantomRequest: function(req, res, next) { - this.cache.set(req.prerender.url, req.prerender.documentHTML); + this.cache.set(req.prerender.url, req.prerender.documentHTML, function(err,val){}, pageTTL); next(); } }; @@ -42,7 +44,7 @@ var memjs_cache = { callback(err, stringValue); }); }, - set: function(key, value, callback) { - memjs.set(key, value, callback); + set: function(key, value, callback, ttl) { + memjs.set(key, value, callback, ttl); } }; From aae08b4c1791bb584050a76d2a6ade13f7dbf0f8 Mon Sep 17 00:00:00 2001 From: hooke Date: Wed, 20 Apr 2016 18:14:08 +0300 Subject: [PATCH 2/2] Cache pages with 200 status code only --- lib/memjsCache.js | 72 ++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/lib/memjsCache.js b/lib/memjsCache.js index fe1dd17..df6c6db 100644 --- a/lib/memjsCache.js +++ b/lib/memjsCache.js @@ -1,7 +1,7 @@ var MemJS = require("memjs").Client; -memjs = MemJS.create(); +var memjs = MemJS.create(); var cache_manager = require('cache-manager'); @@ -10,41 +10,49 @@ var pageTTL = process.env.PAGE_TTL || 0; console.log('using memjs cache'); module.exports = { - init: function() { - this.cache = cache_manager.caching({ - store: memjs_cache - }); - }, - - beforePhantomRequest: function(req, res, next) { - if(req.method !== 'GET') { - return next(); - } - - this.cache.get(req.prerender.url, function (err, result) { - if (!err && result) { - res.send(200, result); - } else { - next(); - } - }); - }, - - afterPhantomRequest: function(req, res, next) { - this.cache.set(req.prerender.url, req.prerender.documentHTML, function(err,val){}, pageTTL); + init: function() { + this.cache = cache_manager.caching({ + store: memjs_cache + }); + }, + + beforePhantomRequest: function(req, res, next) { + if (req.method !== 'GET') { + return next(); + } + //console.log('[memjs cache] gettting page from cache with an URL ', req.prerender.url); + + this.cache.get(req.prerender.url, function(err, result) { + if (!err && result) { + //console.log('[memjs cache] successfully got page from cache'); + res.send(200, result); + } else { + //console.log('[memjs cache] no such page in cache'); next(); + } + }); + }, + + afterPhantomRequest: function(req, res, next) { + // Cache only pages with status code 200. This is to avoid caching of 3xx/4xx/5xx status codes + if (req.prerender.statusCode === 200) { + //console.log('[memjs cache] saving page with pageTTL ', pageTTL, ' and URL ', req.prerender.url); + this.cache.set(req.prerender.url, req.prerender.documentHTML, function(err, val) {}, pageTTL); } + next(); + } + }; var memjs_cache = { - get: function(key, callback) { - memjs.get(key, function(err, value) { - var stringValue = value ? value.toString() : null; - callback(err, stringValue); - }); - }, - set: function(key, value, callback, ttl) { - memjs.set(key, value, callback, ttl); - } + get: function(key, callback) { + memjs.get(key, function(err, value) { + var stringValue = value ? value.toString() : null; + callback(err, stringValue); + }); + }, + set: function(key, value, callback, ttl) { + memjs.set(key, value, callback, ttl); + } };