服务器上的 Nodejs Ajax/http 调用未读取新数据 Mongodb

Nodejs on Server Ajax/http calls not reading new data Mongodb

我最近开始将我在本地测试的节点 mongo、angularjs 站点推送到托管在 DigitalOcean 上的实时环境。

我与 ajax/http 调用不一致。在我的本地机器上,我能够执行 http 请求并更新一个 angularjs 变量,并且 return 中的这个会填充前端的 html。所有作品都很棒!现在使用相同的环境设置在我的服务器上测试它,变量加载新数据的唯一时间是我刷新页面时。

例如(不是我的实际代码):

Node.js - app.js:

app.get('/getlist', requiredAuthentication, function(req, res) {
    list.find({'username':req.session.user.username}, function(err,list) {
    res.send(list);
});});

Angularjs - angular_app.js:

$scope.onClick = function (points, evt) {
    $http.get('/getlist').then(function(response) {
     $rootScope.list = response;});
};

翡翠 - 家:

li(ng-repeat="row in list")

正如我所说,这在我的本地机器上运行完美,但在我的服务器上我必须刷新我的页面以加载新数据,就好像我的变量被缓存在服务器上一样。

任何想法都会有所帮助。

谢谢!

-------- 更新 - 测试 v0.1 --------

所以经过一些密集测试后,我发现了这里,但仍然没有修复。

如果我通过 http post 添加新数据,然后查看我的 mongo 数据库,我会看到新数据。然后,当我单击 ng-click 以通过 HTTP 检索新数据时,它不会 return 新数据,而是停留在旧数据上。

如果我让页面保持打开状态 10 分钟,然后单击按钮,它会检索新数据,这太糟糕了。

听起来像缓存,但为什么它在我的本地运行得很好?

查看控制台 > 网络 > 状态时。是代码 304,这意味着什么都没有改变?

-------- 更新 - 测试 v0.2 --------

我现在已经在控制台中用日志测试了 return 数据,我用 ajax jQuery 执行了 GET,我得到了相同的 [=58] =],它卡在同一个数据集上,所以我的结论肯定是 node.js 导致了问题。

-------- 更新 - 测试 v0.3 --------

好的,我已经完全停止 mongo 并使用 node-mysql 将所有内容切换到 mysql。再一次,在我的本地它像一台机器一样工作,而在我的实际服务器上它读取新数据时很慢。

我使用 Sequal PRO 访问 mysql 并开始向 table 添加新条目。 在浏览器中打开我的网站 url 它立即显示了新条目。但在那之后,添加新条目或删除条目仅在10分钟左右出现影响。

所以我的结论是 Nodejs 像妈妈一样缓存,有人知道更多吗?真的只有我一个人经历过吗?

尝试 res.json 获取来自节点

的 return 数据
app.get('/getlist', requiredAuthentication, function(req, res) 
{
    list.find({'username':req.session.user.username}, function(err,list) 
    {
      res.json(list);
     });
});

我对这个问题的结论是,端口 80 以某种方式缓存了页面内容,并且只会在页面刷新时加载新数据。

我升级了 Node 并使用了最新的 Express。我 运行 我的 Web 应用程序在自定义端口上,现在一切正常。