用python怎么不刷新網(wǎng)頁(yè)而監(jiān)控網(wǎng)頁(yè)變化?
這需求不僅僅是python的問(wèn)題,python更多是負(fù)責(zé)服務(wù)端的處理的部門,網(wǎng)頁(yè)展示應(yīng)該歸到web前端。
目前大致有這幾個(gè)處理方式:
1. Ajax long-pooling長(zhǎng)輪詢方式,前端永遠(yuǎn)不斷的去請(qǐng)求服務(wù)端,不管服務(wù)端的數(shù)據(jù)有沒(méi)有發(fā)生變更,這種方式會(huì)造成服務(wù)端請(qǐng)求資源浪費(fèi)。
2. web socket方式,該方式需要前端和服務(wù)端配合協(xié)作,服務(wù)端啟動(dòng)web socket監(jiān)聽(tīng),前端啟動(dòng)web socket連接。服務(wù)端一旦發(fā)生數(shù)據(jù)更新,主動(dòng)把數(shù)據(jù)推送給監(jiān)聽(tīng)的連接,前端只需監(jiān)聽(tīng)數(shù)據(jù)事件就可以,一旦監(jiān)聽(tīng)到新的數(shù)據(jù)事件,就可以更新頁(yè)面上的 DOM。
以上兩種方式,各有利弊,Ajax長(zhǎng)輪詢機(jī)制實(shí)現(xiàn)上面比較簡(jiǎn)單點(diǎn),只需簡(jiǎn)單的定時(shí)去請(qǐng)求服務(wù)接口,存在數(shù)據(jù)delay。web socket實(shí)現(xiàn)比較復(fù)雜些,需要服務(wù)端建立一套完善的socket通信機(jī)制,技術(shù)考慮上要多一些。