我的网站有多个部分每半秒检查一次更新,因此它可以提醒您消息等。但是我觉得使用带有setInterval的$ .post可能会在网站上有点沉重。是否有更好的建议用于这些任务的替代方法?
答案 0 :(得分:4)
是的,虽然这不是微不足道的。
更好的方法
您可以使用长轮询(或“彗星”),它会打开一个连接,让它保持打开20秒左右,然后立即重新打开它。服务器可以随时发送内容。
较新的浏览器提供websockets,提供持久连接。
两者的代码都相对复杂,因此您需要some kind of framework来处理事情。此外,需要为每个用户保持一个连接,因此它只适用于像NodeJS这样轻量级的东西。
更简单的方法
如果您希望更容易实现某些内容,我建议您按照建议检查更新(它称为短轮询以与长轮询/ websockets进行对比)。你可以这样做一个简单的轮询解决方案:
window.setInterval(function () {
// More lightweight than $.post
$.get('/datasource', function () {
/* do something */
});
}, 3000);
3秒间隔have been used in used before by high profile people。
如果事情变慢,请尝试在/ datasource
中分析数据库查询