2016-07-16 62 views
0

其實我們在數據庫發生一些更新時播放通知聲音,所以我試圖在瀏覽器最小化時每30秒刷新一次ActionMethod,這在Firefox中工作正常,但在Chrome中這不起作用。當瀏覽器被最小化時,每隔30秒,asp mvc刷新頁面

場景:

最小化瀏覽器,讓計算機處於閒置狀態。

我已經嘗試了兩種方法:

方法1:

<meta http-equiv="refresh" content="30;URL=http://example.com/" /> 

方法2:

<script> 

    $(document).ready(function() { 

    setTimeout(function(){ 
    window.location.reload(1); 
    }, 30000); 

    }); 

</script> 

閱讀this文章後,它似乎在Chrome最小化它設置Javascript setIntervalsetTimeout爲空閒狀態,因爲瀏覽器性能改進會影響Javascript間隔的執行。

所以我可以使用計劃任務如FluentScheduler,Quartz.NET或Hangfire每30秒重新加載ActionMethod

任何幫助將是偉大的。

+2

對於這樣的情況,我會用wihh推送通知到頁面而不是每30秒輪詢一次。你可以使用像SignalR這樣的庫來進行客戶端 - 服務器通信 – Massanu

+0

@Massanu,謝謝,最後我用signalR去了,一切正常,[這裏](http://stackoverflow.com/a/38587725/2218697)是我的解決方案。 – stom

回答

1

SignalR在這裏是一個完美的匹配。你爲什麼希望你的客戶每隔30秒向服務器發送請求?這很可能會影響您的性能並增加您的服務器負載。

相反,我會建議使用SignalR並將通知推送到客戶端,每當有任何更新。

+0

是的你是正確的,我已經開始使用'SignalR',但我有一個問題,如問題和[這裏提到](http://stackoverflow.com/questions/22061280/javascript-halts-in-inactive-android -chrome-tab)出於性能原因,chrome瀏覽器在禁用JavaScript時禁用JavaScript。所以我們的一些客戶端保持瀏覽器最小化,當我使用'SignalR'向客戶端發送通知並嘗試通過調用'JavaScript'函數播放聲音時,它不起作用。任何建議? – stom

+0

在Godaddy共享主機,因爲他們限制某些功能,所以我無法使用'SqlDependency',但[這裏](http://stackoverflow.com/a/38587725/2218697)是我的解決方案**播放通知沒有SqlDependency使用SignalR **,即使瀏覽器處於不活動狀態或最小化狀態,它也可以工作。這個**在新的通知來臨時重新加載部分視圖**。 – stom

+1

@stom - 酷!很高興知道它解決了! –

相關問題