Будет ли полезно предварительно скомпилировать нефритовые шаблоны на производстве в экспресс-режиме?

При использовании jade-lang в производственной среде, выиграю ли я от наличия какой-либо формы промежуточного программного обеспечения, которое предварительно компилирует все представления .jade, а затем использует их в res.render? Или это происходит автоматически, когда вы делаете NODE_ENV=production?

Я просто изучаю варианты того, как ускорить рендеринг нефрита на производстве.


person TheThing    schedule 06.03.2014    source источник


Ответы (1)


Когда Jade компилирует шаблон, он кэшируется. В производственной среде, если вы прогреваете кеш, то нет необходимости предварительно компилировать шаблон. Даже если вы этого не сделаете, шаблон будет кэширован после его первой компиляции.

Я рекомендую вам взглянуть на исходный код Jade, чтобы лучше понять, как он работает.

exports.render = function(str, options, fn){
  // ...
  var path = options.filename;
  var tmpl = options.cache
    ? exports.cache[path] || (exports.cache[path] = exports.compile(str, options))
    : exports.compile(str, options);
  return tmpl(options);
};

Источник: https://github.com/visionmedia/jade/blob/1.3.0/lib/jade.js#L255-L259

exports.renderFile = function(path, options, fn){
  // ...
  options.filename = path;
  var str = options.cache
    ? exports.cache[key] || (exports.cache[key] = fs.readFileSync(path, 'utf8'))
    : fs.readFileSync(path, 'utf8');
  return exports.render(str, options);
};

Источник: https://github.com/visionmedia/jade/blob/1.3.0/lib/jade.js#L291-L295

person Florent    schedule 06.03.2014
comment
Большое спасибо. Я лучше погружусь в исходный код :) - person TheThing; 08.03.2014