express ajax 304缓存禁用,NodeJS / express:缓存和304状态代码

重新加载使用express创建的网站时,由于Safari(而不是Chrome)而出现空白页,因为NodeJS服务器向我发送了304状态代码。

如何解决呢?

当然,这也可能只是Safari的问题,但实际上它可以在所有其他网站上正常工作,因此它也必须是我的NodeJS服务器上的问题。

To generate the pages, I'm using Jade with res.render.

Update: It seems like this problem occurs because Safari sends 'cache-control': 'max-age=0' on reload.

更新2:我现在有一种解决方法,但是有更好的解决方案吗?

解决方法:

app.get('/:language(' + content.languageSelector + ')/:page', function (req, res)

{

// Disable caching for content files

res.header("Cache-Control", "no-cache, no-store, must-revalidate");

res.header("Pragma", "no-cache");

res.header("Expires", 0);

// rendering stuff here…

}

更新3:

因此,完整的代码部分当前为:

app.get('/:language(' + content.languageSelector + ')/:page', pageHandle);

function pageHandle (req, res)

{

var language = req.params.language;

var thisPage = content.getPage(req.params.page, language);

if (thisPage)

{

// Disable caching for content files

res.header("Cache-Control", "no-cache, no-store, must-revalidate");

res.header("Pragma", "no-cache");

res.header("Expires", 0);

res.render(thisPage.file + '_' + language, {

thisPage : thisPage,

language: language,

languages: content.languages,

navigation: content.navigation,

footerNavigation: content.footerNavigation,

currentYear: new Date().getFullYear()

});

}

else

{

error404Handling(req, res);

}

}

最佳答案

最简单的解决方案:

app.disable('etag');

如果您想要更多控制权,请在此处使用替代解决方案:

http://vlasenko.org/2011/10/12/expressconnect-static-set-last-modified-to-now-to-avoid-304-not-modified/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值