繁体   English   中英

如何在Node.js中缓存HBS呈现的模板

[英]How can I cache a hbs rendered template in nodejs

只是一个简单的问题。 如果我在nodejs中有一个非常简单的车把模板,那么很可能需要渲染多次,而无需更改什么是缓存结果的最佳方法,以确保它不需要每次都渲染车把结果。

例如:

<html>
  <head></head>
  <body>
    {{hostname}}
  </body>
</html>

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中进行操作的结构。

Cachey链接: NPM GitHub ExpressJS链接: API文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM