HarmonyOS優化應用文件上傳下載慢問題性能優化

一、概述

在開發應用時,客戶端與服務器之間數據交換的效率取決于文件傳輸的性能。一個數據交換性能較低的應用會導致其在加載過程中耗費較長時間,在很多的場景造成頁面卡頓,極大的影響了用戶體驗。相反,一個數據交換高效的應用,則會讓應用變得更加流暢。

本文將介紹兩種常見的上傳下載傳輸和網絡請求的關鍵技術:數據壓縮和斷點續傳,可減少寬帶占用,提高傳輸效率,從而達到提升數據交換性能。

二、上傳下載接口

(一)主要功能

目前系統內提供給文件上傳下載可用的模塊有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官方文檔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907437.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907437.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907437.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

64、【OS】【Nuttx】任務休眠與喚醒:clock_nanosleep

背景 之前的 blog 63、【OS】【Nuttx】任務休眠與喚醒:sleep 分析了任務休眠中的 sleep 函數,下面繼續來分析下 sleep 函數中的核心功能 clock_nanosleep clock_nanosleep usleep 上篇 blog 分析了 sleep 函數,其核心功能封裝到了 clock_…

【生產實踐】華為存儲XSG1在RHEL 7.x/8.x上的多路徑配置操作手冊(生產環境)

一、概述 本手冊針對Red Hat Enterprise Linux 7.x/8.x系統與華為XSG1存儲設備的多路徑I/O(MPIO)配置,通過優化路徑策略實現高可用、負載均衡及故障容錯,適配華為存儲硬件特性,滿足生產環境需求。 二、參數解析與配置…

Unity開發之Webgl自動更新程序包

之前讓客戶端更新webgl程序是在程序里寫版本號然后和服務器對比,不同就調用 window.location.reload(true);之前做的客戶端都是給企業用,用戶數少看不出來啥問題。后來自己開發一個小網站,用戶數量還是挺多,然后就會遇到各種各樣的…

一個開源腳本,可自動安裝在 AMD Radeon 7900XTX 上運行選定 AI 接口所需的所有內容

?一、軟件介紹 文末提供程序和源碼下載 一個開源腳本,可自動安裝在 AMD Radeon 7900XTX 上運行選定 AI 接口所需的所有內容。 二、ROCm-AI-Installer ROCm-AI-安裝程序 一個開源腳本,可自動安裝在 AMD Radeon 7900XTX 上運行選定 AI 接口所需的所有內…

【Axure結合Echarts繪制圖表】

1.繪制一個矩形,用于之后存放圖表,將其命名為test: 2.新建交互 -> 載入時 -> 打開鏈接: 3.鏈接到URL或文件路徑: 4.點擊fx: 5.輸入: javascript: var script document.createEleme…

Relooking:損失權重λ 、梯度權重α、學習率η

一般多任務,大家都喜歡疊加很多損失,由此產生很多損失權重系數。此外,有的學者直接對梯度進行操作。咋一看,上面三個系數貌似重復多余,直接用其中一個系數代替不行嗎?為此,回顧了下神經網絡的前…

數學復習筆記 20

復習方程組,還有隨便復習一下高數和矩陣,向量。現在是復習高數的導數這一章。兩個曲線相切,列出方程,然后解出參數,沒有任何難度呢。算切線方程,就是,算導數,導數就用導數定義&#…

Sqlalchemy 連mssql坑

