我有一些麻烦,我怎么能意识到它有一个动态网站,数据通过ajax提取给用户。
在ajax的末尾是一个简单的php脚本,它打开一个MySQL连接到我的数据库并获取一些结果(看起来对所有用户都相同,没有任何特定于用户的结果)以便稍后显示它们,例如在桌子上。
这就是我到目前为止所做的。它正在工作,但是当有数以千计的用户打开网站时...这不会很好,我认为我的服务器不会足够快地更新它。
所以我的目的是每隔x秒用cronjob更新一次想要的结果,我会节省很多资源。
问题在于我不知道如何实现这一部分,我可以得到一些帮助吗?或者我应该忘记ajax并开始使用node.js?
我有一个非常好的根服务器,这也是我的网站空间,所以可以安装一些额外的应用程序。
答案 0 :(得分:1)
使用memory-cache
和node-cron
的真正基本的Node.js解决方案:
var cache = require('memory-cache');
var CronJob = require('cron').CronJob;
var job;
var jobStarted = false;
var rateLimitExceeded = false;
var job = new CronJob('5 * * * * *', function() {
// Runs every 5 seconds
doALongDataBaseOperation(function(err, data) {
cache.put('cacheId', data);
});
});
app.get('/path/that/needs/caching', function(req, res) {
cache.get('cacheId', function(e, data) {
if (data) {
res.end(data);
} else {
// contingency in case the cache doesn't exist
doALongDataBaseOperation(function(err, data) {
res.end(data);
cache.put('cacheId', data);
});
}
});
});
答案 1 :(得分:0)
您可以使用Memcache(或类似的东西)缓存数据。您的cronjob可以根据需要随时运行和刷新缓存。
然后你的AJAX可以调用一个简单的PHP脚本来从缓存中检索数据。