2

簡単な質問です。nodejs に非常に単純なハンドルバー テンプレートがあり、毎回ハンドルバーの結果をレンダリングする必要がないことを確認するために、結果をキャッシュする最良の方法を変更する必要なく、かなりの回数レンダリングされる可能性があります。

例えば:

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

1 に答える 1

0

Expressには、サーバー側のキャッシュをサポートするネイティブがありません。ヘッダー/タグを追加して、クライアントのブラウザーにx秒間キャッシュするように指示するだけなので、サーバー側をキャッシュするには、各ルートで自分で実装する必要があります。

必要に応じてシンプルでスケーラブルなキャッシュを保持するために、RedisやMemcachedなどのKey/Valueサーバーを使用することをお勧めします。

この例では、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ドキュメント

于 2012-12-14T18:24:08.923 に答える