《 Akamai + S3 與 CloudFront + Imgproxy + S3 使用分析二:壓縮圖片設計流程:檔案大小 vs 載入時間的權衡》

要透過 Imgproxy 客製化每種圖檔要被壓縮的方法,真的超難啦! 目標 將圖片壓縮到 50 KB、250 KB、500 KB、1 MB 等不同檔案大小。 對於已小於目標大小的圖片,不進行壓縮以避免檔案變大。 支援多種圖片格式(PNG、JPG、AVIF 等),依據需求選擇最佳壓縮格式。 提供不同解析度的圖片給前端,讓前端可以根據用戶網速自動切換合適檔案大小。 壓縮設計 目的 利用 Imgproxy 壓縮圖檔下載是否可以有效增加下載圖片效率 步驟 1:判斷檔案大小與格式 從 Akamai_S3 下載原始圖片後,先檢查檔案大小與格式。 如果檔案小於欲壓縮格式目標大小 (例如欲壓縮至 250 KB,但檔案只有 70 KB),則該格式 不做處理 ,繼續跳往下一級 (50 KB)。 如果檔案大於目標大小,進行壓縮或格式轉換。 步驟 2:選擇壓縮策略與格式 優先順序: JPG (JPEG) :適合照片、色彩豐富的圖片。壓縮率高但會有損失。 AVIF / WEBP :壓縮率更高,幾乎無損,適合支持新格式的瀏覽器。 PNG :適合需要透明背景的圖片。壓縮率較低但無損壓縮。 選擇策略: PNG → JPG :如果 PNG 沒有透明背景且圖片過大,轉成 JPG 可以大幅減少檔案大小。 AVIF → AVIF :AVIF 檔案通常已經很小,不需要轉換,僅調整品質。 JPG → JPG :降低品質進行壓縮。 GIF → WEBP :動態 GIF 可轉成 WEBP,通常能縮小 30-50%。 步驟 3:壓縮參數設定 JPG: quality=70-80 是較理想的平衡點, 70 可顯著減少檔案大小,畫質影響有限。 PNG: 使用無損壓縮,或轉換成 JPG 若透明度不重要。 WEBP / AVIF: quality=60-70 仍能保持優異畫質,檔案非常小。 根據以上制定規則,以下為測試參數搭配在不同檔案類型下有最佳效果的測試 png: > 1MB: q:80/rs:fit:1920:1080 500 KB - 1 MB: q:70/rs:fit:1280:720 250 KB - 500 KB: q:60/rs:fit:800:600 50 KB - 250KB: q:50/rs:fit:400:300 jpeg or jpg > 1MB: q:80/mb:1000000...