Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
頁收發消息是一個常見的系統應用場景,通常我們有兩種方式來完成消息的發送,一種是通過客戶端來拉取消息,一種是服務端推送消息,到底使用哪種方式好一點呢?
具體使用哪種方式,我們需要根據實際的業務場景來分析,沒有絕對正確的方式,只有適不適合。所以,我們分析一下網頁端的用戶一般都存在哪些應用場景:
我們拋開純技術實現不談,只是從解決方案來談,由于是使用的是網頁端,HTTP協議是通過“請求-響應”的方式傳遞,網頁端和服務端之間是沒有消息通道的,那么怎么來實現消息的接收呢?
輪詢拉取可以說是所有消息的實現方案中最簡單的一種,實現起來也非常簡單。
大致的實現方法如下:
這種方式最大的優勢就是實現非常簡單,而且容易理解,早期的聊天室基本都是這種實現方式,我曾經給朋友做過一個答題的系統,有多個終端,每個終端看到的內容需要有所不同,也是使用的這種實現方式。
當然這種實現方式的缺點也是非常明顯:
使用這種方式,時效性和效率是矛盾的,我降低timer的間隔時間,就可以提高時效性,但是會降低效率,例如:間隔時間降低到1秒,這種基本就可以趨近于實時了,但是可能300次輪詢才會拉到1條消息,有效性只有0.3%了。
所以,由于這個不可調和的矛盾存在,這種解決方案只能適用于一些同時在線用戶少,對實時性要求不高的場景中。
如果想要同時保證時效性和效率,其實長連接是一個不錯的選擇,一般我們的PC端聊天軟件都是使用的長連接方式來實現。而網頁端的長連接實現方式通常有兩種:
FlashSocket就不說了,如果不是網頁游戲的話其實很少會用到這個方案來做長連接,它要求用戶必須安裝了Flash插件。如果是HTML網頁端的話,其實更多會選擇WebSocket這種方案,WebSocket的優點非常明顯,建立一次握手以后,服務端和網頁端就可以雙向通信了,擺脫了HTTP的Request-Response的限制,消息的及時性和效率都大幅度的提升了。
但是WebSocket也不是那么簡單,其中的坑也非常的多,如何單個生產者推送給多個消費者,如何保證不重復推送,斷線以后的重連等等。當然更重要的是,不同的瀏覽器對于WebSocket的支持可能不同,兼容性也是一大問題,所以使用得并不是很多。
那有沒有一種更常用的方法來處理消息的接收呢?
想要建立一條HTTP長輪詢的通道,我們需要在瀏覽器和服務器之間建立一條通知連接。
而這條通知連接不同于普通的HTTP連接,它要有一些特殊性:
怎么來Hold住這個請求呢?
個人認為,長輪詢的請求就一直保持對消息隊列的數據拉取就行,如果有實時的消息來了,也等到它進入消息隊列以后再處理,這樣可以防止消息丟失,也可以降低系統的復雜度。
總的來說,網頁端的消息接收,用什么方式好呢?拉和推都可以,每種方式有每種方式的優缺點。
融界2024年7月9日消息,天眼查知識產權信息顯示,稅友軟件集團股份有限公司取得一項名為“一種數據交互方法、系統、電子設備及存儲介質“,授權公告號CN113010237B,申請日期為2021年3月。
專利摘要顯示,本發明公開了一種數據交互方法,包括:HTML程序利用HTML容器提供的服務接口生成本地資源獲取請求,并通過HTML容器的容器進程將本地資源獲取請求發送至本地服務容器;本地服務容器利用本地服務容器中包含的業務服務對接收到的本地資源獲取請求進行處理,得到相應的本地資源數據,并將本地資源數據發送至HTML容器;HTML容器接收本地資源數據,并將本地資源數據發送至HTML程序;本方法中的HTML程序可直接使用HTML容器及本地服務容器進行本地資源獲取,可確保HTML程序擺脫HTTP服務的束縛,以使HTML能夠更好地在本地程序中進行應用;本發明還提供數據交互系統、電子設備及存儲介質,具有上述有益效果。
本文源自金融界
覽器解析HTML文件的過程是網頁呈現的關鍵步驟之一。具體介紹如下:
HTML文檔的接收和預處理
解析為DOM樹
CSS解析與CSSOM樹構建
JavaScript加載與執行
渲染樹的構建
布局計算(Layout)
繪制(Paint)
因此,我們開發中要注意以下幾點:
綜上所述,瀏覽器解析HTML文件是一個復雜而高度優化的過程,涉及從網絡獲取HTML文檔到最終將其渲染到屏幕上的多個步驟。開發者需要深入理解這些步驟,以優化網頁性能和用戶體驗。通過合理組織HTML結構、優化資源加載順序、減少不必要的DOM操作和合理安排CSS和JavaScript的加載與執行,可以顯著提升頁面加載速度和運行效率。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。