日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2024-01-15 09:22:14 257觀看
導讀最近在公司寫微信小程序,該小程序主要展示一些高清圖片,所以圖片數(shù)量非常多,而且圖片尺寸也比較大,導致小程序的加載時間非常長。所以這里記錄一下如何減少小程序圖片的加載時間。優(yōu)化前這里我挑選了一些項目里面比較大的

最近在公司寫微信小程序,該小程序主要展示一些高清圖片,所以圖片數(shù)量非常多,而且圖片尺寸也比較大,導致小程序的加載時間非常長。所以這里記錄一下如何減少小程序圖片的加載時間。ypr28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)化前

這里我挑選了一些項目里面比較大的圖片,還有我之前保存的一些背景圖,共計12張,上傳到阿里云oss,然后寫了一個demo去渲染圖片,這里我們先看看加載時間。ypr28資訊網(wǎng)——每日最新資訊28at.com

圖片ypr28資訊網(wǎng)——每日最新資訊28at.com

可以看到,一旦文件大小到了1M以上,加載基本都在1秒以上了,而且加載最慢的一張圖片大小為2.4M;加載耗時5.27秒。然而在這個小程序中,有非常多的瀑布流圖片展示,需要加載的圖片也非常多,這對于這種圖片展示類的小程序來說,簡直是非常糟糕的體驗。下面我們就分析一下,如何提升用戶體驗,縮短加載時間。ypr28資訊網(wǎng)——每日最新資訊28at.com

分析優(yōu)化

這里我總結了一些常見圖片優(yōu)化策略,方法如下:ypr28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ypr28資訊網(wǎng)——每日最新資訊28at.com

下面我們就根據(jù)總結的優(yōu)化策略進行優(yōu)化,具體如下:ypr28資訊網(wǎng)——每日最新資訊28at.com

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

首先我們知道,在小程序中是支持webp格式的圖片的,所以我們可以將圖片轉換為webp格式,這樣可以減少圖片體積,提升加載速度。 公司使用的阿里云oss進行圖片存儲,阿里云oss是支持格式轉換的,只需要在圖片url后面加一定的參數(shù)即可,我們可以給圖片后面加上?x-oss-process=image/format,webp即可。ypr28資訊網(wǎng)——每日最新資訊28at.com

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

清除緩存,刷新頁面,再來看加載時間:ypr28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ypr28資訊網(wǎng)——每日最新資訊28at.com

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

這里我們還需要注意一下webp圖片格式的支持范圍,我這里使用的uni-app做為demo,查了一下文檔,支持范圍如下:ypr28資訊網(wǎng)——每日最新資訊28at.com

Android4以上(含)、iOS14以上(含)系統(tǒng)內置支持webp,此時,不管web、小程序、app,也不管vue/nvue/uvue都可以直接使用webp; iOS14以下,app-vue下,iOS不支持;app-nvue/uvue下,iOS支持;微信小程序2.9.0起,配置屬性webp為true時iOS支持;ypr28資訊網(wǎng)——每日最新資訊28at.com

所以如果考慮一些特殊情況,我們可以進行一些特殊情況下的處理。ypr28資訊網(wǎng)——每日最新資訊28at.com

如果文件是直接放在服務器上的,我們可以借助一些第三方工具來把圖片批量轉化為webp格式;比如convertio.coypr28資訊網(wǎng)——每日最新資訊28at.com

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

阿里云oss支持在圖片后面加上參數(shù)來設置圖片的分辨率,我這里寫的demo中,image標簽圖片寬度均為小程序圖片默認寬度;即為width: 320px;,所以我們可以給圖片url后面加上/resize,w_320即可,其中w_320表示圖片寬度為320px。ypr28資訊網(wǎng)——每日最新資訊28at.com

// 原本圖片路徑:let url =' https://lonjin.oss-cn-beijing.aliyuncs.com/weixin-test/3%20%282%2917047050403470042.png?x-oss-process=image/format,webp'// 設置寬度后的圖片路徑: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'

清除緩存,刷新頁面,再來看加載時間:ypr28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ypr28資訊網(wǎng)——每日最新資訊28at.com

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

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

雪碧圖,也叫Sprite,是將多個小圖片合并成一張大圖,然后在頁面中使用background-image和background-position屬性來顯示其中的某一張圖片。這樣可以減少圖片的加載次數(shù),減少圖片的大小,同時減少圖片的加載時間。在項目中難免會有很多小圖標,我們就可以使用雪碧圖的方式來使用,減少請求次數(shù)。這里我就不做展示了。ypr28資訊網(wǎng)——每日最新資訊28at.com

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

通常情況下,為了內容的動態(tài)展示,需要通過網(wǎng)絡請求從接口中獲取圖片的url。如果在網(wǎng)絡慢的情況下,image加載圖片的過程可能會非常慢,在請求完成之前頁面都會因為沒有數(shù)據(jù)而呈現(xiàn)一片空白,這是非常差的用戶體驗,這里我們可以借助小程序image標簽上的@error 和@load事件來實現(xiàn)占位圖片的展示。我們可以根據(jù)需求去封裝一個LoadImage組件統(tǒng)一處理,上面提到的優(yōu)化1、優(yōu)化2也可以通過定義參數(shù)實現(xiàn)批量添加,同時我們也可以給組件加上lazyLoad,減輕小程序加載壓力。ypr28資訊網(wǎng)——每日最新資訊28at.com

