相关疑难解决方法(0)

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

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

怎么解决这个?

当然,这也可能只是Safari的问题,但实际上它适用于所有其他网站,所以它也必须是我的NodeJS服务器上的问题.

要生成页面,我正在使用Jade res.render.

更新:似乎发生此问题是因为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…
}
Run Code Online (Sandbox Code Playgroud)

更新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); …
Run Code Online (Sandbox Code Playgroud)

safari caching node.js http-status-code-304 express

78
推荐指数
2
解决办法
8万
查看次数

Angularjs应用程序在从firebase托管服务器检索html模板时不处理304响应

当我的服务器以状态代码304响应时,我有一些用户无法访问我的angularjs应用程序上的某些模板.Angularjs正在记录[$compile:tpload],如下所示,视图不会显示给用户.因此,某种角度不会从缓存中获取视图.问题似乎非常间歇性地发生,并且在干净的浏览器缓存+页面刷新之后页面再次开始正常工作.

我用ui-router v0.3.2运行Angularjs v1.6.6并且我在firebase托管上托管我的静态文件.它是在最新版本上修复的吗?否则,我该如何处理这个案子呢?

[$ compile:tpload] http://errors.angularjs.org/1.6.6/$compile/tpload?p0=%2Fjs%2Ftemplate1%template1.html&p1=304

可能是未处理的拒绝:{"data":"","status":304,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam" : "回调", "缓存":{}, "头":{ "接受": "text/html的"}, "URL": "/ p/p.html"}, "状态文本": ""," xhrStatus ":" 完成"}


使用LogRocket捕获请求/响应

URL: "https://url.com/js/p/a/template.html"
method: "GET"
status: 304
duration: "00:00.061"

REQUEST
headers
  Accept: "application/json, text/plain, */*"
body: null
credentials: ""
mode: ""
referrer: ""


RESPONSE
headers
  cache-control: "max-age=3600"
  date: "Sat, 15 Sep 2018 20:03:12 GMT"
  etag: ""f166a7577a895x3f7dcc5accae97dcba""
  expires: "Sat, 15 Sep 2018 17:45:33 GMT"
  vary: "Accept-Encoding"
  via: "1.1 varnish" …
Run Code Online (Sandbox Code Playgroud)

http-status-code-304 angularjs firebase angular-ui-router firebase-hosting

8
推荐指数
1
解决办法
322
查看次数

有时 GET 返回 304 而不是 200

我正在使用 node.js 和 mongodb。

我似乎有时会收到 200,而有时会收到 304 未修改。

router.get('/add-to-bag/:id', (req, res, next) => {
    req.session.bag.push(req.params.id);
    res.redirect('back');
    });
});
Run Code Online (Sandbox Code Playgroud)

node.js

5
推荐指数
2
解决办法
6909
查看次数