国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

5.25秒變0.023秒:小程序圖片優(yōu)化全攻略

這篇具有很好參考價(jià)值的文章主要介紹了5.25秒變0.023秒:小程序圖片優(yōu)化全攻略。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本文首發(fā)于lonjin個(gè)人博客,轉(zhuǎn)載請(qǐng)注明出處

地址: https://lonjinup.github.io

最近在公司在寫(xiě)微信小程序,該小程序主要展示一些高清圖片,所以圖片數(shù)量非常多,而且圖片尺寸也比較大,導(dǎo)致小程序的加載時(shí)間非常長(zhǎng)。所以這里記錄一下如何減少小程序圖片的加載時(shí)間。

優(yōu)化前

這里我挑選了一些項(xiàng)目里面比較大的圖片,還有我之前保存的一些背景圖,共計(jì)12張,上傳到阿里云oss,然后寫(xiě)了一個(gè)demo去渲染圖片,這里我們先看看加載時(shí)間。

5.25秒變0.023秒:小程序圖片優(yōu)化全攻略,小程序

pFpoHTU.png

可以看到,一旦文件大小到了1M以上,加載基本都在1秒以上了,而且加載最慢的一張圖片大小為2.4M;加載耗時(shí)5.27秒。然而在這個(gè)小程序中,有非常多的瀑布流圖片展示,需要加載的圖片也非常多,這對(duì)于這種圖片展示類(lèi)的小程序來(lái)說(shuō),簡(jiǎn)直是非常糟糕的體驗(yàn)。下面我們就分析一下,如何提升用戶(hù)體驗(yàn),縮短加載時(shí)間。

分析優(yōu)化

這里我總結(jié)了一些常見(jiàn)圖片優(yōu)化策略,方法如下:

5.25秒變0.023秒:小程序圖片優(yōu)化全攻略,小程序

pFpojp9.png

下面我們就根據(jù)總結(jié)的優(yōu)化策略進(jìn)行優(yōu)化,具體如下:

優(yōu)化1:使用webp格式的圖片

首先我們知道,在小程序中是支持webp格式的圖片的,所以我們可以將圖片轉(zhuǎn)換為webp格式,這樣可以減少圖片體積,提升加載速度。 公司使用的阿里云oss進(jìn)行圖片存儲(chǔ),阿里云oss是支持格式轉(zhuǎn)換的,只需要在圖片url后面加一定的參數(shù)即可,我們可以給圖片后面加上?x-oss-process=image/format,webp即可。

//?原本圖片路徑:
let?url?='?https://lonjin.oss-cn-beijing.aliyuncs.com/weixin-test/3%20%282%2917047050403470042.png'

//?轉(zhuǎn)化為webp格式的圖片路徑:
let?url?='?https://lonjin.oss-cn-beijing.aliyuncs.com/weixin-test/3%20%282%2917047050403470042.png?x-oss-process=image/format,webp'

清除緩存,刷新頁(yè)面,再來(lái)看加載時(shí)間:

5.25秒變0.023秒:小程序圖片優(yōu)化全攻略,小程序

pFpoqkF.png

可以看到,加載時(shí)間大幅縮短,圖片格式轉(zhuǎn)化后,圖片大小已經(jīng)非常小了,最大的一張圖片僅僅有730kb;隨之加載時(shí)間也大幅縮短,最慢的一張圖片從之前的5.27秒縮短為1.71秒,加載速度提升了3倍!其他的圖片加載基本都在500ms左右,加載速度提升也是比較明顯。

這里我們還需要注意一下webp圖片格式的支持范圍,我這里使用的uni-app做為demo,查了一下文檔,支持范圍如下:

Android4以上(含)、iOS14以上(含)系統(tǒng)內(nèi)置支持webp,此時(shí),不管web、小程序、app,也不管vue/nvue/uvue都可以直接使用webp; iOS14以下,app-vue下,iOS不支持;app-nvue/uvue下,iOS支持;微信小程序2.9.0起,配置屬性webp為true時(shí)iOS支持;