組件具體代碼如下:ypr28資訊網(wǎng)——每日最新資訊28at.com

<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>

使用方式如下:ypr28資訊網(wǎng)——每日最新資訊28at.com

<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)化后效果對比

我們再來看一下優(yōu)化前后的加載時間對比:ypr28資訊網(wǎng)——每日最新資訊28at.com

  • 優(yōu)化前:

圖片圖片ypr28資訊網(wǎng)——每日最新資訊28at.com

  • 優(yōu)化后:

圖片圖片ypr28資訊網(wǎng)——每日最新資訊28at.com

我們用一張圖片來做對比:ypr28資訊網(wǎng)——每日最新資訊28at.com


ypr28資訊網(wǎng)——每日最新資訊28at.com

圖片名稱ypr28資訊網(wǎng)——每日最新資訊28at.com

大小ypr28資訊網(wǎng)——每日最新資訊28at.com


ypr28資訊網(wǎng)——每日最新資訊28at.com

加載時間ypr28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)化前ypr28資訊網(wǎng)——每日最新資訊28at.com

wallhaven-we3z86.jpegypr28資訊網(wǎng)——每日最新資訊28at.com

2.4MBypr28資訊網(wǎng)——每日最新資訊28at.com

5.27sypr28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)化后ypr28資訊網(wǎng)——每日最新資訊28at.com

wallhaven-we3z86.jpegypr28資訊網(wǎng)——每日最新資訊28at.com

15.3KBypr28資訊網(wǎng)——每日最新資訊28at.com

23msypr28資訊網(wǎng)——每日最新資訊28at.com

可以看到相對體積而言,縮小了99.4%;相對加載時間,縮短了5.25秒,在幾乎不影響圖片質量的情況下,極大的提升了用戶體驗。ypr28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-61000-0.html5.25秒變0.023秒:小程序圖片優(yōu)化全攻略

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 面試官問:synchronized為什么是重量級鎖?

下一篇: Windows非分頁緩沖池內存使用率較高的問題

標簽:
  • 熱門焦點
  • 一加Ace2 Pro真機揭曉 鈦空灰配色質感拉滿

    終于,在經(jīng)過了幾波預熱之后,一加Ace2 Pro的外觀真機圖在網(wǎng)上出現(xiàn)了。還是博主數(shù)碼閑聊站曝光的,這次的外觀設計還是延續(xù)了一加11的方案,只是細節(jié)上有了調整,例如新加入了鈦空灰
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網(wǎng)課的原因激活了平板市場,如今網(wǎng)課的時代已經(jīng)過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環(huán)境來了。也就是面對著這種殘酷的
  • Java NIO內存映射文件:提高文件讀寫效率的優(yōu)秀實踐!

    Java的NIO庫提供了內存映射文件的支持,它可以將文件映射到內存中,從而可以更快地讀取和寫入文件數(shù)據(jù)。本文將對Java內存映射文件進行詳細的介紹和演示。內存映射文件概述內存
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來源:價值研究所 作者:Hernanderz&ldquo;難道就因為自己的一個產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運營上的問題,選擇逃避了嗎?&rdquo;這一番話,出自百合網(wǎng)聯(lián)合創(chuàng)
  • Temu起訴SHEIN,跨境電商戰(zhàn)事升級

    來源 | 伯虎財經(jīng)(bohuFN)作者 | 陳平安日前據(jù)外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein&ldquo;利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 最“俊美”淘寶賣家,靠直播和短視頻圈粉,上架秒光,年銷3000萬

    來源 | 電商在線文|易琬玉編輯|斯問受訪店鋪:Ringdoll戒之人形圖源:微博@御座的黃山、&ldquo;Ringdoll戒之人形&rdquo;淘寶店鋪有關外貌的評價,黃山已經(jīng)聽累了。生于1985年的他,哪
  • 東方甄選單飛:有些鳥注定是關不住的

    作者:彭寬鴻來源:華爾街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;東方甄選創(chuàng)始人俞敏洪帶隊的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一
  • 華為Mate 60系列用上可變靈動島:正式版體驗將會更出色

    這段時間以來,關于華為新旗艦的爆料日漸密集。據(jù)此前多方爆料,今年華為將開始恢復一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 三星獲批量產(chǎn)iPhone 15全系屏幕:蘋果史上最驚艷直屏

    按照慣例,蘋果將繼續(xù)在今年9月舉辦一年一度的秋季新品發(fā)布會,有傳言稱發(fā)布會將于9月12日舉行,屆時全新的iPhone 15系列將正式與大家見面,不出意外的話
Top 主站蜘蛛池模板: 尚志市| 靖远县| 靖安县| 滨海县| 巩义市| 抚州市| 广德县| 平江县| 宁安市| 饶河县| 科尔| 梅河口市| 北碚区| 台中县| 铅山县| 长阳| 台北市| 威海市| 灵川县| 都安| 南木林县| 建昌县| 天台县| 阿坝县| 思茅市| 温宿县| 拉萨市| 罗平县| 黑水县| 威海市| 甘孜| 苍梧县| 顺平县| 青河县| 即墨市| 区。| 青州市| 酒泉市| 宜黄县| 自贡市| 佳木斯市|