LoginSignup
11

More than 5 years have passed since last update.

今すぐJadeを最新版にして、selfオプションを有効にすればレスポンスが8倍早くなる(かも)【Node.js】

Last updated at Posted at 2014-12-26

はじめに

  • 個人で運営しているWebサービスの話です。
  • Express + Jade の標準的な構成で運用
  • メインページのレスポンスタイムが600ms超えで絶望
  • ボトルネック調査で res.render() が98%以上の時間を占めていることが判明

結論は2つ

  1. Jadeを最新版にしてみよう
  2. selfオプションを今すぐ有効にしよう
Jade 1.7.0 Jade 1.8.2 Jade 1.8.2 (enable 'self' option)
620ms 160ms 80ms

1.7.0 -> 1.8.2(4倍早い)

  • npm update jade
  • ダメ元で、Jadeのバージョンアップを行いました。効果抜群でした。
  • 公式のChange Logを読んでも「大幅にperformance向上したよ」的なことは書いてありません。何故こんなに早くなったのかまでは調査していません。

selfオプション(更に2倍早い)

なにそれ

  • Jadeの変数展開はデフォルトだと、内部で with 構文を利用している。爆遅。
  • selfオプションを有効にすると 常に 'self' namespaceを通じて変数にアクセスする。爆速。

使い方

'self' namespaceを有効にしたいtemplateのrender時に { self: true } を指定するだけ。

example.js
res.render('watch', {
    id: 777,
    self: true
});

template側で変数にアクセスする際は #{self.id} のようにする。( #{id} ではなく )

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11