我有一个kartik网格,目前正在使用设置超时间隔的jquery进行更新。这可行,但问题是它生成了许多http ajax请求,当我检查任务管理器时,谷歌浏览器倾向于使用25%的cpu ..
这就是我目前正在做的事情。
echo DynaGrid::widget([
'columns' => $columns,
'showPersonalize' => true,
//'allowThemeSetting'=> false,
'options' => ['id' => 'trackyard'],
'gridOptions' => [
'options' => ['id' => 'assignsolic'],
'dataProvider' => $dataProvider,
//'filterModel' => $searchModel,
'showPageSummary' => false,
'pager' => [
'firstPageLabel' => 'First',
'lastPageLabel' => 'Last',
'maxButtonCount' => 10,
],
'toolbar' => [
['content' => '{dynagrid}'],
'{export}',
'{toggleData}'
],
'pjax' => true,
'pjaxSettings' => [
'options' => [
'id' => 'wod',
// 'enablePushState' => false,
],
'loadingCssClass'=>false,
],
]
]);
这是更新网格的jquery代码
function reloadgrid() {
$.pjax.reload({container:"#trackyard-pjax"});
}
window.setTimeout(
reloadgrid(),1000
)
上面的代码可以正常工作,但是当服务器上发生某些变化以降低cp使用率时,有更好的方法可以随时调用上面的重载网格函数
答案 0 :(得分:1)
当服务器端发生更改时,您需要使用websocket
来实时更新客户端。如果您使用的是asp.net,则可以使用signalR
,否则您可以使用socket.io