一、概述
在開發應用時,客戶端與服務器之間數據交換的效率取決于文件傳輸的性能。一個數據交換性能較低的應用會導致其在加載過程中耗費較長時間,在很多的場景造成頁面卡頓,極大的影響了用戶體驗。相反,一個數據交換高效的應用,則會讓應用變得更加流暢。
本文將介紹兩種常見的上傳下載傳輸和網絡請求的關鍵技術:數據壓縮和斷點續傳,可減少寬帶占用,提高傳輸效率,從而達到提升數據交換性能。
二、上傳下載接口
(一)主要功能
目前系統內提供給文件上傳下載可用的模塊有http模塊和request模塊。http模塊提供基礎的HTTP數據請求能力,功能較為基礎,本文不做介紹。request模塊主要給應用提供上傳下載文件、后臺傳輸代理的基礎能力。它具備任務管理系統的默認并發功能,可簡化下載功能的實現和管理,提升數據傳輸的安全性,整合通知機制,新增任務狀態與進度查詢功能,具有靈活性、高效性、可擴展性、可靠性、一致性和安全性的優勢。
具體來說,request模塊包括以下功能:
任務管理:任務管理操作包括創建任務、暫停任務、恢復任務、刪除任務、文件上傳、文件下載、系統通知等。創建的任務分為前端任務和后臺任務。前端任務是立即的、模態界面的、同步的,跟隨應用的生命周期,通常數據量較小、耗時短,例如發布微信朋友圈、微博,通常優先級高且傾斜帶寬資源。后臺任務為可等待的、任意界面的、異步的,通常數據量較大、耗時長,例如緩存一部電影、同步數百兆字節乃至若干吉字節的數據,優先級相較于前端任務低且與應用生命周期無關。
任務查詢管理:系統查詢所有任務、過濾上傳任務、過濾下載任務、過濾時間段內任務、過濾前端任務、過濾后臺任務、用戶查詢指定任務信息、用戶查詢指定隱藏任務信息、系統查詢指定任務信息、系統清理指定任務等。
任務自動恢復:網絡條件不滿足時任務不啟動或者暫停,滿足后自動啟動或者恢復(需要HTTP服務器支持斷點續傳)。
安全隱私保護:包括網絡權限檢查、安全處理接口操作、任務信息加密存儲、接口檢查、接口查詢隱匿任務敏感字段、遍歷攻擊、DOS、僵尸任務、惡意的靜默后臺任務、系統管理接口權限等。
日志:包括調試模式和發布模式。調試模式可打印所有內存修改、磁盤、網絡讀寫、邏輯分支等日志。發布模式下除了導致任務失敗、服務異常的日志,其余日志都會關閉。
任務失敗重試:對于不可恢復的原因,直接失敗;對于可恢復的原因,網絡斷開、網絡類型不匹配等,不現場重試,任務到等待網絡恢復隊列;網絡超時則就地重試1次,仍網絡超時,則立即失敗。
服務按需啟停:上傳下載服務不隨系統自啟。應用主動調用任意接口,上傳下載服務自動啟動。網絡連接事件會觸發上傳下載服務啟動。在任務隊列中,沒有正在處理的任務,或者等待網絡恢復的任務,延遲一段時間,再check一次,仍舊沒有的,則通知系統服務框架(SAMGR)可以停止并卸載上傳下載服務。在服務退出過程中,新的接口請求可能失敗,在客戶端檢查服務狀態、通過重試按需啟動。
通知:任務從第一次開始到最終結束都應該有進度通知。目前采用固定時間間隔觸發進度通知,前臺任務1秒,后臺任務3秒。任務狀態的每次變化也要觸發進度通知。當任務完成和失敗,則觸發其專用的進度通知。提供了抑制開關,可以在創建任務時打開,以避免頻繁通知。
(二)下載任務的狀態遷移流程
使用request模塊執行下載的任務,具有四種運行狀態:初始任務、就緒任務、掛起任務、待網任務。可以通過create創建任務,start開始任務,pause掛起任務,resume恢復任務,remove移除任務,stop停止任務,任務結果有final-failed任務失敗,final-completed下載完成,recoverable-failed重試失敗,并支持查詢任務狀態,具體流程如下圖所示:
圖1?模塊流程圖
本文主要引用參考HarmonyOS官方文檔