只是一个简单的问题。如果我在nodejs中有一个非常简单的把手模板,很可能会渲染很多次,而不需要改变缓存结果的最佳方法,以确保每次都不需要渲染把手结果。
e.g:
<html>
<head></head>
<body>
{{hostname}}
</body>
</html>
答案 0 :(得分:0)
Express没有任何原生支持缓存服务器端,只需添加标头/标签告诉客户端浏览器缓存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中执行此操作的结构。 / p>