只是一个简单的问题。如果我在nodejs中有一个非常简单的 Handlebars 模板,它可能会被渲染很多次,而无需更改缓存结果的最佳方法是什么,以确保它不需要每次都渲染 Handlebars 结果。
例如:
<html>
<head></head>
<body>
{{hostname}}
</body>
</html>
Express 没有任何本地支持缓存服务器端,只需添加 header /标签来告诉您的客户端浏览器缓存 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 中执行此操作的结构。
缓存链接:NPM GitHubExpressJS 链接:API Docs
我是一名优秀的程序员,十分优秀!