首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NodeJS/express:缓存和304状态码

NodeJS/express:缓存和304状态码
EN

Stack Overflow用户
提问于 2013-09-15 18:24:39
回答 7查看 114.2K关注 0票数 102

当我重新加载一个用express制作的网站时,我得到一个使用Safari (而不是Chrome)的空白页面,因为NodeJS服务器会给我一个304状态代码。

如何解决这个问题?

当然,这也可能只是Safari的一个问题,但实际上它在所有其他网站上都可以很好地工作,所以在我的NodeJS服务器上也一定是一个问题。

为了生成页面,我使用了带有res.render的Jade。

更新:似乎这个问题的发生是因为Safari在重新加载时发送了'cache-control': 'max-age=0'

更新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);
    }
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18811286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档