所以如果考慮一些特殊情況,我們可以進(jìn)行一些特殊情況下的處理。

如果文件是直接放在服務(wù)器上的,我們可以借助一些第三方工具來(lái)把圖片批量轉(zhuǎn)化為webp格式;比如convertio.co

優(yōu)化2:根據(jù)需求設(shè)置適當(dāng)?shù)姆直媛?/h4>

阿里云oss支持在圖片后面加上參數(shù)來(lái)設(shè)置圖片的分辨率,我這里寫(xiě)的demo中,image標(biāo)簽圖片寬度均為小程序圖片默認(rèn)寬度;即為width: 320px;,所以我們可以給圖片url后面加上/resize,w_320即可,其中w_320表示圖片寬度為320px。

//?原本圖片路徑:
let?url?='?https://lonjin.oss-cn-beijing.aliyuncs.com/weixin-test/3%20%282%2917047050403470042.png?x-oss-process=image/format,webp'

//?設(shè)置寬度后的圖片路徑:
let?url?='?https://lonjin.oss-cn-beijing.aliyuncs.com/weixin-test/3%20%282%2917047050403470042.png?x-oss-process=image/format,webp/resize,w_320'

清除緩存,刷新頁(yè)面,再來(lái)看加載時(shí)間:

5.25秒變0.023秒:小程序圖片優(yōu)化全攻略,小程序

pFpoLY4.jpg

圖片大小大幅度減少,最大的一張圖片僅僅有15.4 kB;隨之加載時(shí)間也大幅縮短,最慢的一張圖片從之前的1.71秒縮短為316毫秒,加載速度提升了5倍!這時(shí)候所有圖片的加載速度全部沒(méi)有超過(guò)1秒,最大不超過(guò)350ms;基本上算是質(zhì)的飛躍了。不過(guò)需要注意的是,圖片分辨率還是需要結(jié)合業(yè)務(wù)需求進(jìn)行調(diào)整的,如果要求必須高清,不建議設(shè)置太小的分辨率。不過(guò)我們可以寫(xiě)一個(gè)檢測(cè)用戶(hù)網(wǎng)絡(luò)狀態(tài)的方法,在不同的網(wǎng)絡(luò)環(huán)境下加載不同分辨率的圖片;后面我會(huì)專(zhuān)門(mén)來(lái)寫(xiě)一篇文章來(lái)實(shí)現(xiàn)這個(gè)功能。

優(yōu)化3:使用雪碧圖

雪碧圖,也叫Sprite,是將多個(gè)小圖片合并成一張大圖,然后在頁(yè)面中使用background-imagebackground-position屬性來(lái)顯示其中的某一張圖片。這樣可以減少圖片的加載次數(shù),減少圖片的大小,同時(shí)減少圖片的加載時(shí)間。在項(xiàng)目中難免會(huì)有很多小圖標(biāo),我們就可以使用雪碧圖的方式來(lái)使用,減少請(qǐng)求次數(shù)。這里我就不做展示了。

優(yōu)化4:合理使用占位圖片

通常情況下,為了內(nèi)容的動(dòng)態(tài)展示,需要通過(guò)網(wǎng)絡(luò)請(qǐng)求從接口中獲取圖片的url。如果在網(wǎng)絡(luò)慢的情況下,image加載圖片的過(guò)程可能會(huì)非常慢,在請(qǐng)求完成之前頁(yè)面都會(huì)因?yàn)闆](méi)有數(shù)據(jù)而呈現(xiàn)一片空白,這是非常差的用戶(hù)體驗(yàn),這里我們可以借助小程序image標(biāo)簽上的@error @load事件來(lái)實(shí)現(xiàn)占位圖片的展示。我們可以根據(jù)需求去封裝一個(gè)LoadImage組件統(tǒng)一處理,上面提到的優(yōu)化1、優(yōu)化2也可以通過(guò)定義參數(shù)實(shí)現(xiàn)批量添加,同時(shí)我們也可以給組件加上lazyLoad,減輕小程序加載壓力。

