Node.js と Express のバージョンをそれぞれ 0.10.21 と 3.4.4 に更新したところ、開発中 (および運用中) に奇妙なビュー キャッシュが見られるようになりました。
他のビュー (またはすべてのビュー?) に含まれるビューから生成された html がキャッシュされているようです。
例えば:
レイアウト.ジェイド
doctype 5
html
head
title= title
meta(name="viewport", content="width=device-width, initial-scale=1.0")
link(rel='stylesheet', href='/stylesheets/style.css')
body
#container
include header
block content
include footer
header.jade
- var headerClass = ""
if pageVars.headerOverBackground
- headerClass = "overbackground"
#header(class=headerClass)
[snip]
somepage.jade
extends layout
block content
[snip]
初めて/somepageを呼び出し、 pageVars.headerOverBackgroundを true に設定して渡すと、ビューが正しくレンダリングされます。同じレイアウトとヘッダーを使用して別の URL /someotherpageにアクセスし、 pageVars.headerOverBackgroundを false に設定して渡すと、header.jade部分が前のページ (「overbackground」クラスを使用) にあるかのようにレンダリングされます。pageVars.headerOverBackgroundがまだ true であるかのように。
しかし、それは誤りであり、それを証明するために console.log() を持っています。
私は何か間違ったことをしていますか?私はひどく混乱していますか?Nodeを開発モードと本番モードで実行し、Expressに
app.disable('view cache');
無駄に...
編集:
ページを何度リロードしても、キャッシュされたビューが読み込まれます。ノードを再起動してリロードすると、正しいビューが表示されます。