如何缓存nodejs中的hbs呈现模板
问题描述:
只是一个简单的问题。如果我在nodejs中有一个非常简单的句柄模板,可能会被渲染很多次,而不需要更改缓存结果的最佳方式,以确保它不需要每次渲染句柄结果。如何缓存nodejs中的hbs呈现模板
如:
<html>
<head></head>
<body>
{{hostname}}
</body>
</html>
答
快递没有任何天然的缓存服务器端支持,只是添加页眉/标签告诉你的客户的浏览器缓存为x秒所以缓存服务器端,您需要在每条路线中自行实施。
我会建议使用键/值服务器(如Redis或Memcached)来保存缓存,因为它们很简单并且可以根据需要进行扩展。
在这个例子中我将使用名为cachey
的NPM模块(全面披露:我写的)
var express = require("express");
var app = express();
var redis = require('redis').createClient();
var cachey = require('cachey')(redis);
app.get("/", function (req, res, next) {
// Arg 1: Key to save data under in Key/Value Store
// Arg 2: Time To Live (In Seconds)
// Arg 3: getData Function (returning via async callback "cb") This will be called if data isn't already cached
// Arg 4: doWork Function/When the data is returned from cache or getData(), this is called providing the data
cachey.cache("renderedHomepage", 10, function(cb) {
cb(null, app.render("home.html"));
}, function(err, homepageHTML) {
res.send(homepageHTML);
});
});
这个例子是很没有意义的,说实话,因为它是当它要花费更长的时间才值得缓存生成数据比从缓存接收数据,但希望它显示了如何在NodeJS,Express和Redis中完成它的结构。