組件具體代碼如下:

<template>
????<view?class="loadImage-wrapper">
????????<image?v-if="isLoading"?:src="defaultImage"?:mode="mode"?:lazy-load="lazyLoad"?/>
????????<image?:class="[isLoading???'before-load'?:?'']"?:src="imageUrl"?:mode="mode"?:lazy-load="lazyLoad"
????????????@load="imageLoad"?/>
????</view>
</template>
<script>
export?default?{
????props:?{
????????/**
?????????*?占位圖
?????????*?@default?/static/images/load-image.png
?????????*/
????????defaultImage:?{
????????????type:?String,
????????????default:?'/static/load-image.png',
????????},
????????/**
?????????*?是否使用webp
?????????*?@default?false
?????????*/
????????useWebp:?{
????????????type:?Boolean,
????????????default:?false,
????????},
????????/**
?????????*?圖片的顯示模式
?????????*?@default?scaleToFill
?????????*/
????????mode:?{
????????????type:?String,
????????????default:?'scaleToFill',
????????},
????????/**
?????????*?圖片加載分辨率-寬度
?????????*?@default?
????????*/
????????width:?{
????????????type:?String,
????????????default:?'',
????????},
????????/**
?????????*?是否懶加載
?????????*?@default?true
?????????*/
????????lazyLoad:?{
????????????type:?Boolean,
????????????default:?true,
????????},
????????/**
?????????*?圖片地址
?????????*?@default?
????????*/
????????src:?{
????????????type:?String,
????????????default:?'',
????????},
????},
????data()?{
????????return?{
????????????isLoading:?true,
????????}
????},

????methods:?{
????????imageLoad()?{
????????????this.isLoading?=?false
????????},
????},

????computed:?{
????????imageUrl()?{
????????????let?url?=?this.src?+?'?'
????????????this.useWebp?&&?(url?+=?'x-oss-process=image/format,webp')
????????????this.width?&&?(url?+=?'/resize,w_'?+?this.width)
????????????return?url
????????}
????},
}
</script>
<style?lang="scss"?scoped>
.loadImage-wrapper?{
????.before-load?{
????????width:?0;
????????height:?0;
????????opacity:?0;
????}
}
</style>

使用方式如下:

<template>
????<view?class="list">
????????<load-image?v-for="(item,?index)?in?list"?:src="item"?:lazyLoad="false"?useWebp?:width="320"?:key="index"?/>
????</view>
</template>

優(yōu)化后效果對(duì)比

我們?cè)賮?lái)看一下優(yōu)化前后的加載時(shí)間對(duì)比:

  • 優(yōu)化前:

    5.25秒變0.023秒:小程序圖片優(yōu)化全攻略,小程序

  • 優(yōu)化后:

    5.25秒變0.023秒:小程序圖片優(yōu)化全攻略,小程序

我們用一張圖片來(lái)做對(duì)比:


圖片名稱(chēng) 大小 加載時(shí)間
優(yōu)化前 wallhaven-we3z86.jpeg 2.4MB 5.27s
優(yōu)化后 wallhaven-we3z86.jpeg 15.3KB 23ms

可以看到相對(duì)體積而言,縮小了99.4%;相對(duì)加載時(shí)間,縮短了5.25秒,在幾乎不影響圖片質(zhì)量的情況下,極大的提升了用戶(hù)體驗(yàn)。

總結(jié)

關(guān)于小程序的圖片優(yōu)化,我們可以根據(jù)業(yè)務(wù)需求以及技術(shù)支持來(lái)選擇不同的方案,這里我只列出了幾個(gè)最常用的方案,如果業(yè)務(wù)需求比較復(fù)雜,可以多嘗試一些方案。

更多推薦

  • 2023年, 前端路上的開(kāi)源總結(jié)(最新更新)

  • 低代碼平臺(tái)組件間通信方案復(fù)盤(pán)

  • 前端圖形學(xué)實(shí)戰(zhàn): 從零開(kāi)發(fā)一款輕量級(jí)滑動(dòng)驗(yàn)證碼組件(vue3 + vite版)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-793979.html

