如何在玉或swig中禁用缓存

时间:2013-07-08 15:29:15

标签: node.js express swig pug

我最近一直在玩快递js,我很喜欢它。我的问题是,当我提交无效表单时,会出现验证错误消息,但是当我重新加载页面时,错误消息仍然显示我认为错误消息正在被缓存。有没有办法在jade / swig中禁用缓存,还有一种方法可以指定要缓存哪些页面而不是缓存(如表单)?

示例代码:

filename: index.js
// app.get('/form', index.getForm)
exports.getForm = function(req, res){
 res.render('form');
}

// app.post('/form', index.postForm)
exports.postForm = function(req, res){
 // express form validation goes here ...
 if(errors){
  res.locals.errors = errors;
  res.locals.form = req.body;
  exports.getForm(req, res);
 }else{
  res.redirect('/welcome');
 }
}

这是我的玉

filename: form.jade
 if error.email
  .error=error.email.msg
  input#email(type='email', name='email', value='#{form.email}')
 else
  input#email(type='email', name='email', value='#{form.email}')

1 个答案:

答案 0 :(得分:1)

除非您在生产模式下运行快递,否则没有缓存问题。

看起来当您按F5时,在表单错误后,您的请求会通过帖子重新提交相同的表单(带有错误)。

选项1:

  • AJAX <3

选项2:

  • 使用2个不同的jade模板,一个用于exports.postForm with errors,另一个用于exports.getForm类似:

    exports.getForm = function(req, res) {
        res.render('form');
        }
    
    
    exports.postForm = function(req, res) {
        // express form validation goes here.
        if(errors) {
            res.locals.errors = errors;
            res.locals.form = req.body;
            res.render('form_fail');  <----
        }
        else {
            res.redirect('/welcome');
       }
    }