【发布时间】:2018-07-20 08:00:57
【问题描述】:
我将 DataTables 与 serverside = true 一起使用。仅当服务器上的数据发生更改时,我才想重绘我的数据表。但是 table.ajax.reload() 在每次调用时都会重绘表格。
你能提供一个小例子吗?
- 从服务器获取数据
- 检查数据是否已更改
- 用新数据重绘表格
基于 cmets 的 UPD:
我有简单的服务器端处理数据表。如果用户更改页面或排序或过滤或其他任何东西,则有 ajax 查询到服务器以接收新数据并重绘表。但是服务器上的数据可能会改变。例如,其他用户向数据库表中插入新行或更改某些内容。我想如果这发生在数据表中的数据会自动刷新。但这是罕见的事件。无需每 10 秒(或几秒)重绘所有数据。仅当服务器上的某些内容发生更改时才需要重绘。对服务器的查询很快。重绘很慢。
【问题讨论】:
-
也许我错过了收益。重绘表格是否有性能或其他问题?绘制表格不应该是服务器端处理的负担。
-
您是在尝试优化表格的呈现,还是优化网络带宽?无论哪种方式,我都不相信 DataTables 中存在此功能。
-
我正在尝试优化渲染。桌子很大,里面有图片。在旧电脑上渲染很慢。检查 json 字符串是否相等很快。
-
您的数据库中有更新时间戳吗?您需要做的第一件事是知道正在显示哪些行。一种选择是使用rows().ids()。您可以使用'{page:'current'}'的selector-modifer,例如:
$('#myTable).DataTable().rows({page: 'current'}).ids()。然后使用 ajax 查询那些IDs的数据库。然后使用rows().data()获取比较。请提供有关您的数据的更多详细信息,我们可以提供更详细的答案。 -
我有简单的服务器端处理数据表。如果用户更改页面或排序或过滤任何其他内容,则 ajax 查询到服务器以接收新数据并重绘表。但是服务器上的数据可能会改变。例如,其他用户向数据库表中插入新行或更改某些内容。我想如果这发生在数据表中的数据会自动刷新。但这是罕见的事件。无需每 10 秒(或几秒)重绘所有数据。仅当服务器上的某些内容发生更改时才需要重绘。对服务器的查询很快。重绘很慢。
标签: javascript datatables