到了這里,關(guān)于5.25秒變0.023秒:小程序圖片優(yōu)化全攻略的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • AI繪畫(huà)提示詞全攻略,讓你所想即所畫(huà)?。ǜ?2000+圖片提示詞庫(kù))

    AI繪畫(huà)提示詞全攻略,讓你所想即所畫(huà)?。ǜ?2000+圖片提示詞庫(kù))

    這可能是你從來(lái)沒(méi)有見(jiàn)過(guò)的生產(chǎn)模式。 提示詞又成為魔法、咒語(yǔ),在AI時(shí)代,掌握了提示詞,你可以在一分鐘之內(nèi)寫(xiě)一篇文章,做一首歌曲,生成一張精致的圖片。 大多數(shù)人用不好提示詞的根本原因是他沒(méi)有理解提示詞的運(yùn)行機(jī)制。 當(dāng)你輸入一個(gè)紅色的帽子,Stable Diffusion并

    2024年02月05日
    瀏覽(47)
  • 新手搭建服裝小程序全攻略

    新手搭建服裝小程序全攻略

    隨著互聯(lián)網(wǎng)的快速發(fā)展,線(xiàn)上購(gòu)物已經(jīng)成為了人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。服裝作為人們?nèi)粘OM(fèi)的重要品類(lèi),線(xiàn)上化趨勢(shì)也日益明顯。本文將詳細(xì)介紹如何從零開(kāi)始搭建一個(gè)服裝小程序商城,從入門(mén)到精通的捷徑,幫助你快速掌握小程序商城的制作方法和技巧。 首先

    2024年02月21日
    瀏覽(22)
  • 小技巧大用處:微信小程序狀態(tài)欄設(shè)置全攻略

    小技巧大用處:微信小程序狀態(tài)欄設(shè)置全攻略

    我們?cè)谑褂梦⑿判〕绦虻臅r(shí)候,經(jīng)常會(huì)發(fā)現(xiàn)小程序的狀態(tài)欄與我們手機(jī)的狀態(tài)欄不太一致。有時(shí)候狀態(tài)欄的顏色與我們小程序的主題色不相符,有時(shí)候狀態(tài)欄的文字內(nèi)容也不太符合我們的需求。為了解決這些問(wèn)題,我們需要對(duì)微信小程序的狀態(tài)欄進(jìn)行動(dòng)態(tài)設(shè)置。在本文中,我

    2024年02月11日
    瀏覽(18)
  • 基于npm CLI腳手架的uniapp項(xiàng)目創(chuàng)建、運(yùn)行與打包全攻略(微信小程序、H5、APP全覆蓋)

    基于npm CLI腳手架的uniapp項(xiàng)目創(chuàng)建、運(yùn)行與打包全攻略(微信小程序、H5、APP全覆蓋)

    除了使用HBuilderX工具可視化搭建項(xiàng)目外,DCloud官方還提供了一個(gè)腳手架用于命令行搭建項(xiàng)目。 uni-app項(xiàng)目支持 uni cli和 HBuilderX cli兩種腳手架工具: uni cli:面向非HBuilderX的用戶(hù)(如習(xí)慣使用vscode/webstorm的開(kāi)發(fā)者),提供創(chuàng)建項(xiàng)目、編譯發(fā)行等能力;在App平臺(tái),僅支持生成離線(xiàn)

    2024年04月16日
    瀏覽(118)
  • HackTheGame游戲全攻略

    HackTheGame游戲全攻略

    游戲鏈接 鏈接: 百度網(wǎng)盤(pán) 請(qǐng)輸入提取碼 提取碼:bu1w HackTheGame游戲的玩法: 您將扮演一個(gè)黑客的角色,接受各種各樣的任務(wù),在不被發(fā)現(xiàn)的情況下,使用一些工具入侵他人的電腦,服務(wù)器并完成竊取資料,粉碎文件,植入病毒等操作.您有一共有兩次機(jī)會(huì),第三次被追蹤到的話(huà),您就會(huì)被捕

    2024年02月05日
    瀏覽(43)
  • MongoDB 索引全攻略

    MongoDB 索引全攻略

    目錄 一、索引介紹 ? ? ? ? 1.1 單字段索引 ? ? ? ? 1.2 復(fù)合索引 ? ? ? ? 1.3?多鍵索引 ? ? ? ? 1.4 主鍵索引 ? ? ? ? 1.5 TTL 索引 ? ? ? ? 1.6 地理空間索引 ? ? ? ? 1.7 哈希索引 ? ? ? ? 1.8 創(chuàng)建索引時(shí)注意事項(xiàng) ? ? ? ? 1.9 索引效果查看 ?二、索引實(shí)現(xiàn)原理 ? ? ? ? 2.1 為

    2024年04月27日
    瀏覽(23)
  • Github搭建個(gè)人博客全攻略

    Github是開(kāi)發(fā)者的代碼倉(cāng)庫(kù),一個(gè)開(kāi)源和分享社區(qū)。 本文前提是已注冊(cè)github賬號(hào)。 假設(shè)用戶(hù)名為MyName 進(jìn)入個(gè)人主頁(yè)(https://github.com/用戶(hù)名),選擇Repositories,點(diǎn)擊New Repository name填入MyName.github.io,即MyName/ MyName.github.io ,點(diǎn)擊Create Repository 安裝Git或TortoiseGit(后者添加環(huán)境變量)

    2024年02月16日
    瀏覽(49)
  • 谷歌賬號(hào)注冊(cè)流程全攻略

    谷歌賬號(hào)注冊(cè)流程全攻略

    一、訪(fǎng)問(wèn)谷歌賬號(hào)注冊(cè)頁(yè)面 首先,你需要訪(fǎng)問(wèn)谷歌賬號(hào)注冊(cè)頁(yè)面。你可以直接點(diǎn)擊此鏈接,或者在谷歌首頁(yè)點(diǎn)擊右上角的“登錄”按鈕,在彈出的登錄框中點(diǎn)擊“創(chuàng)建帳號(hào)”。 在注冊(cè)頁(yè)面,你需要填寫(xiě)以下個(gè)人信息: 名字:輸入你的名字。 姓氏:輸入你的姓氏。 用戶(hù)名:

    2024年02月05日
    瀏覽(22)
  • Jenkins 插件安裝方式全攻略

    Jenkins 插件安裝方式全攻略

    在Jenkins 的安裝向?qū)ы?yè)面中, 會(huì)有一步是否安裝推薦的插件, 可以直接進(jìn)行安裝, 也可以跳過(guò)。 對(duì)于安裝機(jī)器聯(lián)網(wǎng)的狀況, 安裝插件相對(duì)方便,直接搜索插件安裝, 但是也可能會(huì)出現(xiàn)無(wú)法在線(xiàn)安裝的狀況, 原因解析及解決方法 參考: Jenkins 在Windows下插件無(wú)法安裝問(wèn)題解

    2023年04月21日
    瀏覽(28)
  • kaggle免費(fèi)服務(wù)器全攻略

    kaggle免費(fèi)服務(wù)器全攻略

    1. kaggle服務(wù)器16G顯卡一周40小時(shí). 所以我們直接干一堆谷歌賬號(hào)即可 2. 谷歌賬號(hào)的注冊(cè): 我們需要FQcolab for windows可以做到. 然后我們注冊(cè)好賬號(hào)后.我們注冊(cè)4個(gè)賬號(hào). 注冊(cè)方法. 打開(kāi)chrome ? 點(diǎn)最下面的添加按鈕.然后一直下一步即可.無(wú)腦注冊(cè). 3.? 為Chrome多賬戶(hù)添加單獨(dú)的快捷方

    2024年02月16日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包