連接失敗: (pyodbc.OperationalError) (08001, [08001] [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:0A00014D:SSL routines::legacy sigalg disallowed or unsupported] (-1) (SQLDriverConnect)) (Background on this error at: https://sqlalche.me/e/…

AI大模型學習三十、ubuntu安裝comfyui,安裝插件,修改返回405 bug,值得一看喔

一、說明 ComfyUI是一個開源的、基于節點的Web應用。它允許用戶根據一系列文本提示(Prompt)生成圖像。 ComfyUI使用擴散模型作為基礎模型,并結合 ControlNet、Lora和LCM低階自適應等模型,每個工具都由程序中的一個節點表示 二、開…

MySQL(40)如何使用DROP TABLE刪除表?

DROP TABLE 語句用于從數據庫中永久刪除一個表及其所有數據。執行該語句后,表結構和數據都將被徹底刪除,且無法恢復。因此,在執行 DROP TABLE 操作之前,請確保已備份好相關數據。 基本語法 DROP TABLE table_name;如果要刪除多個…

element ui 表格 勾選復選框后點擊分頁不保存之前的數據問題

element ui 表格 勾選復選框后點擊分頁不保存之前的數據問題 給 el-table上加 :row-key"getRowKey"給type“selection” 上加 :reserve-selection"true"

vite常見面試問題

一、Vite 核心原理 1. Vite 為什么比 Webpack 快? 答案: Vite 的核心優勢在于開發環境和生產環境的雙重優化: 開發環境: 基于原生 ESM(ES Modules):瀏覽器直接加載 ES 模塊,無需打包,啟動時間極短(毫秒級)。按需編譯:僅編譯當前頁面所需的模塊,而非整個項目。預…

Screen 連接遠程服務器(Ubuntu)

連接 1. 安裝screen 默認預安裝&#xff0c;可以通過命令查看&#xff1a; screen --version 若未安裝&#xff1a; # Ubuntu/Debian sudo apt-get install screen 2. 本機連接遠程服務器 ssh root192.168.x.x 在遠程服務器中打開screen&#xff1a; screen -S <nam…

Flutter GridView網格組件

目錄 常用屬性 GridView使用配置 GridView.count使用 GridView.extent使用 GridView.count Container 實現列表 GridView.extent Container 實現列表 GridView.builder使用 GridView網格布局在實際項目中用的也是非常多的&#xff0c;當我們想讓可以滾動的元素使用矩陣…

Jenkins實踐(8):服務器A通過SSH調用服務器B執行Python自動化腳本

Jenkins實踐(8):服務器A通過SSH調用服務器B執行Python自動化腳本 1、需求: 1、Jenkins服務器在74上,Python腳本在196服務器上 2、需要在服務器74的Jenkins上調用196上的腳本執行Python自動化測試 2、操作步驟 第一步:Linux Centos7配置SSH免密登錄 Linux Centos7配置S…

C#二維碼:利用 ThoughtWorks.QRCode 庫實現二維碼生成與解析

C#二維碼&#xff1a;利用 ThoughtWorks.QRCode 庫實現二維碼生成與解析 在當今數字化信息交互頻繁的時代&#xff0c;二維碼憑借其信息容量大、容錯能力強、易識別等特點&#xff0c;廣泛應用于各個領域。從移動支付、產品溯源到活動簽到&#xff0c;二維碼無處不在。在 C# 開…

【Java Web】速通JavaScript

參考筆記:JavaWeb 速通JavaScript_javascript 速通-CSDN博客 目錄 一、JavaScript快速入門 1. 基本介紹 2. JavaScript特點 3. JavaScript的引入方式(重要) 3.1 寫在script標簽中 ?????3.2 以外部文件方式引入 二、JS的數據類型 1. 變量 2. 常用數據類型 3.特殊值 三、…

Python打卡訓練營-Day13-不平衡數據的處理

浙大疏錦行 知識點&#xff1a; 不平衡數據集的處理策略&#xff1a;過采樣、修改權重、修改閾值交叉驗證代碼 過采樣 過采樣一般包含2種做法&#xff1a;隨機采樣和SMOTE 過采樣是把少的類別補充和多的類別一樣多&#xff0c;欠采樣是把多的類別減少和少的類別一樣 一般都是缺…

Mac OS 使用說明

Mac 的啟動組合鍵 了解可通過在啟動時按住一個或多個按鍵來訪問的 Mac 功能和工具。 若要使用這些組合鍵中的任何一個&#xff0c;請在按下電源按鈕以開啟 Mac 后或在 Mac 開始重新啟動后&#xff0c;立即按住相應按鍵。請一直按住&#xff0c;直至電腦出現對應的行為。 !!!上…

LoadRunner 是什么

LoadRunner 是一款由 Micro Focus&#xff08;原惠普企業軟件部門&#xff09;開發的性能測試工具&#xff0c;廣泛應用于軟件、應用程序和系統的 負載測試、壓力測試 和 性能分析。它通過模擬大量用戶并發操作&#xff0c;幫助測試人員評估系統在高負載下的性能、穩定性和可擴…