Javascript 如何检测页面是否应该更新?
我在页面中有一个表格,显示摘要数据。Javascript 如何检测页面是否应该更新?,javascript,jquery,ajax,database,http,Javascript,Jquery,Ajax,Database,Http,我在页面中有一个表格,显示摘要数据。 这些数据来自汇总数据库表。如果基础表得到更新,我需要刷新页面中显示的此表。 我知道的方法是每X秒重新加载一次页面。 但我感兴趣的是在表实际更新时更新表。 这方面的标准解决方案是什么?我所能想到的唯一方法是向表中添加一些额外的列,以更新行ID,并每隔X秒对此列进行“轮询”。我认为它可以工作,但它似乎是可怕的解决方案,我想知道什么是解决这个(我假设是常见的)问题的标准方法 更新: 只是为了增加更多的内容。我的问题不是那么笼统。我只有更新表的代码的一个特定部分,更
这些数据来自汇总数据库表。如果基础表得到更新,我需要刷新页面中显示的此表。
我知道的方法是每X秒重新加载一次页面。
但我感兴趣的是在表实际更新时更新表。
这方面的标准解决方案是什么?我所能想到的唯一方法是向表中添加一些额外的列,以更新行ID,并每隔X秒对此列进行“轮询”。我认为它可以工作,但它似乎是可怕的解决方案,我想知道什么是解决这个(我假设是常见的)问题的标准方法 更新:
只是为了增加更多的内容。我的问题不是那么笼统。我只有更新表的代码的一个特定部分,更新完全在我的控制之下。它不像一个由多个源更新的表,有很多不同的方法来解决这样的问题。最好和最有效的解决方案将涉及服务器的一些帮助,以了解何时/发生了什么变化。以下是一些想法:
这是WebSocket(用于垫片)的前提。您需要(如前所述)一个服务器(如Node.JS)来支持WebSocket功能——大多数现代web浏览器都在客户端支持此API Web Sockets API()允许浏览器与服务器连续通信数据(反之亦然) 如果更新了数据库记录,则可以设置触发器将此数据传回客户端。以评论板系统(与我们在StackOverflow上使用的系统完全相同)为例——因为web上已经有大量信息可用,我认为没有必要在这里详细介绍 进一步阅读和工具:
var pollID = window.setInterval(function poller(){ getAjaxData(); }, 2000);
if (noUpdate) window.clearInterval(pollID);
通信系统
你有多种方法可以创建一种自动更新的动态页面(如Facebook)
假设用户希望看到加载页面后的所有新更改
- 一个简单的方法是在每一行上都有一个日期,这是最后一次更改的时间。查询自上次查询以来更改的所有行
- 更复杂的方法是实现一个完整的通知系统。对于每个更改或新行,将添加一个关于它的新通知。您可以在用户和通知之间建立关系,以了解他是否已经看到它,并安排每24小时一次作业来删除旧关系。但很快这一切都变得浮肿起来。我更喜欢在通知系统中使用NoSQL数据库(类似CouchDB的JSON数据库)。您可以轻松更改文档的结构,并为所有通知创建特定视图。它比关系数据库更容易使用。如果您想知道在用户加载页面后数据是否发生了更改,则只需查询通知类型(您正在观察哪些数据/表发生了更改),并获取创建日期比上次查询的时间新且未查看的数据/表。由于表始终反映最后一种状态,因此在页面加载时查询表,然后仅
(function poll() { $.ajax('/myTableData', { success: function(data) { updateTable(data); }, complete: function() { setTimeout(poll, 8000); //every eight seconds } }); })();